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 public:
00054 typedef std::vector<BaseType *>::const_iterator Vars_citer ;
00055 typedef std::vector<BaseType *>::iterator Vars_iter ;
00056 typedef std::vector<BaseType *>::reverse_iterator Vars_riter ;
00057
00058 Constructor(const string &n, const Type &t);
00059
00060 Constructor(const Constructor ©_from);
00061 virtual ~Constructor();
00062
00063 Constructor &operator=(const Constructor &rhs);
00064 virtual void transfer_attributes(AttrTable::entry *entry);
00065
00066 Vars_iter var_begin();
00067 Vars_iter var_end();
00068 Vars_riter var_rbegin();
00069 Vars_riter var_rend();
00070 Vars_iter get_vars_iter(int i);
00071 BaseType *get_var_index(int i);
00072
00073 virtual bool is_linear();
00074
00075 virtual void print_decl(FILE *out, string space = " ",
00076 bool print_semi = true,
00077 bool constraint_info = false,
00078 bool constrained = false);
00079 virtual void print_decl(ostream &out, string space = " ",
00080 bool print_semi = true,
00081 bool constraint_info = false,
00082 bool constrained = false);
00083
00084 virtual void print_xml(FILE *out, string space = " ",
00085 bool constrained = false);
00086 virtual void print_xml(ostream &out, string space = " ",
00087 bool constrained = false);
00088
00089 virtual void dump(ostream &strm) const ;
00090 };
00091
00092 }
00093
00094 #endif // _constructor_h