From: David W. <wa...@cs...> - 2003-03-05 22:28:03
|
Luis Fernando P. de Castro writes: > In summary, what's wrong with a simplistic approach, as in (the very > sketchy algorithm): > > load(FileName): > (stat([FileName,'.P']) > -> (stat([FileName,'.xwam']) > -> % check whether object is new, compile if necessary > % & load > ; % compile & load > ) > ; stat([FileName]) > -> % check for .xwam file, compile if necessary & load, as > % above > ; stat([FileName,'.xwam']) > -> % we have only the object, load it > ; stat([FileName,'.H']) > -> % only the .H file, probably a foreign predicate that > % has to be compiled > ; iterate pre-pending library paths to FileName > ). I think a simplification of that code would be a great boon. I have just a couple of thoughts (or nonthoughts): 1) We have to handle absolute filenames and relative filenames differently, I think. With an absolute filename, we don't search the libraries. With just a filename (with no /'s), we do search the library list. What do we do with relative filenames like ../otherdir/prog.P? I guess it would be OK to search the libraries with these as well, but it does seem odd. 2) I don't know the order of searching the libraries. I.e., do we search the current directory first or last? If we did it last, then the user could put the current directory in as the first library_directory if desired... 1) I don't understand how foreign code is handled, but I assume you do, so I assume you're handling it correctly. It would be great to get this fixed up. -David |