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
00030 #include <vector>
00031
00032 #ifndef _basetype_h
00033 #include "BaseType.h"
00034 #endif
00035
00036 namespace libdap
00037 {
00038
00040 class Constructor: public BaseType
00041 {
00042 private:
00043 Constructor();
00044 BaseType *find_hdf4_dimension_attribute_home(AttrTable::entry *source);
00045
00046 protected:
00047 std::vector<BaseType *> _vars;
00048
00049 void _duplicate(const Constructor &s);
00050 virtual AttrTable *find_matching_container(AttrTable::entry *source,
00051 BaseType **dest_variable);
00052
00053 Constructor(const string &n, const Type &t);
00054 Constructor(const string &n, const string &d, const Type &t);
00055
00056 Constructor(const Constructor ©_from);
00057 public:
00058 typedef std::vector<BaseType *>::const_iterator Vars_citer ;
00059 typedef std::vector<BaseType *>::iterator Vars_iter ;
00060 typedef std::vector<BaseType *>::reverse_iterator Vars_riter ;
00061
00062 virtual ~Constructor();
00063
00064 Constructor &operator=(const Constructor &rhs);
00065 virtual void transfer_attributes(AttrTable::entry *entry);
00066
00067 Vars_iter var_begin();
00068 Vars_iter var_end();
00069 Vars_riter var_rbegin();
00070 Vars_riter var_rend();
00071 Vars_iter get_vars_iter(int i);
00072 BaseType *get_var_index(int i);
00073
00074 virtual bool is_linear();
00075
00076 virtual void print_decl(ostream &out, string space = " ",
00077 bool print_semi = true,
00078 bool constraint_info = false,
00079 bool constrained = false);
00080
00081 virtual void print_xml(ostream &out, string space = " ",
00082 bool constrained = false);
00083
00084
00085 virtual void print_decl(FILE *out, string space = " ",
00086 bool print_semi = true,
00087 bool constraint_info = false,
00088 bool constrained = false);
00089 virtual void print_xml(FILE *out, string space = " ",
00090 bool constrained = false);
00091
00092
00093 virtual void dump(ostream &strm) const ;
00094 };
00095
00096 }
00097
00098 #endif // _constructor_h