!ASIS Issue #043 !topic Move type declarations to apropriate child packages !reference ASIS 95 !from Doug Smith 97-02-24 !keywords encapsulation type declaration child package !discussion Many type declarations in the ASIS package should be moved to the child packages. The appropriate packaging of types with their associated operations is lost by collecting all of the types in the ASIS package. For example, the type Asis.Traverse_Control should be declared in Asis.Iterator; or the subtype, Context_Clause_List (itself possibly unnecessary) should be moved to Asis.Elements. Evaluate each type declaration and determine the most appropriate encapsulation. !resolution Rejected. !date 97-03-26 !Notes This is an excellent comment and for the most part, ASIS conforms to the principles of the concept. For example, error types are in Asis.Errors, container types are in Asis.Asis_Environments.Containers, type Time is in Asis.Compilation_Units.Times, type Relationship is in Asis.Compilations_Units.Relations, types relating to lines are in Asis.Text, type Id is in package Asis.Ids, and types associated with data decomposition are in Asis.Data_Decomposition. There are fifteen types provided in package Asis. Most of these types are there because they were used by more than one ASIS package. There are basically three exceptions: Element kinds (of which Context_Clause_List is a subtype), Unit kinds, and Traverse_Control. Historically, Element kinds were separated in a package Element_Kinds and Unit kinds were separated in a package Unit_Kinds. When the ASIS packages were restructured under one parent package, Asis (see Issue #016), the concensus was to include the Element kinds and Unit kinds in the parent package Asis to highlight their importance for the ASIS interface. All these type declarations are now in one package, mainly for style and ease of reading, etc. Thus, the names of the types are at the top level of ASIS and are prefixed with "Asis.". Asis.Traverse_Control was originally in package Asis.Iterator; it was moved to package Asis to support the generation of IDL. See also Editorial Comment 013.