00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _constructor_h
00027 #define _constructor_h 1
00028
00029 #include <vector>
00030
00031 #ifndef _basetype_h
00032 #include "BaseType.h"
00033 #endif
00034
00035 #define FILE_METHODS 1
00036
00037 namespace libdap
00038 {
00039
00041 class Constructor: public BaseType
00042 {
00043 private:
00044 Constructor();
00045 BaseType *find_hdf4_dimension_attribute_home(AttrTable::entry *source);
00046
00047 protected:
00048 std::vector<BaseType *> _vars;
00049
00050 void _duplicate(const Constructor &s);
00051 virtual AttrTable *find_matching_container(AttrTable::entry *source,
00052 BaseType **dest_variable);
00053
00054 Constructor(const string &n, const Type &t);
00055 Constructor(const string &n, const string &d, const Type &t);
00056
00057 Constructor(const Constructor ©_from);
00058 public:
00059 typedef std::vector<BaseType *>::const_iterator Vars_citer ;
00060 typedef std::vector<BaseType *>::iterator Vars_iter ;
00061 typedef std::vector<BaseType *>::reverse_iterator Vars_riter ;
00062
00063 virtual ~Constructor();
00064
00065 Constructor &operator=(const Constructor &rhs);
00066 virtual void transfer_attributes(AttrTable::entry *entry);
00067
00068 Vars_iter var_begin();
00069 Vars_iter var_end();
00070 Vars_riter var_rbegin();
00071 Vars_riter var_rend();
00072 Vars_iter get_vars_iter(int i);
00073 BaseType *get_var_index(int i);
00074
00075 virtual bool is_linear();
00076
00077 virtual void print_decl(ostream &out, string space = " ",
00078 bool print_semi = true,
00079 bool constraint_info = false,
00080 bool constrained = false);
00081
00082 virtual void print_xml(ostream &out, string space = " ",
00083 bool constrained = false);
00084
00085 #if FILE_METHODS
00086 virtual void print_decl(FILE *out, string space = " ",
00087 bool print_semi = true,
00088 bool constraint_info = false,
00089 bool constrained = false);
00090 virtual void print_xml(FILE *out, string space = " ",
00091 bool constrained = false);
00092 #endif
00093
00094 virtual void dump(ostream &strm) const ;
00095 };
00096
00097 }
00098
00099 #endif // _constructor_h