// /*-------------------------------------------------------------------*\ // | Keywords // |*-------------------------------------------------------------------*| // | Description: // | // | Definitions of keywords to improve source code readability. // \*-------------------------------------------------------------------*/ #ifndef KEYWORDS_H #define KEYWORDS_H 1 //------------------------------------------------------------------------- // Components #define abstract_template template #define concrete_template template #define abstract_instance #define concrete_instance #define utility_class class //------------------------------------------------------------------------- // Component relationships #define implements virtual public #define extends virtual public #define checks virtual public #define instantiates virtual public #define specializes virtual public #define encapsulates virtual public #define employs virtual public //------------------------------------------------------------------------- // Operations #define procedure virtual void #define function virtual #define is_abstract = 0 #define global_procedure void #define global_function #define local_procedure void #define local_function #define utility_procedure static void #define utility_function static #define program_body int #define procedure_body void #define function_body #define global_procedure_body void #define global_function_body #define local_procedure_body void #define local_function_body #define utility_procedure_body static void #define utility_function_body static #define local_utility_procedure_body static void #define local_utility_function_body static //------------------------------------------------------------------------- // Parameter modes #define alters #define consumes #define preserves #define produces //------------------------------------------------------------------------- // Miscellaneous #define object #define utility_object static #define catalyst #define mod % (Integer) #define enumeration enum #define Boolean_constant int #define Character_constant char #define Integer_constant int #define Real_constant double #define Text_constant char* #define self (*this) #ifndef NULL #define NULL 0 #endif //------------------------------------------------------------------------- // The following macro is used for separately compiled template // classes, and is compiler-dependent. #ifdef __BCPLUSPLUS__ #define extern_template extern #else #define extern_template extern template #endif //------------------------------------------------------------------------- // The following macros are used to provide default values for // scalar- or class-valued template parameters. The macros are used // here because some compilers do not support one or the other form of // template parameter defaults (some compilers may even support neither). #ifdef __GNUG__ #define default_value(x) #define default_type(x) = x #elif defined(__BCPLUSPLUS__) #define default_value(x) = x #define default_type(x) #else #define default_value(x) = x #define default_type(x) = x #endif //------------------------------------------------------------------------- // The following macro is used for templates with no parameters. #ifdef __GNUG__ #define no_parameters class __no_parameters = int #else #define no_parameters int __no_parameters = 0 #endif //------------------------------------------------------------------------- #endif // KEYWORDS_H