xref: /onnv-gate/usr/src/cmd/man/src/util/nsgmls.src/lib/ElementType.cxx (revision 0:68f95e015346)
1 // Copyright (c) 1994 James Clark
2 // See the file COPYING for copying permission.
3 #pragma ident	"%Z%%M%	%I%	%E% SMI"
4 
5 #ifdef __GNUG__
6 #pragma implementation
7 #endif
8 #include "splib.h"
9 #include "ElementType.h"
10 #include "ContentToken.h"
11 #include "macros.h"
12 
13 #ifdef SP_NAMESPACE
14 namespace SP_NAMESPACE {
15 #endif
16 
ElementType(const StringC & name,size_t index)17 ElementType::ElementType(const StringC &name, size_t index)
18 : Named(name), index_(index), map_(0), defIndex_(0)
19 {
20 }
21 
ElementDefinition(const Location & location,size_t index,unsigned char omitFlags,DeclaredContent declaredContent)22 ElementDefinition::ElementDefinition(const Location &location,
23 				     size_t index,
24 				     unsigned char omitFlags,
25 				     DeclaredContent declaredContent)
26 : location_(location),
27   index_(index),
28   omitFlags_(omitFlags),
29   declaredContent_(declaredContent)
30 {
31   computeMode();
32 }
33 
ElementDefinition(const Location & location,size_t index,unsigned char omitFlags,DeclaredContent declaredContent,Owner<CompiledModelGroup> & LOCALmodelGroup)34 ElementDefinition::ElementDefinition(const Location &location,
35 				     size_t index,
36 				     unsigned char omitFlags,
37 				     DeclaredContent declaredContent,
38 				     Owner<CompiledModelGroup> &LOCALmodelGroup)
39 : location_(location),
40   index_(index),
41   omitFlags_(omitFlags),
42   declaredContent_(declaredContent),
43   modelGroup_(LOCALmodelGroup.extract())
44 {
45   computeMode();
46 }
47 
computeMode()48 void ElementDefinition::computeMode()
49 {
50   switch (declaredContent_) {
51   case modelGroup:
52     if (!modelGroup_->containsPcdata()) {
53       netMode_ = econnetMode;
54       mode_ = econMode;
55       break;
56     }
57     // fall through
58   case any:
59     netMode_ = mconnetMode;
60     mode_ = mconMode;
61     break;
62   case cdata:
63     netMode_ = cconnetMode;
64     mode_ = cconMode;
65     break;
66   case rcdata:
67     netMode_ = rcconnetMode;
68     mode_ = rcconMode;
69     break;
70   case empty:
71     break;
72   default:
73     CANNOT_HAPPEN();
74   }
75 }
76 
swap(ElementType & to)77 void ElementType::swap(ElementType &to)
78 {
79   Named::swap(to);
80   {
81     size_t tem = to.index_;
82     to.index_ = index_;
83     index_ = tem;
84   }
85   {
86     size_t tem = to.defIndex_;
87     to.defIndex_ = defIndex_;
88     defIndex_ = tem;
89   }
90   def_.swap(to.def_);
91   {
92     const ShortReferenceMap *tem = to.map_;
93     to.map_ = map_;
94     map_ = tem;
95   }
96 }
97 
RankStem(const StringC & name,size_t index)98 RankStem::RankStem(const StringC &name, size_t index)
99 : Named(name), index_(index)
100 {
101 }
102 
addDefinition(const ConstPtr<ElementDefinition> & p)103 void RankStem::addDefinition(const ConstPtr<ElementDefinition> &p)
104 {
105   def_.push_back(p);
106 }
107 
108 
109 #ifdef SP_NAMESPACE
110 }
111 #endif
112