00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _ELEMENTH
00022 #define _ELEMENTH
00023
00024 #include <string>
00025 #include "xmlpull/wsdlpull_export.h"
00026 #include "schemaparser/Constraint.h"
00027
00028 namespace Schema {
00029 #define UNBOUNDED INT_MAX
00030 class WSDLPULL_EXPORT Element
00031 {
00032 public:
00033 Element(const std::string & name,
00034 const std::string & elemNs,
00035 const std::string & typeNs,
00036 int type_id,
00037 int minimum = 1,
00038 int maximum = 1,
00039 bool qualified = false,
00040 std::string def = "",
00041 std::string fixed ="");
00042
00043 Element(void);
00044 void setType(int id);
00045 std::string getName() const;
00046 void setTypeNamespace(const std::string & ns);
00047 std::string getTypeNamespace() const;
00048 void setNamespace(const std::string &ns);
00049 std::string getNamespace()const;
00050 int getType() const;
00051 int getMax() const ;
00052 int getMin() const;
00053 std::string & defaultVal();
00054 std::string & fixedVal();
00055 bool isQualified() const;
00056 Element& operator = (const Element & e);
00057 void setMin(int m);
00058 void setMax(int m);
00059
00060 void addConstraint(Constraint* c);
00061 Constraint* constraint();
00062 const std::list<std::string> & getConstraints();
00063 int nOccurrences;
00064
00065 private:
00066 std::string elemName;
00067 std::string dval, fval;
00068 int elemType;
00069 bool bQualified;
00070 int minOccurs, maxOccurs;
00071 std::string elemNamespace;
00072 std::string typeNamespace;
00073
00074 Constraint* cstr;
00075 };
00076
00077 #ifdef LOGGING
00078 std::ostream & operator << (std::ostream & stream, Element & e);
00079 #endif
00080
00081 inline
00082 Element::Element(const std::string & name,
00083 const std::string & elemNs,
00084 const std::string & typeNs,
00085 int type_id,
00086 int minimum,
00087 int maximum,
00088 bool qualified,
00089 std::string def ,
00090 std::string fixed)
00091 : nOccurrences(0),
00092 elemName(name),
00093 dval(def),
00094 fval(fixed),
00095 elemType(type_id),
00096 bQualified(qualified),
00097 minOccurs(minimum),
00098 maxOccurs(maximum),
00099 elemNamespace(elemNs),
00100 typeNamespace(typeNs),
00101 cstr(0)
00102 {
00103 }
00104
00105 inline
00106 Element::Element(void)
00107 :nOccurrences(0),
00108 elemType(0),
00109 bQualified (false),
00110 minOccurs (1),
00111 maxOccurs (1),
00112 cstr(0)
00113 {
00114 }
00115
00116 inline
00117 void
00118 Element::setType(int id)
00119 {
00120 elemType = id;
00121 }
00122
00123 inline
00124 std::string
00125 Element::getName() const
00126 {
00127 return elemName;
00128 }
00129
00130 inline
00131 void
00132 Element::setTypeNamespace(const std::string& ns)
00133 {
00134 typeNamespace = ns;
00135 }
00136
00137 inline
00138 std::string
00139 Element::getTypeNamespace() const
00140 {
00141 return typeNamespace;
00142 }
00143
00144
00145 inline
00146 int
00147 Element::getType() const
00148 {
00149 return elemType;
00150 }
00151
00152 inline
00153 int
00154 Element::getMax() const
00155 {
00156 return maxOccurs;
00157 }
00158 inline
00159 int
00160 Element::getMin() const
00161 {
00162 return minOccurs;
00163 }
00164
00165 inline
00166 std::string &
00167 Element::defaultVal()
00168 {
00169 return dval;
00170 }
00171
00172 inline
00173 std::string &
00174 Element::fixedVal()
00175 {
00176 return fval;
00177 }
00178
00179 inline
00180 bool
00181 Element::isQualified() const
00182 {
00183 return bQualified;
00184 }
00185
00186 inline
00187 Element&
00188 Element::operator = (const Element & e)
00189 {
00190 elemName = e.elemName;
00191 elemType = e.elemType;
00192 bQualified = e.isQualified();
00193 dval = e.dval;
00194 fval = e.fval;
00195 typeNamespace = e.typeNamespace;
00196 cstr = e.cstr;
00197 return *this;
00198
00199
00200 }
00201 inline
00202 void
00203 Element::setMin(int m)
00204 {
00205 minOccurs=m;
00206 }
00207
00208 inline
00209 void
00210 Element::setMax(int m)
00211 {
00212 maxOccurs=m;
00213 }
00214
00215 inline
00216 void
00217 Element::addConstraint(Constraint* c)
00218 {
00219 cstr=c;
00220 }
00221
00222 inline
00223 Constraint*
00224 Element::constraint()
00225 {
00226 return cstr;
00227 }
00228
00229
00230 inline
00231 void
00232 Element::setNamespace(const std::string& ns)
00233 {
00234 elemNamespace = ns;
00235 }
00236
00237 inline
00238 std::string
00239 Element::getNamespace() const
00240 {
00241 return elemNamespace;
00242 }
00243
00244
00245
00246 }
00247 #endif