1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /*
19  * $Id$
20  */
21 
22 #include <xercesc/framework/psvi/PSVIElement.hpp>
23 #include <xercesc/framework/psvi/XSElementDeclaration.hpp>
24 #include <xercesc/framework/psvi/XSComplexTypeDefinition.hpp>
25 #include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
26 
27 XERCES_CPP_NAMESPACE_BEGIN
28 
PSVIElement(MemoryManager * const manager)29 PSVIElement::PSVIElement(MemoryManager* const manager):
30         PSVIItem(manager),
31         fElementDecl(0),
32         fNotationDecl(0),
33         fSchemaInfo(0)
34 {
35 }
36 
~PSVIElement()37 PSVIElement::~PSVIElement()
38 {
39     fMemoryManager->deallocate(fCanonicalValue);
40 }
41 
getTypeDefinition()42 XSTypeDefinition* PSVIElement::getTypeDefinition()
43 {
44     return fType;
45 }
46 
47     /**
48      * If and only if that type definition is a simple type definition
49      * with {variety} union, or a complex type definition whose {content type}
50      * is a simple type definition with {variety} union,
51 
52      * then an item isomorphic
53      * to that member of the union's {member type definitions} which actually
54      * validated the element item's normalized value.
55      *
56      * @return  a simple type declaration
57      */
getMemberTypeDefinition()58 XSSimpleTypeDefinition* PSVIElement::getMemberTypeDefinition()
59 {
60     return fMemberType;
61 }
62 
reset(const VALIDITY_STATE validityState,const ASSESSMENT_TYPE assessmentType,const XMLCh * const validationContext,bool isSpecified,XSElementDeclaration * const elemDecl,XSTypeDefinition * const typeDef,XSSimpleTypeDefinition * const memberType,XSModel * const schemaInfo,const XMLCh * const defaultValue,const XMLCh * const normalizedValue,XMLCh * const canonicalValue,XSNotationDeclaration * const notationDecl)63 void PSVIElement::reset( const VALIDITY_STATE          validityState
64                        , const ASSESSMENT_TYPE         assessmentType
65                        , const XMLCh* const            validationContext
66                        , bool                          isSpecified
67                        , XSElementDeclaration* const   elemDecl
68                        , XSTypeDefinition* const       typeDef
69                        , XSSimpleTypeDefinition* const memberType
70                        , XSModel* const                schemaInfo
71                        , const XMLCh* const            defaultValue
72                        , const XMLCh* const            normalizedValue
73                        , XMLCh* const                  canonicalValue
74                        , XSNotationDeclaration* const  notationDecl)
75 {
76     fValidationContext = validationContext;
77     fValidityState = validityState;
78     fAssessmentType = assessmentType;
79     fIsSpecified = isSpecified;
80     fType = typeDef;
81     fMemberType = memberType;
82     fElementDecl = elemDecl;
83     fNotationDecl = notationDecl;
84     fSchemaInfo = schemaInfo;
85     fDefaultValue = defaultValue;
86     fNormalizedValue = normalizedValue;
87     fMemoryManager->deallocate(fCanonicalValue);
88     fCanonicalValue = canonicalValue;
89 }
90 
91 XERCES_CPP_NAMESPACE_END
92 
93 
94