Xalan-C++ API Reference 1.12.0
XalanHTMLElementsProperties.hpp
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18#if !defined(XALANHTMLELEMENTSPROPERTIES_HEADER_GUARD_1357924680)
19#define XALANHTMLELEMENTSPROPERTIES_HEADER_GUARD_1357924680
20
21
22
23// Base include file. Must be first.
25
26
27
29
30
31
32namespace XALAN_CPP_NAMESPACE {
33
34
35
37{
38public:
39
40 enum { eMaxAttributes = 6, eMaxAttributeName = 8, eMaxElementName = 10 };
41
42 enum eFlags
43 {
44 EMPTY = (1 << 1),
45 FLOW = (1 << 2),
46 BLOCK = (1 << 3),
47 BLOCKFORM = (1 << 4),
48 BLOCKFORMFIELDSET = (1 << 5),
49 CDATA = (1 << 6),
50 PCDATA = (1 << 7),
51 RAW = (1 << 8),
52 INLINE = (1 << 9),
53 INLINEA = (1 << 10),
54 INLINELABEL = (1 << 11),
55 FONTSTYLE = (1 << 12),
56 PHRASE = (1 << 13),
57 FORMCTRL = (1 << 14),
58 SPECIAL = (1 << 15),
59 ASPECIAL = (1 << 16),
60 HEADMISC = (1 << 17),
61 HEAD = (1 << 18),
62 LIST = (1 << 19),
63 PREFORMATTED = (1 << 20),
64 WHITESPACESENSITIVE = (1 << 21),
65 HEADELEM = (1 << 22),
66 STYLEELEM = (1 << 23),
67 SCRIPTELEM = (1 << 24),
68
69 ATTRURL = (1 << 1),
70 ATTREMPTY = (1 << 2)
71 };
72
74 {
75 typedef unsigned char FlagsType;
76
77 XalanDOMChar m_name[eMaxAttributeName + 1];
78
80
81 /**
82 * Check if particular properties are set for this
83 * instance. See the eFlag enum for the valid
84 * properties.
85 *
86 * @param theFlags The properties to check.
87 * @return true if the property is set, false if not
88 */
89 bool
91 {
92 return m_flags & theFlags ? true : false;
93 }
94 };
95
97 {
99 typedef unsigned int FlagsType;
100
101 /**
102 * Check if particular attribute properties are set
103 * for this instance. See the eFlag enum for the valid
104 * properties.
105 *
106 * @param theAttributeName The attribute name.
107 * @param theFlags The properties to check.
108 * @return true if the property is set, false if not
109 */
110 bool
114
115 /**
116 * Check if particular properties are set for this
117 * instance. See the eFlag enum for the valid
118 * properties.
119 *
120 * @param theFlags The properties to check.
121 * @return true if the property is set, false if not
122 */
123 bool
125 {
126 return m_flags & theFlags ? true : false;
127 }
128
129 // Data members...
130 XalanDOMChar m_name[eMaxElementName + 1];
131
133
134 InternalAttributeProperties m_attributes[eMaxAttributes + 1];
135
136 /**
137 * Find an instance with the given attribute name.
138 *
139 * @param theAttributeName The attribute name.
140 * @return A reference to an instance.
141 */
144
146 };
147
148 /**
149 * This class acts as a proxy for an InternalElementProperties
150 * instance.
151 */
153 {
154 public:
155
158
159 /**
160 * Constructor
161 * @param theProperties The instance for which this one is a proxy.
162 */
164 m_properties(theProperties)
165 {
166 }
167
168 /**
169 * Copy constructor
170 * @param theSource The source instance for the copy.
171 */
173 m_properties(theSource.m_properties)
174 {
175 }
176
177 /**
178 * Determine if this is a non-null instance. You
179 * must call this before calling any member functions,
180 * if you think the instance may be null.
181 *
182 * @return true if the instance is null, false if not
183 */
184 bool
185 null() const
186 {
187 return m_properties == 0 ? true : false;
188 }
189
190 /**
191 * Check if particular properties are set for this
192 * instance. See the eFlag enum for the valid
193 * properties.
194 *
195 * @param theFlags The properties to check.
196 * @return true if the property is set, false if not
197 */
198 bool
200 {
201 return m_properties->is(theFlags);
202 }
203
204 /**
205 * Check if particular attribute properties are set
206 * for this instance. See the eFlag enum for the valid
207 * properties.
208 *
209 * @param theAttributeName The attribute name.
210 * @param theFlags The properties to check.
211 * @return true if the property is set, false if not
212 */
213 bool
217 {
218 return m_properties->isAttribute(theAttributeName, theFlags);
219 }
220
221 /**
222 * Get the name of the element.
223 *
224 * @return The name of the element.
225 */
226 const XalanDOMChar*
227 getName() const
228 {
229 return m_properties->m_name;
230 }
231
232 private:
233
234 const InternalElementProperties* m_properties;
235 };
236
237 /**
238 * Find an instance with the given name.
239 *
240 * @param theElementName The element name.
241 * @return A reference to an instance.
242 */
243 static ElementProperties
245
246private:
247
248 /**
249 * Find an instance with the given name.
250 *
251 * @param theElementName The element name.
252 * @return A reference to an instance.
253 */
254 static const InternalElementProperties&
255 findProperties(const XalanDOMChar* theElementName);
256
257 // The order of these is significant!!!
258
259 // The array of properties...
260 static const InternalElementProperties s_elementProperties[];
261
262 // This point to the last of the real propeties in the array.
263 static const InternalElementProperties* const s_lastProperties;
264
265 // This point to the last of the properties in the array, which is
266 // a dummy instance we return when an instance that matches the
267 // element name cannot be found.
268 static const InternalElementProperties* const s_dummyProperties;
269
270
271 // These are undefined...
273
275
277 operator=(const XalanHTMLElementsProperties&);
278
279};
280
281
282
283}
284
285
286
287#endif // XALANHTMLELEMENTSPROPERTIES_HEADER_GUARD_1357924680
#define XALAN_XMLSUPPORT_EXPORT
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
This class acts as a proxy for an InternalElementProperties instance.
ElementProperties(const InternalElementProperties *theProperties=0)
Constructor.
ElementProperties(const ElementProperties &theSource)
Copy constructor.
bool null() const
Determine if this is a non-null instance.
bool isAttribute(const XalanDOMChar *theAttributeName, AttributeFlagsType theFlags) const
Check if particular attribute properties are set for this instance.
const XalanDOMChar * getName() const
Get the name of the element.
bool is(FlagsType theFlags) const
Check if particular properties are set for this instance.
InternalElementProperties::AttributeFlagsType AttributeFlagsType
static ElementProperties find(const XalanDOMChar *theElementName)
Find an instance with the given name.
bool is(FlagsType theFlags) const
Check if particular properties are set for this instance.
const InternalAttributeProperties & findProperties(const XalanDOMChar *theAttributeName) const
Find an instance with the given attribute name.
bool is(FlagsType theFlags) const
Check if particular properties are set for this instance.
bool isAttribute(const XalanDOMChar *theAttributeName, AttributeFlagsType theFlags) const
Check if particular attribute properties are set for this instance.