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

Reply via email to