Calculate Type Use of Methods: This procedure fills in the missing information in the TypeUse objects. (1) The 'needHeader' attribute is calculated. (2) The reference to the named DefinedType is filled in. The rules for ArgumentDecl and ReturnDecl are nearly the same. The only difference is in the treatement of the PrimaryType. If a method, Foo::bar(), returns a class 'Bar', the header file for Foo only has to forward declare 'Bar' as a class. It does not have to include the header for 'Bar'. Thus 'needHeader' is always false for ReturnDecl. Primary Type For ArgumentDecl: 'needHeader' is the negation of the TypeDecl's 'isRef' attribute For ReturnDecl: 'needHeader' is always 'false' Template Argument Types These types only exist when the declaration is for a templated class. The 'needHeader' flag for thes types follows the value determined for the primary type. Array Dimensions These aren't really types. They are symbolic names whose defining header file must be #included. This goal is accomplished by declaring the name as a NonClassType. 'needHeader' is always 'true' for these types. Initializer Type This is really a symbolic constant, like Array Dimensions. It is treated in the same fashion. ---------- Update Type Registry with entries for Entities. For each Entity For each CodeCatetory Expand the CodeCategory's EntityName and HeaderFile pattern for the current entity. Use this information to create a SimpleClass type and register it.