Back to index

lightning-sunbird  0.9+nobinonly
nsSchemaPrivate.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is Mozilla.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications.
00019  * Portions created by the Initial Developer are Copyright (C) 2001
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *   Vidur Apparao <vidur@netscape.com> (original author)
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either the GNU General Public License Version 2 or later (the "GPL"), or
00027  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 
00039 #ifndef __nsSchemaPrivate_h__
00040 #define __nsSchemaPrivate_h__
00041 
00042 #include "nsIWebServiceErrorHandler.h"
00043 #include "nsISchema.h"
00044 
00045 // XPCOM Includes
00046 #include "nsAutoPtr.h"
00047 #include "nsCOMPtr.h"
00048 #include "nsCOMArray.h"
00049 #include "nsHashKeys.h"
00050 #include "nsInterfaceHashtable.h"
00051 #include "nsString.h"
00052 #include "nsIDOMElement.h"
00053 
00054 #define NS_SCHEMA_2001_NAMESPACE "http://www.w3.org/2001/XMLSchema"
00055 #define NS_SCHEMA_1999_NAMESPACE "http://www.w3.org/1999/XMLSchema"
00056 #define NS_SOAP_1_1_ENCODING_NAMESPACE \
00057    "http://schemas.xmlsoap.org/soap/encoding/"
00058 #define NS_SOAP_1_2_ENCODING_NAMESPACE \
00059    "http://www.w3.org/2001/09/soap-encoding"
00060 
00065 #define NS_SCHEMALOADER_FIRE_ERROR(status,statusMessage)   \
00066   PR_BEGIN_MACRO                                           \
00067   if (aErrorHandler) {                                     \
00068     aErrorHandler->OnError(status, statusMessage);         \
00069   }                                                        \
00070   PR_END_MACRO
00071 
00072 class nsSchema : public nsISchema 
00073 {
00074 public:
00075   nsSchema(nsISchemaCollection* aCollection, nsIDOMElement* aElement);
00076   virtual ~nsSchema();
00077 
00078   NS_DECL_ISUPPORTS
00079   NS_DECL_NSISCHEMACOMPONENT
00080   NS_DECL_NSISCHEMA
00081 
00082   nsresult Init();
00083 
00084   NS_IMETHOD AddType(nsISchemaType* aType);
00085   NS_IMETHOD AddAttribute(nsISchemaAttribute* aAttribute);
00086   NS_IMETHOD AddElement(nsISchemaElement* aElement);
00087   NS_IMETHOD AddAttributeGroup(nsISchemaAttributeGroup* aAttributeGroup);
00088   NS_IMETHOD AddModelGroup(nsISchemaModelGroup* aModelGroup);
00089   void DropCollectionReference();
00090   nsresult ResolveTypePlaceholder(nsIWebServiceErrorHandler* aErrorHandler,
00091                                   nsISchemaType* aPlaceholder,
00092                                   nsISchemaType** aType);
00093   PRBool IsElementFormQualified() { return mElementFormQualified; }
00094 
00095 protected:
00096   nsString mTargetNamespace;
00097   nsString mSchemaNamespace;
00098   nsCOMArray<nsISchemaType> mTypes;
00099   nsInterfaceHashtable<nsStringHashKey, nsISchemaType> mTypesHash;
00100   nsCOMArray<nsISchemaAttribute> mAttributes;
00101   nsInterfaceHashtable<nsStringHashKey, nsISchemaAttribute> mAttributesHash;
00102   nsCOMArray<nsISchemaElement> mElements;
00103   nsInterfaceHashtable<nsStringHashKey, nsISchemaElement> mElementsHash;
00104   nsCOMArray<nsISchemaAttributeGroup> mAttributeGroups;
00105   nsInterfaceHashtable<nsStringHashKey, nsISchemaAttributeGroup> mAttributeGroupsHash;
00106   nsCOMArray<nsISchemaModelGroup> mModelGroups;
00107   nsInterfaceHashtable<nsStringHashKey, nsISchemaModelGroup> mModelGroupsHash;
00108   nsISchemaCollection* mCollection;  // [WEAK] it owns me
00109   PRPackedBool mElementFormQualified;
00110 };
00111 
00112 class nsSchemaComponentBase {
00113 public:
00114   nsSchemaComponentBase(nsSchema* aSchema);
00115   virtual ~nsSchemaComponentBase();
00116 
00117   NS_IMETHOD GetTargetNamespace(nsAString& aTargetNamespace);
00118 
00119 protected:
00120   nsSchema* mSchema;  // [WEAK] It owns me
00121   // Used to prevent infinite recursion for cycles in the object graph
00122   PRPackedBool mIsResolved;
00123   PRPackedBool mIsCleared;
00124 };
00125 
00126 #define NS_IMPL_NSISCHEMACOMPONENT_USING_BASE                           \
00127   NS_IMETHOD GetTargetNamespace(nsAString& aTargetNamespace) {          \
00128     return nsSchemaComponentBase::GetTargetNamespace(aTargetNamespace); \
00129   }                                                                     \
00130   NS_IMETHOD Resolve(nsIWebServiceErrorHandler* aErrorHandler);                                                 \
00131   NS_IMETHOD Clear();
00132 
00133 class nsSchemaBuiltinType : public nsISchemaBuiltinType
00134 {
00135 public:
00136   nsSchemaBuiltinType(PRUint16 aBuiltinType);
00137   virtual ~nsSchemaBuiltinType();
00138 
00139   NS_DECL_ISUPPORTS
00140   NS_DECL_NSISCHEMACOMPONENT
00141   NS_DECL_NSISCHEMATYPE
00142   NS_DECL_NSISCHEMASIMPLETYPE
00143   NS_DECL_NSISCHEMABUILTINTYPE
00144 
00145 protected:
00146   PRUint16 mBuiltinType;
00147 };
00148 
00149 class nsSchemaListType : public nsSchemaComponentBase,
00150                          public nsISchemaListType
00151 {
00152 public:
00153   nsSchemaListType(nsSchema* aSchema, const nsAString& aName);
00154   virtual ~nsSchemaListType();
00155 
00156   NS_DECL_ISUPPORTS
00157   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00158   NS_DECL_NSISCHEMATYPE
00159   NS_DECL_NSISCHEMASIMPLETYPE
00160   NS_DECL_NSISCHEMALISTTYPE
00161   
00162   NS_IMETHOD SetListType(nsISchemaSimpleType* aListType);
00163 
00164 protected:
00165   nsString mName;
00166   nsCOMPtr<nsISchemaSimpleType> mListType;
00167 };
00168 
00169 class nsSchemaUnionType : public nsSchemaComponentBase,
00170                           public nsISchemaUnionType
00171 {
00172 public:
00173   nsSchemaUnionType(nsSchema* aSchema, const nsAString& aName);
00174   virtual ~nsSchemaUnionType();
00175   
00176   NS_DECL_ISUPPORTS
00177   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00178   NS_DECL_NSISCHEMATYPE
00179   NS_DECL_NSISCHEMASIMPLETYPE
00180   NS_DECL_NSISCHEMAUNIONTYPE
00181 
00182   NS_IMETHOD AddUnionType(nsISchemaSimpleType* aUnionType);
00183 
00184 protected:
00185   nsString mName;
00186   nsCOMArray<nsISchemaSimpleType> mUnionTypes;
00187 };
00188 
00189 class nsSchemaRestrictionType : public nsSchemaComponentBase,
00190                                 public nsISchemaRestrictionType
00191 {
00192 public:
00193   nsSchemaRestrictionType(nsSchema* aSchema, const nsAString& aName);
00194   virtual ~nsSchemaRestrictionType();
00195 
00196   NS_DECL_ISUPPORTS
00197   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00198   NS_DECL_NSISCHEMATYPE
00199   NS_DECL_NSISCHEMASIMPLETYPE
00200   NS_DECL_NSISCHEMARESTRICTIONTYPE
00201 
00202   NS_IMETHOD SetBaseType(nsISchemaSimpleType* aBaseType);
00203   NS_IMETHOD AddFacet(nsISchemaFacet* aFacet);
00204 
00205 protected:
00206   nsString mName;
00207   nsCOMPtr<nsISchemaSimpleType> mBaseType;
00208   nsCOMArray<nsISchemaFacet> mFacets;
00209 };
00210 
00211 class nsComplexTypeArrayInfo {
00212 public:
00213   nsComplexTypeArrayInfo(nsISchemaType* aType, PRUint32 aDimension) :
00214     mType(aType), mDimension(aDimension) {}
00215   ~nsComplexTypeArrayInfo() {}
00216 
00217   void GetType(nsISchemaType** aType) { *aType = mType; NS_ADDREF(*aType); }
00218   PRUint32 GetDimension() { return mDimension; }
00219 
00220 private:
00221   nsCOMPtr<nsISchemaType> mType;
00222   PRUint32 mDimension;
00223 };
00224 
00225 class nsSchemaComplexType : public nsSchemaComponentBase,
00226                             public nsISchemaComplexType
00227 {
00228 public:
00229   nsSchemaComplexType(nsSchema* aSchema, const nsAString& aName,
00230                       PRBool aAbstract);
00231   virtual ~nsSchemaComplexType();
00232 
00233   NS_DECL_ISUPPORTS
00234   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00235   NS_DECL_NSISCHEMATYPE
00236   NS_DECL_NSISCHEMACOMPLEXTYPE
00237 
00238   nsresult Init()
00239   {
00240     return mAttributesHash.Init() ? NS_OK : NS_ERROR_FAILURE;
00241   }
00242 
00243   NS_IMETHOD SetContentModel(PRUint16 aContentModel);
00244   NS_IMETHOD SetDerivation(PRUint16 aDerivation, nsISchemaType* aBaseType);
00245   NS_IMETHOD SetSimpleBaseType(nsISchemaSimpleType* aSimpleBaseType);
00246   NS_IMETHOD SetModelGroup(nsISchemaModelGroup* aModelGroup);
00247   NS_IMETHOD AddAttribute(nsISchemaAttributeComponent* aAttribute);
00248   NS_IMETHOD SetArrayInfo(nsISchemaType* aType, PRUint32 aDimension);
00249   
00250 protected:
00251   nsString mName;
00252   PRPackedBool mAbstract;
00253   PRUint16 mContentModel;
00254   PRUint16 mDerivation;
00255   nsCOMPtr<nsISchemaType> mBaseType;
00256   nsCOMPtr<nsISchemaSimpleType> mSimpleBaseType;
00257   nsCOMPtr<nsISchemaModelGroup> mModelGroup;
00258   nsCOMArray<nsISchemaAttributeComponent> mAttributes;
00259   nsInterfaceHashtable<nsStringHashKey, nsISchemaAttributeComponent> mAttributesHash;
00260   nsAutoPtr<nsComplexTypeArrayInfo> mArrayInfo;
00261 };
00262 
00263 class nsSchemaTypePlaceholder : public nsSchemaComponentBase,
00264                                 public nsISchemaSimpleType
00265 {
00266 public:
00267   nsSchemaTypePlaceholder(nsSchema* aSchema, const nsAString& aName);
00268   virtual ~nsSchemaTypePlaceholder();
00269 
00270   NS_DECL_ISUPPORTS
00271   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00272   NS_DECL_NSISCHEMATYPE
00273   NS_DECL_NSISCHEMASIMPLETYPE
00274 
00275 protected:
00276   nsString mName;
00277 };
00278 
00279 class nsSchemaParticleBase : public nsSchemaComponentBase
00280 {
00281 public:  
00282   nsSchemaParticleBase(nsSchema* aSchema);
00283   virtual ~nsSchemaParticleBase();
00284 
00285   NS_IMETHOD GetMinOccurs(PRUint32 *aMinOccurs);
00286   NS_IMETHOD GetMaxOccurs(PRUint32 *aMaxOccurs);
00287 
00288   NS_IMETHOD SetMinOccurs(PRUint32 aMinOccurs);
00289   NS_IMETHOD SetMaxOccurs(PRUint32 aMaxOccurs);
00290 
00291 protected:
00292   PRUint32 mMinOccurs;
00293   PRUint32 mMaxOccurs;
00294 };
00295 
00296 #define NS_IMPL_NSISCHEMAPARTICLE_USING_BASE                           \
00297   NS_IMETHOD GetMinOccurs(PRUint32 *aMinOccurs) {                      \
00298     return nsSchemaParticleBase::GetMinOccurs(aMinOccurs);             \
00299   }                                                                    \
00300   NS_IMETHOD GetMaxOccurs(PRUint32 *aMaxOccurs) {                      \
00301     return nsSchemaParticleBase::GetMaxOccurs(aMaxOccurs);             \
00302   }                                                                    \
00303   NS_IMETHOD SetMinOccurs(PRUint32 aMinOccurs) {                       \
00304     return nsSchemaParticleBase::SetMinOccurs(aMinOccurs);             \
00305   }                                                                    \
00306   NS_IMETHOD SetMaxOccurs(PRUint32 aMaxOccurs) {                       \
00307     return nsSchemaParticleBase::SetMaxOccurs(aMaxOccurs);             \
00308   }                                                                    \
00309   NS_IMETHOD GetParticleType(PRUint16 *aParticleType);                 \
00310   NS_IMETHOD GetName(nsAString& aName);                        
00311 
00312 class nsSchemaModelGroup : public nsSchemaParticleBase,
00313                            public nsISchemaModelGroup
00314 {
00315 public:
00316   nsSchemaModelGroup(nsSchema* aSchema, 
00317                      const nsAString& aName);
00318   virtual ~nsSchemaModelGroup();
00319 
00320   NS_DECL_ISUPPORTS
00321   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00322   NS_IMPL_NSISCHEMAPARTICLE_USING_BASE
00323   NS_DECL_NSISCHEMAMODELGROUP
00324 
00325   NS_IMETHOD SetCompositor(PRUint16 aCompositor);
00326   NS_IMETHOD AddParticle(nsISchemaParticle* aParticle);
00327 
00328 protected:
00329   nsString mName;
00330   PRUint16 mCompositor;
00331   nsCOMArray<nsISchemaParticle> mParticles;
00332 };
00333 
00334 class nsSchemaModelGroupRef : public nsSchemaParticleBase,
00335                               public nsISchemaModelGroup
00336 {
00337 public:
00338   nsSchemaModelGroupRef(nsSchema* aSchema, 
00339                         const nsAString& aRef,
00340                         const nsAString& aRefNS);
00341   virtual ~nsSchemaModelGroupRef();
00342 
00343   NS_DECL_ISUPPORTS
00344   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00345   NS_IMPL_NSISCHEMAPARTICLE_USING_BASE
00346   NS_DECL_NSISCHEMAMODELGROUP
00347 
00348 protected:
00349   nsString mRef, mRefNS;
00350   nsCOMPtr<nsISchemaModelGroup> mModelGroup;
00351 };
00352 
00353 class nsSchemaAnyParticle : public nsSchemaParticleBase,
00354                             public nsISchemaAnyParticle
00355 {
00356 public:
00357   nsSchemaAnyParticle(nsSchema* aSchema);
00358   virtual ~nsSchemaAnyParticle();
00359 
00360   NS_DECL_ISUPPORTS
00361   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00362   NS_IMPL_NSISCHEMAPARTICLE_USING_BASE
00363   NS_DECL_NSISCHEMAANYPARTICLE
00364 
00365   NS_IMETHOD SetProcess(PRUint16 aProcess);
00366   NS_IMETHOD SetNamespace(const nsAString& aNamespace);
00367 
00368 protected:
00369   PRUint16 mProcess;
00370   nsString mNamespace;
00371 };
00372 
00373 class nsSchemaElement : public nsSchemaParticleBase,
00374                         public nsISchemaElement
00375 {
00376 public:
00377   enum { NILLABLE       = 1 << 1 };
00378   enum { ABSTRACT       = 1 << 2 };
00379   enum { FORM_QUALIFIED = 1 << 3 };
00380 
00381   nsSchemaElement(nsSchema* aSchema, const nsAString& aName);
00382   virtual ~nsSchemaElement();
00383 
00384   NS_DECL_ISUPPORTS
00385   NS_IMPL_NSISCHEMAPARTICLE_USING_BASE
00386   NS_DECL_NSISCHEMAELEMENT
00387 
00388   NS_IMETHOD GetTargetNamespace(nsAString& aTargetNamespace);
00389   NS_IMETHOD Resolve(nsIWebServiceErrorHandler* aErrorHandler);
00390   NS_IMETHOD Clear();
00391   NS_IMETHOD SetType(nsISchemaType* aType);
00392   NS_IMETHOD SetConstraints(const nsAString& aDefaultValue,
00393                             const nsAString& aFixedValue);
00394   NS_IMETHOD SetFlags(PRInt32 aFlags);
00395 
00396 protected:
00397   nsString mName;
00398   nsCOMPtr<nsISchemaType> mType;
00399   nsString mDefaultValue;
00400   nsString mFixedValue;
00401   PRUint8 mFlags;
00402 };
00403 
00404 class nsSchemaElementRef : public nsSchemaParticleBase,
00405                            public nsISchemaElement
00406 {
00407 public:
00408   nsSchemaElementRef(nsSchema* aSchema, const nsAString& aRef, const nsAString& aRefNS);
00409   virtual ~nsSchemaElementRef();
00410 
00411   NS_DECL_ISUPPORTS
00412   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00413   NS_IMPL_NSISCHEMAPARTICLE_USING_BASE
00414   NS_DECL_NSISCHEMAELEMENT
00415 
00416 protected:
00417   nsString mRef;
00418   nsString mRefNS;
00419   nsCOMPtr<nsISchemaElement> mElement;
00420 };
00421 
00422 class nsSchemaAttribute : public nsSchemaComponentBase,
00423                           public nsISchemaAttribute 
00424 {
00425 public:
00426   nsSchemaAttribute(nsSchema* aSchema, const nsAString& aName);
00427   virtual ~nsSchemaAttribute();
00428 
00429   NS_DECL_ISUPPORTS
00430   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00431   NS_DECL_NSISCHEMAATTRIBUTECOMPONENT
00432   NS_DECL_NSISCHEMAATTRIBUTE
00433 
00434   NS_IMETHOD SetType(nsISchemaSimpleType* aType);
00435   NS_IMETHOD SetConstraints(const nsAString& aDefaultValue,
00436                             const nsAString& aFixedValue);
00437   NS_IMETHOD SetUse(PRUint16 aUse);
00438 
00439 protected:
00440   nsString mName;
00441   nsCOMPtr<nsISchemaSimpleType> mType;
00442   nsString mDefaultValue;
00443   nsString mFixedValue;
00444   PRUint16 mUse;
00445 };
00446 
00447 class nsSchemaAttributeRef : public nsSchemaComponentBase,
00448                              public nsISchemaAttribute 
00449 {
00450 public:
00451   nsSchemaAttributeRef(nsSchema* aSchema, const nsAString& aRef, 
00452                        const nsAString& aRefNS);
00453   virtual ~nsSchemaAttributeRef();
00454   
00455   NS_DECL_ISUPPORTS
00456   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00457   NS_DECL_NSISCHEMAATTRIBUTECOMPONENT
00458   NS_DECL_NSISCHEMAATTRIBUTE
00459 
00460   NS_IMETHOD SetConstraints(const nsAString& aDefaultValue,
00461                             const nsAString& aFixedValue);
00462   NS_IMETHOD SetUse(PRUint16 aUse);
00463 
00464 protected:
00465   nsString mRef, mRefNS;
00466   nsCOMPtr<nsISchemaAttribute> mAttribute;
00467   nsString mDefaultValue;
00468   nsString mFixedValue;
00469   PRUint16 mUse;
00470 };
00471 
00472 class nsSchemaAttributeGroup : public nsSchemaComponentBase,
00473                                public nsISchemaAttributeGroup
00474 {
00475 public:
00476   nsSchemaAttributeGroup(nsSchema* aSchema, const nsAString& aName);
00477   virtual ~nsSchemaAttributeGroup();
00478   
00479   NS_DECL_ISUPPORTS
00480   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00481   NS_DECL_NSISCHEMAATTRIBUTECOMPONENT
00482   NS_DECL_NSISCHEMAATTRIBUTEGROUP
00483 
00484   nsresult Init()
00485   {
00486     return mAttributesHash.Init() ? NS_OK : NS_ERROR_FAILURE;
00487   }
00488 
00489   NS_IMETHOD AddAttribute(nsISchemaAttributeComponent* aAttribute);
00490 
00491 protected:
00492   nsString mName;
00493   nsCOMArray<nsISchemaAttributeComponent> mAttributes;
00494   nsInterfaceHashtable<nsStringHashKey, nsISchemaAttributeComponent> mAttributesHash;
00495 };
00496 
00497 class nsSchemaAttributeGroupRef : public nsSchemaComponentBase,
00498                                   public nsISchemaAttributeGroup
00499 {
00500 public:
00501   nsSchemaAttributeGroupRef(nsSchema* aSchema, const nsAString& aRef, 
00502                             const nsAString& aRefNS);
00503   virtual ~nsSchemaAttributeGroupRef();
00504   
00505   NS_DECL_ISUPPORTS
00506   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00507   NS_DECL_NSISCHEMAATTRIBUTECOMPONENT
00508   NS_DECL_NSISCHEMAATTRIBUTEGROUP
00509 
00510 protected:
00511   nsString mRef, mRefNS;
00512   nsCOMPtr<nsISchemaAttributeGroup> mAttributeGroup;
00513 };
00514 
00515 class nsSchemaAnyAttribute : public nsSchemaComponentBase,
00516                              public nsISchemaAnyAttribute
00517 {
00518 public:
00519   nsSchemaAnyAttribute(nsSchema* aSchema);
00520   virtual ~nsSchemaAnyAttribute();
00521 
00522   NS_DECL_ISUPPORTS
00523   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00524   NS_DECL_NSISCHEMAATTRIBUTECOMPONENT
00525   NS_DECL_NSISCHEMAANYATTRIBUTE
00526   
00527   NS_IMETHOD SetProcess(PRUint16 aProcess);
00528   NS_IMETHOD SetNamespace(const nsAString& aNamespace);
00529 
00530 protected:
00531   PRUint16 mProcess;
00532   nsString mNamespace;
00533 };
00534 
00535 class nsSchemaFacet : public nsSchemaComponentBase,
00536                       public nsISchemaFacet
00537 {
00538 public:
00539   nsSchemaFacet(nsSchema* aSchema);
00540   virtual ~nsSchemaFacet();
00541 
00542   NS_DECL_ISUPPORTS
00543   NS_IMPL_NSISCHEMACOMPONENT_USING_BASE
00544   NS_DECL_NSISCHEMAFACET
00545 
00546   NS_IMETHOD SetFacetType(PRUint16 aFacetType);
00547   NS_IMETHOD SetIsFixed(PRBool aIsFixed);
00548   NS_IMETHOD SetValue(const nsAString& aStrValue);
00549   NS_IMETHOD SetUintValue(PRUint32 aUintValue);
00550   NS_IMETHOD SetWhitespaceValue(PRUint16 aWhitespaceValue);
00551 
00552 protected:
00553   PRUint16 mFacetType;
00554   PRPackedBool mIsFixed;
00555   nsString mStrValue;
00556   PRUint32 mUintValue;
00557   PRUint16 mWhitespaceValue;
00558 };
00559 
00560 class nsSOAPArray : public nsISchemaComplexType
00561 {
00562 public:
00563   nsSOAPArray(nsISchemaType* aAnyType);
00564   virtual ~nsSOAPArray();
00565 
00566   NS_DECL_ISUPPORTS
00567   NS_DECL_NSISCHEMACOMPONENT
00568   NS_DECL_NSISCHEMATYPE
00569   NS_DECL_NSISCHEMACOMPLEXTYPE
00570 
00571 protected:
00572   nsCOMPtr<nsISchemaType> mAnyType;
00573 };
00574 
00575 class nsSOAPArrayType : public nsISchemaRestrictionType
00576 {
00577 public:
00578   nsSOAPArrayType();
00579   virtual ~nsSOAPArrayType();
00580 
00581   NS_DECL_ISUPPORTS
00582   NS_DECL_NSISCHEMACOMPONENT
00583   NS_DECL_NSISCHEMATYPE
00584   NS_DECL_NSISCHEMASIMPLETYPE
00585   NS_DECL_NSISCHEMARESTRICTIONTYPE
00586 };
00587 
00588 #define NS_SCHEMA_CID                              \
00589 { /* 58870ef5-cb65-4220-8317-dbe236059c58 */       \
00590  0x58870ef5, 0xcb65, 0x4220,                       \
00591  {0x83, 0x17, 0xdb, 0xe2, 0x36, 0x05, 0x9c, 0x58}}
00592 
00593 #define NS_SCHEMA_CONTRACTID    \
00594 "@mozilla.org/xmlextras/schemas/schema;1"
00595 
00596 #define NS_SCHEMABUILTINTYPE_CID                   \
00597 { /* c1db07bc-1095-4a44-9ed6-f4a00a116b4a */       \
00598  0xc1db07bc, 0x1095, 0x4a44,                       \
00599  {0x9e, 0xd6, 0xf4, 0xa0, 0x0a, 0x11, 0x6b, 0x4a}}
00600 
00601 #define NS_SCHEMABUILTINTYPE_CONTRACTID    \
00602 "@mozilla.org/xmlextras/schemas/schemabuiltintype;1"
00603 
00604 #define NS_SCHEMALISTTYPE_CID                      \
00605 { /* 2053b685-e541-45f9-bb00-9d8897b8887d */       \
00606  0x2053b685, 0xe541, 0x45f9,                       \
00607  {0xbb, 0x00, 0x9d, 0x88, 0x97, 0xb8, 0x88, 0x7d}}
00608 
00609 #define NS_SCHEMALISTTYPE_CONTRACTID    \
00610 "@mozilla.org/xmlextras/schemas/schemalisttype;1"
00611 
00612 #define NS_SCHEMAUNIONTYPE_CID                     \
00613 { /* ef8b74ae-da9a-4fa2-b6f1-b587b02b2262 */       \
00614  0xef8b74ae, 0xda9a, 0x4fa2,                       \
00615  {0xb6, 0xf1, 0xb5, 0x87, 0xb0, 0x2b, 0x22, 0x62}}
00616 
00617 #define NS_SCHEMAUNIONTYPE_CONTRACTID    \
00618 "@mozilla.org/xmlextras/schemas/schemauniontype;1"
00619 
00620 #define NS_SCHEMARESTRICTIONTYPE_CID               \
00621 { /* 38622f82-c10e-48cc-aea9-1a6ed31078e5 */       \
00622  0x38622f82, 0xc10e, 0x48cc,                       \
00623  {0xae, 0xa9, 0x1a, 0x6e, 0xd3, 0x10, 0x78, 0xe5}}
00624 
00625 #define NS_SCHEMARESTRICTIONTYPE_CONTRACTID    \
00626 "@mozilla.org/xmlextras/schemas/schemarestrictiontype;1"
00627 
00628 #define NS_SCHEMACOMPLEXTYPE_CID                   \
00629 { /* e8266b17-b5ed-4228-be18-473dbfe68f67 */       \
00630  0xe8266b17, 0xb5ed, 0x4228,                       \
00631  {0xbe, 0x18, 0x47, 0x3d, 0xbf, 0xe6, 0x8f, 0x67}}
00632 
00633 #define NS_SCHEMACOMPLEXTYPE_CONTRACTID    \
00634 "@mozilla.org/xmlextras/schemas/schemacomplextype;1"
00635 
00636 #define NS_SCHEMATYPEPLACEHOLDER_CID               \
00637 { /* 50e026ef-e0ef-408c-a5ed-8492d7f3604e */       \
00638  0x50e026ef, 0xe0ef, 0x408c,                       \
00639  {0xa5, 0xed, 0x84, 0x92, 0xd7, 0xf3, 0x60, 0x4e}}
00640 
00641 #define NS_SCHEMATYPEPLACEHOLDER_CONTRACTID    \
00642 "@mozilla.org/xmlextras/schemas/schematypeplaceholder;1"
00643 
00644 #define NS_SCHEMAMODELGROUP_CID                    \
00645 { /* 8f75863d-a724-40d5-a271-72bb67ef2105 */       \
00646  0x8f75863d, 0xa724, 0x40d5,                       \
00647  {0xa2, 0x71, 0x72, 0xbb, 0x67, 0xef, 0x21, 0x05}}
00648 
00649 #define NS_SCHEMAMODELGROUP_CONTRACTID    \
00650 "@mozilla.org/xmlextras/schemas/schemamodelgroup;1"
00651 
00652 #define NS_SCHEMAMODELGROUPREF_CID                 \
00653 { /* 2e9dca3a-5684-44a1-99cb-94f8aef95c03 */       \
00654  0x2e9dca3a, 0x5684, 0x44a1,                       \
00655  {0x99, 0xcb, 0x94, 0xf8, 0xae, 0xf9, 0x5c, 0x03}}
00656 
00657 #define NS_SCHEMAMODELGROUPREF_CONTRACTID    \
00658 "@mozilla.org/xmlextras/schemas/schemamodelgroupref;1"
00659 
00660 #define NS_SCHEMAANYPARTICLE_CID                   \
00661 { /* ab78c787-a356-483a-9153-92c50ba8a80d */       \
00662  0xab78c787, 0xa356, 0x483a,                       \
00663  {0x91, 0x53, 0x92, 0xc5, 0x0b, 0xa8, 0xa8, 0x0d}}
00664 
00665 #define NS_SCHEMAANYPARTICLE_CONTRACTID    \
00666 "@mozilla.org/xmlextras/schemas/schemaanyparticle;1"
00667 
00668 #define NS_SCHEMAELEMENT_CID                       \
00669 { /* 9c3e5c69-2d47-475d-9cc8-1d6905d0f7dc */       \
00670  0x9c3e5c69, 0x2d47, 0x475d,                       \
00671  {0x9c, 0xc8, 0x1d, 0x69, 0x05, 0xd0, 0xf7, 0xdc}}
00672 
00673 #define NS_SCHEMAELEMENT_CONTRACTID    \
00674 "@mozilla.org/xmlextras/schemas/schemaelement;1"
00675 
00676 #define NS_SCHEMAELEMENTREF_CID                    \
00677 { /* a62b4292-5d30-4085-9dbb-3f478d639188 */       \
00678  0xa62b4292, 0x5d30, 0x4085,                       \
00679  {0x9d, 0xbb, 0x3f, 0x47, 0x8d, 0x63, 0x91, 0x88}}
00680 
00681 #define NS_SCHEMAELEMENTREF_CONTRACTID    \
00682 "@mozilla.org/xmlextras/schemas/schemaelementref;1"
00683 
00684 #define NS_SCHEMAATTRIBUTE_CID                     \
00685 { /* 7b3820e6-0fd9-4025-9ba8-73f3a1ab1ba6 */       \
00686  0x7b3820e6, 0x0fd9, 0x4025,                       \
00687  {0x9b, 0xa8, 0x73, 0xf3, 0xa1, 0xab, 0x1b, 0xa6}}
00688 
00689 #define NS_SCHEMAATTRIBUTE_CONTRACTID    \
00690 "@mozilla.org/xmlextras/schemas/schemaattribute;1"
00691 
00692 #define NS_SCHEMAATTRIBUTEREF_CID                  \
00693 { /* 53fe1960-e0df-487f-a26c-a3073a8e863a */       \
00694  0x53fe1960, 0xe0df, 0x487f,                       \
00695  {0xa2, 0x6c, 0xa3, 0x07, 0x3a, 0x8e, 0x86, 0x3a}}
00696 
00697 #define NS_SCHEMAATTRIBUTEREF_CONTRACTID    \
00698 "@mozilla.org/xmlextras/schemas/schemaattributeref;1"
00699 
00700 #define NS_SCHEMAATTRIBUTEGROUP_CID                \
00701 { /* 1f3d1ad4-2501-4097-9293-6e40890cf72a */       \
00702  0x1f3d1ad4, 0x2501, 0x4097,                       \
00703  {0x92, 0x93, 0x6e, 0x40, 0x89, 0x0c, 0xf7, 0x2a}}
00704 
00705 #define NS_SCHEMAATTRIBUTEGROUP_CONTRACTID    \
00706 "@mozilla.org/xmlextras/schemas/schemaattributegroup;1"
00707 
00708 #define NS_SCHEMAATTRIBUTEGROUPREF_CID             \
00709 { /* 99596213-d550-4b46-ae04-7dd38dd7abff */       \
00710  0x99596213, 0xd550, 0x4b46,                       \
00711  {0xae, 0x04, 0x7d, 0xd3, 0x8d, 0xd7, 0xab, 0xff}}
00712 
00713 #define NS_SCHEMAATTRIBUTEGROUPREF_CONTRACTID    \
00714 "@mozilla.org/xmlextras/schemas/schemaattributegroupref;1"
00715 
00716 #define NS_SCHEMAANYATTRIBUTE_CID                  \
00717 { /* 4e248fa3-79d7-4821-bc69-63e5275e879c */       \
00718  0x4e248fa3, 0x79d7, 0x4821,                       \
00719  {0xbc, 0x69, 0x63, 0xe5, 0x27, 0x5e, 0x87, 0x9c}}
00720 
00721 #define NS_SCHEMAANYATTRIBUTE_CONTRACTID    \
00722 "@mozilla.org/xmlextras/schemas/schemaanyattribute;1"
00723 
00724 #define NS_SCHEMAFACET_CID                         \
00725 { /* fbaa0537-f931-4160-86a0-de849de08635 */       \
00726  0xfbaa0537, 0xf931, 0x4160,                       \
00727  {0x86, 0xa0, 0xde, 0x84, 0x9d, 0xe0, 0x86, 0x35}}
00728 
00729 #define NS_SCHEMAFACET_CONTRACTID    \
00730 "@mozilla.org/xmlextras/schemas/schemafacet;1"
00731 
00732 #define NS_SOAPARRAY_CID                         \
00733 { /* 0df92b09-36d6-4bed-ac6f-dbc195e35218 */       \
00734  0x0df92b09, 0x36d6, 0x4bed,                       \
00735  {0xac, 0x6f, 0xdb, 0xc1, 0x95, 0xe3, 0x52, 0x18}}
00736 
00737 #define NS_SOAPARRAY_CONTRACTID    \
00738 "@mozilla.org/xmlextras/schemas/soaparray;1"
00739 
00740 #define NS_SOAPARRAYTYPE_CID                       \
00741 { /* 9df7bcdb-3676-49dd-b5b9-4257dc326231 */       \
00742  0x9df7bcdb, 0x3676, 0x49dd,                       \
00743  {0xb5, 0xb9, 0x42, 0x57, 0xdc, 0x32, 0x62, 0x31}}
00744 
00745 #define NS_SOAPARRAYTYPE_CONTRACTID    \
00746 "@mozilla.org/xmlextras/schemas/soaparraytype;1"
00747 
00748 #endif // __nsSchemaPrivate_h__
00749 
00750