[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] make-databases
From: |
root |
Subject: |
[Gcl-devel] make-databases |
Date: |
Thu, 30 Oct 2003 22:43:41 -0500 |
Camm,
First, move to where the .NRLIB files are.
The databases are built using the *.NRLIB/info files.
cd int/algebra
Then start interpsys and give it the lisp command:
)lisp (make-databases "" nil) | (yourpath)/obj/bin/interpsys
I'm still pondering your "split" request for database file loads.
In more detail:
The make-databases function walks across the NRLIB/info files
extracting information for documentation (e.g. the browse.daase)
or other uses. So, in the case of browse.daase, it extracts
documentation strings, compresses them (see src/interp/daase.lisp),
and writes them out into a random access file format.
The random access file format has 3 parts:
an initial pair,
a sequence of s-expressions,
a list of lists.
The list of lists is the index. To look something up in one of these
files you read the first number (N), seek N bytes into the file, and
do a (read). Read will return the list of lists. For each domain
there is a list.
Each list consists of indexes into the file (any non-negative number)
or immediate data (a symbol, a string, or a negative number). If the
list item is a number (M) you start from the top of the file, seek M
bytes into the file and call (uncompress (read)).
I'm sure there are more details I missed but the src/interp/daase.lisp
has the actual code.
The split request is going to be a challenge. I think I need to figure
out how to dynamically add one file to the databases. Once I can do
this I can split the database build into any convenient step size.
Tim