michael.vancann...@wisa.be schrieb:
Why do you need this ? You make it quite complicated.
All you need is a FindModule(Const AName,AFileHint : String) :
TPasModule call in TPasTreeContainer which must be overridden in a
descendent (such as TFPDocEngine). The default implementation returns nil.
This call can search the module list if it has one.
But it does not have such a list :-(
If it doesn't find
it, it can then decide to parse it anyway and return the just-parsed
instance.
This requires a list of the Inputs (compiler parameters), which only
exists in TFPDocCreator. It also requires a list of units being or
having been parsed. When a parser is started for a new unit, it doesn't
return the created TPasModule until finished, so that TPasTreeContainer
cannot tell whether FindModule addresses a module that has not been
parsed yet, or one that already is being parsed, but not finished.
All the parser needs to do is call FindModule whenever it encounters a unit
in a uses clause; The rest will happen then automagically.
I found it much more complicated, after a look at the existing code.
Then you can create a TPasTreeContainer descendent called
TModulesPasTreeContainer which keeps a list of modules and which
implements FindModule with the above described recursive mechanism.
Then I'll follow this route, as outlined in the last paragraph of my
message.
DoDi
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel