00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 #if !defined(XSIDCDEFINITION_HPP)
00022 #define XSIDCDEFINITION_HPP
00023 
00024 #include <xercesc/framework/psvi/XSObject.hpp>
00025 
00026 XERCES_CPP_NAMESPACE_BEGIN
00027 
00035 
00036 class XSAnnotation;
00037 class IdentityConstraint;
00038 
00039 class  XSIDCDefinition : public XSObject
00040 {
00041 public:
00042 
00043     
00044     enum IC_CATEGORY {
00048         IC_KEY                    = 1,
00052         IC_KEYREF                 = 2,
00056         IC_UNIQUE                 = 3
00057     };
00058 
00059     
00060     
00063 
00074     XSIDCDefinition
00075     (
00076         IdentityConstraint* const identityConstraint
00077         , XSIDCDefinition*  const keyIC
00078         , XSAnnotation* const     headAnnot
00079         , StringList* const       stringList
00080         , XSModel* const          xsModel
00081         , MemoryManager* const    manager = XMLPlatformUtils::fgMemoryManager
00082     );
00083 
00085 
00088     ~XSIDCDefinition();
00090 
00091     
00095 
00100     const XMLCh* getName();
00101 
00106     const XMLCh* getNamespace();
00107 
00113     XSNamespaceItem *getNamespaceItem();
00114 
00116 
00117     
00121 
00125     IC_CATEGORY getCategory() const;
00126 
00130     const XMLCh *getSelectorStr();
00131 
00135     StringList *getFieldStrs();
00136 
00142     XSIDCDefinition *getRefKey() const;
00143 
00147     XSAnnotationList *getAnnotations();
00148 
00150 
00151     
00155 
00157 private:
00158 
00159     
00160     
00161     
00162     XSIDCDefinition(const XSIDCDefinition&);
00163     XSIDCDefinition & operator=(const XSIDCDefinition &);
00164 
00165 protected:
00166 
00167     
00168     
00169     
00170     IdentityConstraint* fIdentityConstraint;
00171     XSIDCDefinition*    fKey;
00172     StringList*         fStringList;
00173     XSAnnotationList*   fXSAnnotationList;
00174 };
00175 
00176 
00177 inline StringList* XSIDCDefinition::getFieldStrs()
00178 {
00179     return fStringList;
00180 }
00181 
00182 inline XSIDCDefinition* XSIDCDefinition::getRefKey() const
00183 {
00184     return fKey;
00185 }
00186 
00187 XERCES_CPP_NAMESPACE_END
00188 
00189 #endif