MULTIFILEINDEX For a set of lisp files which comprise part or all of a system, it is often useful to have complete listings of that set of files. However, finding your way around in them can often be very tedious if you don't know the system and the structure of the files intimately. The MULTIFILEINDEX package is an attempt to help users by creating a listing of an entire system or set of files, including an alphebetized table of contents with all functions indexed. Information (but not index numbers) is included for other entities in the files such as records, ______________ blocks, or properties. The function multifileindex implements this mechanism. In order to make the index, or map, of the files, the COMS for all the ______________ ______ files being listed need be "loaded"; multifileindex does a getdef on ________ each file (file names are obtained using findfile) to obtain its COMS. As other indirections are noted, they also are obtained. For example, ________ if you have a file TEST, and the value of testcoms is ((FNS * TESTFNS)), ______ just doing a getdef on TESTCOMS will not suffice; as the expression ______ (FNS * TESTFNS) is parsed, a getdef is also done to obtain the value of _______ ______ testfns. If you want to see what getdefs are being done, set _______________________ multifileindexgetdefflg to T. ______________ multifileindex, in the default case: - Outputs an alphebetized table of contents (index) indicating the name of an entity (function, record, etc.), the file that it belongs to, and its type (property, variable (set or saved), record, block, etc.). If the entity is the name of a function, then the information includes a unique index in the listing for the function, its type (expr, fexpr*, etc.), and its arglist. - Outputs the files with each function being preceeded by its indexnumber right-justified on the line. - Undoably removes the names of the files indexed from ______________ notlistedfiles. Header information is placed at the top of each page, and the pages are ______________ numbered. The value of filelinelength indicates the width of the page; ____________ linesperpage is the number of lines per page, and is initially set to 58 if it is unbound when the MULTIFILEINDEX package is loaded. At present, ______________ multifileindex does not know about fonts. How the columns of the index are printed depends on the value of four __________________ globals. The primary one, multifileindexcols, indicates how the other three are to be interpreted. These other variables are _____________________ _____________________ _____________________ multifileindexnamecol, multifileindexfilecol, and multifileindextypecol __________________ (initally 0, 26 and 41, respectively). If multifileindexcols is the atom FLOATCOLS (the default), then an attempt is made to fit the columns onto the page in a way that maximizes the amount of space for the type information (the amount of space allocated for the type field must be at 2 ______________ __________________ least 45% of filelinelength in this case). If multifileindexcols is either T or FIXCOLS, then the value of the other variables are treated __________________ as absolute column positions on the page. If multifileindexcols is either NIL or FIXFLOATCOLS, the columns will be floated, but will not be any smaller than the column positions defined by the other variables. There are are four variables which govern what will actually get put out onto the destination file: multifileindexmapflg (initially T) indicates if you want the file index. multifileindexfilesflg (initially T) indicates if you want the files output _______________ to destinationfile. There is also an interface to Masterscope. If the value of either of ______________ the next two variables is T, then multifileindex assumes that the ___________ sourcefiles have already been analyzed by Masterscope, and does an _____________ updatechanged. multifileindexfnsmsflg (initially NIL) indicates that you want the Masterscope information about each function. This includes who calls each function, who this function calls, and what variables are set or referred to either locally or freely. multifileindexvarsmsflg (initially NIL) indicates that all variables used in the files should have some information output about them. The list of variables to look at is obtained by effectively asking Masterscope the question: "WHO IS USED BY ANY AND WHO IS SET BY ANY". You will be told who binds, uses freely or locally, or smashes freely or locally each variable. The variable map is case-independently sorted by the name of the variable. This package is similar to the SINGLEFILEINDEX package also in . SINGLEFILEINDEX provides a table of contents for functions only, and operates on one file at a time, does not include any Masterscope-type information. It is much simpler and faster than MULTIFILEINDEX and is useful every time you make a file. multifileindex[sourcefiles;destinationfile;newpageflg] ___________ sourcefiles can either be a list of file names, or ______________ an atom. If it is NIL, multifileindex returns _______ immediately. If it is T, the value of filelst is used. _______________ destinationfile is the output file. If 3 _______________ destinationfile is NIL, the value of globalvar _______ printer is used; it is initialized to the line printer (device LPT:) if it is unbound when the MULTIFILEINDEX package is loaded. __________ newpageflg indicates whether or not you wish each function in the listing to be on a page by itself.