1*2d785d7eSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*2d785d7eSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*2d785d7eSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*2d785d7eSAndrew Rist * distributed with this work for additional information 6*2d785d7eSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*2d785d7eSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*2d785d7eSAndrew Rist * "License"); you may not use this file except in compliance 9*2d785d7eSAndrew Rist * with the License. You may obtain a copy of the License at 10*2d785d7eSAndrew Rist * 11*2d785d7eSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*2d785d7eSAndrew Rist * 13*2d785d7eSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*2d785d7eSAndrew Rist * software distributed under the License is distributed on an 15*2d785d7eSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*2d785d7eSAndrew Rist * KIND, either express or implied. See the License for the 17*2d785d7eSAndrew Rist * specific language governing permissions and limitations 18*2d785d7eSAndrew Rist * under the License. 19*2d785d7eSAndrew Rist * 20*2d785d7eSAndrew Rist *************************************************************/ 21*2d785d7eSAndrew Rist 22*2d785d7eSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _MIP_HXX 25cdf0e10cSrcweir #define _MIP_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <rtl/ustring.hxx> 28cdf0e10cSrcweir 29cdf0e10cSrcweir namespace xforms 30cdf0e10cSrcweir { 31cdf0e10cSrcweir 32cdf0e10cSrcweir /** represents the XForms *m*odel *i*tem *p*roperties (MIPs) for a 33cdf0e10cSrcweir * given XNode in the instance data at a given point in time. The 34cdf0e10cSrcweir * values will not be updated; for updated values new MIP objects have 35cdf0e10cSrcweir * to be created/queried. */ 36cdf0e10cSrcweir class MIP 37cdf0e10cSrcweir { 38cdf0e10cSrcweir bool mbHasReadonly; 39cdf0e10cSrcweir bool mbReadonly; 40cdf0e10cSrcweir 41cdf0e10cSrcweir bool mbHasRequired; 42cdf0e10cSrcweir bool mbRequired; 43cdf0e10cSrcweir 44cdf0e10cSrcweir bool mbHasRelevant; 45cdf0e10cSrcweir bool mbRelevant; 46cdf0e10cSrcweir 47cdf0e10cSrcweir bool mbHasConstraint; 48cdf0e10cSrcweir bool mbConstraint; 49cdf0e10cSrcweir 50cdf0e10cSrcweir bool mbHasCalculate; 51cdf0e10cSrcweir 52cdf0e10cSrcweir bool mbHasTypeName; 53cdf0e10cSrcweir rtl::OUString msTypeName; 54cdf0e10cSrcweir 55cdf0e10cSrcweir rtl::OUString msConstraintExplanation; 56cdf0e10cSrcweir 57cdf0e10cSrcweir public: 58cdf0e10cSrcweir MIP(); 59cdf0e10cSrcweir ~MIP(); 60cdf0e10cSrcweir 61cdf0e10cSrcweir /// inherit from upper-level MIPs 62cdf0e10cSrcweir void inherit( const MIP& ); 63cdf0e10cSrcweir 64cdf0e10cSrcweir /// join with same-level MIPs 65cdf0e10cSrcweir void join( const MIP& ); 66cdf0e10cSrcweir 67cdf0e10cSrcweir 68cdf0e10cSrcweir // - type (static; default: xsd:string) 69cdf0e10cSrcweir // (currently default implemented as empty string) 70cdf0e10cSrcweir bool hasTypeName() const; 71cdf0e10cSrcweir rtl::OUString getTypeName() const; 72cdf0e10cSrcweir void setTypeName( const rtl::OUString& ); 73cdf0e10cSrcweir void resetTypeName(); 74cdf0e10cSrcweir 75cdf0e10cSrcweir // - readonly (computed XPath; default: false; true if calculate exists) 76cdf0e10cSrcweir bool hasReadonly() const; 77cdf0e10cSrcweir bool isReadonly() const; 78cdf0e10cSrcweir void setReadonly( bool ); 79cdf0e10cSrcweir void resetReadonly(); 80cdf0e10cSrcweir 81cdf0e10cSrcweir // - required (computed XPath; default: false) 82cdf0e10cSrcweir bool hasRequired() const; 83cdf0e10cSrcweir bool isRequired() const; 84cdf0e10cSrcweir void setRequired( bool ); 85cdf0e10cSrcweir void resetRequired(); 86cdf0e10cSrcweir 87cdf0e10cSrcweir // - relevant (computed XPath; default: true) 88cdf0e10cSrcweir bool hasRelevant() const; 89cdf0e10cSrcweir bool isRelevant() const; 90cdf0e10cSrcweir void setRelevant( bool ); 91cdf0e10cSrcweir void resetRelevant(); 92cdf0e10cSrcweir 93cdf0e10cSrcweir // - constraing (computed XPath; default: true) 94cdf0e10cSrcweir bool hasConstraint() const; 95cdf0e10cSrcweir bool isConstraint() const; 96cdf0e10cSrcweir void setConstraint( bool ); 97cdf0e10cSrcweir void resetConstraint(); 98cdf0e10cSrcweir 99cdf0e10cSrcweir // explain _why_ a constraint failed 100cdf0e10cSrcweir void setConstraintExplanation( const rtl::OUString& ); 101cdf0e10cSrcweir rtl::OUString getConstraintExplanation() const; 102cdf0e10cSrcweir 103cdf0e10cSrcweir // - calculate (computed XPath; default: has none (false)) 104cdf0e10cSrcweir // (for calculate, we only store whether a calculate MIP is present; 105cdf0e10cSrcweir // the actual calculate value is handled my changing the instance 106cdf0e10cSrcweir // directly) 107cdf0e10cSrcweir bool hasCalculate() const; 108cdf0e10cSrcweir void setHasCalculate( bool ); 109cdf0e10cSrcweir void resetCalculate(); 110cdf0e10cSrcweir 111cdf0e10cSrcweir // - minOccurs/maxOccurs (computed XPath; default: 0/inf) 112cdf0e10cSrcweir // - p3ptype (static; no default) 113cdf0e10cSrcweir 114cdf0e10cSrcweir }; 115cdf0e10cSrcweir 116cdf0e10cSrcweir } // namespace xforms 117cdf0e10cSrcweir 118cdf0e10cSrcweir #endif 119