00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #if !defined(CONTENTMODEL_HPP)
00023 #define CONTENTMODEL_HPP
00024 
00025 #include <xercesc/util/XMemory.hpp>
00026 #include <xercesc/util/QName.hpp>
00027 
00028 XERCES_CPP_NAMESPACE_BEGIN
00029 
00030 class ContentLeafNameTypeVector;
00031 class GrammarResolver;
00032 class XMLStringPool;
00033 class XMLValidator;
00034 class SchemaGrammar;
00035 
00045 class  XMLContentModel : public XMemory
00046 {
00047 public:
00048     
00049     
00050     
00051     
00052     
00053     
00054     
00055     
00056     
00057     
00058     
00059     
00060     
00061     
00062     
00063     static const unsigned int   gInvalidTrans;
00064     static const unsigned int   gEOCFakeId;
00065     static const unsigned int   gEpsilonFakeId;
00066 
00067     
00068     
00069     
00072     virtual ~XMLContentModel()
00073     {
00074     }
00076 
00077 
00078     
00079     
00080     
00081     virtual int validateContent
00082     (
00083         QName** const         children
00084       , const unsigned int    childCount
00085       , const unsigned int    emptyNamespaceId
00086     ) const = 0;
00087 
00088     virtual int validateContentSpecial
00089     (
00090         QName** const           children
00091       , const unsigned int      childCount
00092       , const unsigned int      emptyNamespaceId
00093       , GrammarResolver*  const pGrammarResolver
00094       , XMLStringPool*    const pStringPool
00095     ) const =0;
00096 
00097     virtual void checkUniqueParticleAttribution
00098     (
00099         SchemaGrammar*    const pGrammar
00100       , GrammarResolver*  const pGrammarResolver
00101       , XMLStringPool*    const pStringPool
00102       , XMLValidator*     const pValidator
00103       , unsigned int*     const pContentSpecOrgURI
00104       , const XMLCh*            pComplexTypeName = 0
00105     ) =0;
00106 
00107     virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector()
00108       const = 0;
00109 
00110     virtual unsigned int getNextState(const unsigned int currentState,
00111                                       const unsigned int elementIndex) const = 0;
00112 
00113 protected :
00114     
00115     
00116     
00117     XMLContentModel()
00118     {
00119     }
00120 
00121 
00122 private :
00123     
00124     
00125     
00126     XMLContentModel(const XMLContentModel&);
00127     XMLContentModel& operator=(const XMLContentModel&);
00128 };
00129 
00130 XERCES_CPP_NAMESPACE_END
00131 
00132 #endif