with generator_support; use generator_support; -- *************************************************************************** -- Programmer Name : S. Phillips/A. LeClair -- Program Name : Abstract_Domain_Generator package -- Revision Number : Rev 1.0 -- Date Created : 10/31/89 -- Package Description : The Abstract_Domain_Generator is a generic package -- which contains layers of nested generic packages -- which reflects the nesting structure for defining -- SAME abstract domain packages. -- Base specific domain packages -- Individual domain packages -- Domains defined in each domain package -- These generics are instantiated by the interface -- programmer. This package then automatically -- generates one file Base_Specific_Domains and also -- a domain file for each domain defined. The outermost -- generic package, abstract_domain_generator is -- instantiated once with a list of all valid domain -- package names. generic type package_names is (<>); -- one for each domain package you will have package abstract_domain_generator is -- ************************************************************************* -- Package Description : The generate_domain_package is a generic package -- which is instantiated with a domain package name from -- from the list of valid domains packages and a list of -- domains to be defined for that package. This generic -- is instantiated once for each domain package. generic domain_package_name : package_names; -- what this domain package to be defined is named type domains is (<>); -- one for each domain you will have in this package package generate_domain_package is -- ************************************************************************ -- Package Description : The generate_int_domain generic package is used -- to define characteristics for SAME domains of type -- char, int and smallint. This package is -- instantiated with: a domain name; a domain type; -- start and stop ranges; and a null bearing indicator. -- This generic is instantiate once for each char, int -- or smallint type domain in a specified package. generic type_name : domains; class : sql_types; null_bearing : null_indicator := null_and_not_null; intrange_start : integer := 0; -- represents length, range, etc. intrange_stop : integer := 0; package generate_int_domain is end generate_int_domain; -- ************************************************************************ -- Package Description : The generate_sub_domain generic package is used -- to define characteristics for SAME int and -- smallint subtypes. This package is instantiated -- with: a domain name; the name of the domain it is -- based on; a domain type; start and stop ranges; -- and a null bearing indicator. -- This generic is instantiate once for each int or -- smallint subtype in a specified package. generic type_name : domains; based_on : domains; -- used when this domain is based on another domain class : sql_types; null_bearing : null_indicator := null_and_not_null; intrange_start : integer := 0; -- represents length, range, etc. intrange_stop : integer := 0; package generate_subint_domain is end generate_subint_domain; -- ************************************************************************ -- Package Description : The generate_flt_domain generic package is used -- to define characteristics for SAME domains of type -- real, double_precision, and decimal. This package -- is instantiated with: a domain name; a domain type; -- start and stop ranges; and a null bearing indicator. -- This generic is instantiate once for each real, -- double_precision or decimal type domain in a -- specified package. generic type_name : domains; class : sql_types; null_bearing : null_indicator := null_and_not_null; fltrange_start : float := 0.0; -- represents length, range, etc. fltrange_stop : float := 0.0; package generate_flt_domain is end generate_flt_domain; -- ************************************************************************ -- Package Description : The generate_subflt_domain generic package is used -- to define characteristics for SAME real, double_ -- precison and decimal subtypes. This package is -- instantiated with: a domain name; the name of the -- domain it is based on; a domain type; -- start and stop ranges; and a null bearing indicator. -- This generic is instantiate once for each real, -- double_precision or deciaml subtype in a -- specified package. generic type_name : domains; based_on : domains; -- used when this domain is based on another domain class : sql_types; null_bearing : null_indicator := null_and_not_null; fltrange_start : float := 0.0; -- represents length, range, etc. fltrange_stop : float := 0.0; package generate_subflt_domain is end generate_subflt_domain; -- ************************************************************************ -- Package Description : The generate_enum_domain generic package is used -- to define characteristics of a SAME enumeration -- domain. This package is instantiated with: -- a list of enumerated values; a domain name; -- a domain type; and a null bearing indicator. -- This generic is instantiate once for each -- enumeration type domain in a specified package. generic type enum_values is (<>); type_name : domains; class : sql_types; null_bearing : null_indicator := null_and_not_null; package generate_enum_domain is end generate_enum_domain; -- ************************************************************************ -- Package Description : The generate_subenum_domain generic package is used -- to define characteristics of a SAME enumeration -- subtype. This package is instatiated with: -- a list of enumerated values; a domain name; the -- domain it is based on; and a null bearing indicator. -- This generic is instantiate once for each -- enumeration subtype in a specified package. generic type_name : domains; based_on : domains; -- used when this domain is based on another domain class : sql_types; null_bearing : null_indicator := null_and_not_null; enum_range_start : string; -- represents range of enumerated values of base domain enum_range_stop : string; package generate_subenum_domain is end generate_subenum_domain; -- ************************************************************************ -- Functional Description : start_generation generates the SAME abstract -- domain declarations for each domain package -- specified and output the generated text into -- a domain package file. procedure start_generation; -- ************************************************************************ end generate_domain_package; -- ************************************************************************* -- Functional Description : generate_base_specific generates the SAME -- Base_Specific_Domains specification. procedure generate_base_specific; -- ************************************************************************ end abstract_domain_generator;