00001 // $Header: /nfs/slac/g/glast/ground/cvs/xmlUtil/xmlUtil/id/DictField.h,v 1.6 2002/04/05 18:28:44 jrb Exp $ 00002 00003 #ifndef XMLUTIL_DICTFIELD_H 00004 #define XMLUTIL_DICTFIELD_H 00005 00006 #include <string> 00007 00008 #include <dom/DOM_Element.hpp> 00009 00010 #include "xmlUtil/id/DictObject.h" 00011 00012 #include "xmlUtil/id/DictConstraints.h" 00013 00014 namespace xmlUtil { 00017 class DictVisitor; 00018 00019 class DictField : public DictObject { 00020 public: 00021 DictField(DOM_Element elt); 00022 ~DictField(){ if (m_constraints) delete m_constraints;}; 00023 00024 const std::string& getName() const {return m_name;} 00025 00027 bool allowed(unsigned value) const; 00028 00029 bool accept(DictVisitor* vis) {return vis->visitField(this);} 00030 DictConstraints* getConstraints() const {return m_constraints;} 00031 00032 DictField(const DictField& toCopy); 00033 DictField& operator=(const DictField&); 00034 00035 private: 00036 // friend class IdDict; // may also need friend IdConverter 00037 00038 // Build a field which has value constraints 00039 DictField(const std::string& name, const DictConstraints& constraints) 00040 : m_name(name) 00041 {m_constraints = new DictConstraints(constraints);} 00042 00043 // Build a field with no value constraints 00044 DictField(const std::string& name) : m_constraints(0), m_name(name) {} 00045 00046 00047 void deepCopy(const DictField& toCopy); 00048 00049 DictConstraints *m_constraints; 00050 std::string m_name; 00051 00052 }; // end DictField class 00053 } // end xmlUtil namespace 00054 00055 #endif
1.2.13.1 written by Dimitri van Heesch,
© 1997-2001