knoaman     2003/11/23 08:21:40

  Modified:    c/src/xercesc/internal XSObjectFactory.hpp
                        XSObjectFactory.cpp
  Log:
  PSVI: create local elements of complex types
  
  Revision  Changes    Path
  1.2       +5 -1      xml-xerces/c/src/xercesc/internal/XSObjectFactory.hpp
  
  Index: XSObjectFactory.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XSObjectFactory.hpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XSObjectFactory.hpp       21 Nov 2003 17:11:24 -0000      1.1
  +++ XSObjectFactory.hpp       23 Nov 2003 16:21:40 -0000      1.2
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.2  2003/11/23 16:21:40  knoaman
  + * PSVI: create local elements of complex types
  + *
    * Revision 1.1  2003/11/21 17:11:24  knoaman
    * Initial revision
    *
  @@ -139,6 +142,7 @@
       (
           SchemaElementDecl* const elemDecl
           , XSModel* const xsModel
  +        , XSComplexTypeDefinition* const enclosingTypeDef = 0
       );
   
       XSComplexTypeDefinition* addOrFind
  
  
  
  1.3       +25 -3     xml-xerces/c/src/xercesc/internal/XSObjectFactory.cpp
  
  Index: XSObjectFactory.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XSObjectFactory.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XSObjectFactory.cpp       21 Nov 2003 22:34:46 -0000      1.2
  +++ XSObjectFactory.cpp       23 Nov 2003 16:21:40 -0000      1.3
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.3  2003/11/23 16:21:40  knoaman
  + * PSVI: create local elements of complex types
  + *
    * Revision 1.2  2003/11/21 22:34:46  neilg
    * More schema component model implementation, thanks to David Cargill.
    * In particular, this cleans up and completes the XSModel, XSNamespaceItem,
  @@ -342,7 +345,8 @@
   
   XSElementDeclaration*
   XSObjectFactory::addOrFind(SchemaElementDecl* const elemDecl,
  -                           XSModel* const xsModel)
  +                           XSModel* const xsModel,
  +                           XSComplexTypeDefinition* enclosingTypeDef)
   {
       XSElementDeclaration* xsObj = (XSElementDeclaration*) 
getObjectFromMap(elemDecl, xsModel);
       if (!xsObj)
  @@ -391,6 +395,13 @@
               }
           }
   
  +        XSConstants::SCOPE elemScope = XSConstants::SCOPE_ABSENT;
  +
  +        if (enclosingTypeDef)
  +            elemScope = XSConstants::SCOPE_LOCAL;
  +        else if (elemDecl->getEnclosingScope() == Grammar::TOP_LEVEL_SCOPE)
  +            elemScope = XSConstants::SCOPE_GLOBAL;
  +
           xsObj = new (fMemoryManager) XSElementDeclaration
           (
               elemDecl
  @@ -399,6 +410,8 @@
               , getAnnotationFromModel(xsModel, elemDecl)
               , icMap
               , xsModel
  +            , elemScope
  +            , enclosingTypeDef
               , fMemoryManager
           );
           putObjectInMap(elemDecl, xsObj, xsModel);
  @@ -467,8 +480,15 @@
           );
           putObjectInMap(typeInfo, xsObj, xsModel);
   
  -        // REVISIT
  -        // process elements
  +        // process local elements
  +        unsigned int elemCount = typeInfo->elementCount();
  +        for (unsigned int j=0; j<elemCount; j++)
  +        {
  +            SchemaElementDecl* elemDecl = typeInfo->elementAt(j);
  +
  +            if (elemDecl->getEnclosingScope() == typeInfo->getScopeDefined())
  +                addOrFind(elemDecl, xsModel, xsObj);
  +        }
       }
   
       return xsObj;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to