class_definition.h

Go to the documentation of this file.
00001 
00002 
00003 #ifndef CLASS_DEFINITION_DEFINED
00004 #define CLASS_DEFINITION_DEFINED
00005 
00006 namespace class_def {
00007 
00010   class class_definition {
00011   public:
00012     static std::vector<class_def::class_definition*> _univ;
00013     
00014     std::string                                   _name                   ;
00015     int                                           _inheritance            ;
00016     std::vector<std::string>                      _class_qualifiers       ;
00017     std::vector<std::string>                      _parents                ;
00018     std::vector<class_def::key_attribute>         _key_attributes         ;
00019     std::vector<class_def::functional_attribute>  _functional_attributes  ;
00020     std::vector<class_def::derived_attribute>     _derived_attributes     ;
00021     std::vector<std::string>                      _other_lines_at_begining;
00022     std::vector<class_def::enum_constant>         _enum_constants         ;
00023     std::vector<class_def::static_constant>       _static_constants       ;
00024     std::vector<std::string>                      _other_lines_at_end     ;
00025     bool                                          _protected_constructor  ;
00026     bool                                          _singleton              ;
00027     
00028     //derived
00029     std::vector<class_def::attribute*>            _defined_attributes;
00030 
00032     std::vector<class_def::attribute*>            _row_attributes;
00033 
00035     std::vector<class_def::attribute*>            _non_key_attributes;
00036 
00037     std::vector<class_def::attribute*>            _all_key_attributes;
00038     std::vector<class_def::attribute*>            _all_functional_attributes;
00039     std::vector<class_def::attribute*>            _all_derived_attributes;
00040     std::vector<class_def::attribute*>            _all_defined_attributes;
00041     std::vector<class_def::attribute*>            _all_row_attributes;
00042     std::vector<class_def::attribute*>            _all_non_key_attributes;
00043     
00044     
00045     static std::string              _input_line;
00046     static std::vector<std::string> _arg_vect, _com_vect;
00047     
00048     static int _erno;
00049     static const char *_error_msg;
00050     
00051   protected:
00052     
00053     static void read_num_param( 
00054                                std::istream&    from      , 
00055                                const char *param_name,
00056                                int&        param     );
00057     
00058     static std::string _output_format;
00059     static bool _lower_case_mysql_names;
00060     static int _error_function;
00061     static int _domain_error;
00062     static int _back_white;
00063     
00064     static string mysql_case_adjusted_name( const string& rhs) {
00065       if (_lower_case_mysql_names) {
00066         return string_to_lower(rhs);    
00067       } else {
00068         return rhs;
00069       }
00070     }
00071 
00072     void print_throw_message( 
00073                              const std::string& funcname, 
00074                              int numspace, 
00075                              std::ostream &os) const;
00076     
00077   public:
00078     
00079     static const char* _class_name() { return "class_def::class_definition";}
00080     const char *get_class_name() const { return _class_name();}
00081     
00082     void set_null();
00083     
00084     void init_calc_derived_attributes();
00085     
00086     void init(
00087               const std::string&                        Name                   ,
00088               int                                       Inheritance            ,
00089               const std::vector<std::string>&           Class_qualifiers       ,
00090               const std::vector<std::string>&           Parents                ,
00091               const std::vector<class_def::key_attribute>&         Key_attributes         ,
00092               const std::vector<class_def::functional_attribute>&  Functional_attributes  ,
00093               const std::vector<class_def::derived_attribute>&     Derived_attributes     ,
00094               const std::vector<std::string>&           other_lines_at_begining,
00095               const std::vector<class_def::enum_constant>&         Enum_constants         ,
00096               const std::vector<class_def::static_constant>&       Static_constants       ,
00097               const std::vector<std::string>&           other_lines_at_end     ,
00098               bool                                      Protected_constructor  ,
00099               bool                                      Singleton              );
00100     
00101     class_definition() {
00102       set_null();
00103     }
00104     
00105     friend std::istream& operator >> ( std::istream& s, class_definition&       atr);
00106     friend std::ostream& operator << ( std::ostream& s, const class_definition& atr);
00107     
00108     static int is_white( char c);
00109     static void get_arg_vect( std::istream& , std::vector<std::string>& , std::vector<std::string>&);
00110     
00111     friend class attribute;
00112     friend class derived_attribute;
00113     
00114     void print( std::ostream& s) const;
00115     
00116     void print_header_output( std::ostream& s) const;
00117     void print_simple_output( std::ostream& s) const;
00118     void print_init_static_attributes( std::ostream& s) const;
00119     void print_exists( std::ostream& s) const;
00120     void print_singleton_select( std::ostream& s) const;
00121 
00126     void print_insert( std::ostream& s) const;
00127     void print_update( std::ostream& s) const;
00128     void print_mysql_exists( std::ostream& os) const;
00129     void print_mysql_delete( std::ostream& os) const;
00130     void print_mysql_insert( std::ostream& os) const;
00131     void print_mysql_update( std::ostream& os) const;
00132     void print_mysql_singleton_select( std::ostream& os) const;
00133     void print_mysql_insert_or_update( std::ostream& os) const;
00134     
00135     void print_tag(
00136                    std::ostream& os,
00137                    const std::string& tag,
00138                    const std::string& nmspc,
00139                    const std::string& consttag) const;
00140     
00141     void print_read_binary( std::ostream& s) const;
00142     void print_write_binary( std::ostream& s) const;
00143     void print_send_binary( std::ostream& s) const;
00144     void print_recv_binary( std::ostream& s) const;
00145     void print_map_by_offset( std::ostream& s) const;
00146     
00147     
00148     void Read( std::istream& s);
00149     
00150     static void set_output_format( const char *fmt) {
00151       _output_format = fmt;
00152     }
00153     
00154     static void set_lower_case_mysql_names( bool newval) {
00155       _lower_case_mysql_names = newval;
00156     }
00157 
00158     static void set_error_function( int i) { _error_function = i;}
00159     
00160     static void set_domain_error( int i) { _domain_error = i; }
00161     
00162     static void set_back_white( int i) { _back_white = i;}
00163     
00164     static int stricmp( const char *lhs, const char *rhs);
00165     
00166     static bool is_string( const char* str);
00167     
00168     static const char *int_alias[];
00169     
00170     static bool is_int( const char *str);
00171     
00172     static const char *double_alias[];
00173     
00174     static bool is_double( const char *str);
00175     
00180     void print_mysql_create_table( std::ostream& os) const ;
00181 
00182     static string eat_white(  const std::string& str, const std::string& seps);
00183 
00184     static string eat_back_white(  const std::string& str, const std::string& seps);
00185 
00186   };
00187 }
00188 
00189 #endif

Generated on Tue Jul 14 12:22:31 2009 for cstpp by  doxygen 1.5.1