BDE 4.39.x Production Release
Loading...
Searching...
No Matches
s_baltst_basicschemautil.h
Go to the documentation of this file.
1/// @file s_baltst_basicschemautil.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// s_baltst_basicschemautil.h -*-C++-*-
8#ifndef INCLUDED_S_BALTST_BASICSCHEMAUTIL
9#define INCLUDED_S_BALTST_BASICSCHEMAUTIL
10
11#include <bsls_ident.h>
12BSLS_IDENT("$Id: $")
13
14/// @defgroup s_baltst_basicschemautil s_baltst_basicschemautil
15/// @brief Provide utilities for `s_baltst::BasicSchema` objects.
16/// @addtogroup Standalones
17/// @{
18/// @addtogroup s_baltst
19/// @{
20/// @addtogroup s_baltst_basicschemautil
21/// @{
22///
23/// <h1> Outline </h1>
24/// * <a href="#s_baltst_basicschemautil-purpose"> Purpose</a>
25/// * <a href="#s_baltst_basicschemautil-classes"> Classes </a>
26/// * <a href="#s_baltst_basicschemautil-description"> Description </a>
27/// * <a href="#s_baltst_basicschemautil-checking-structural-equivalence-up-to-annotation"> Checking Structural Equivalence Up To Annotation </a>
28///
29/// # Purpose {#s_baltst_basicschemautil-purpose}
30/// Provide utilities for `s_baltst::BasicSchema` objects.
31///
32/// # Classes {#s_baltst_basicschemautil-classes}
33///
34/// - s_baltst::BasicSchemaUtil: Namespace for utilities for basic schema objects
35///
36/// @see balxml_configschema, bdem_configschema
37///
38/// # Description {#s_baltst_basicschemautil-description}
39/// This component defines a `struct`,
40/// `s_baltst::BasicSchemaUtil`, that acts as a namespace for a suite of
41/// utility functions providing non-primitive operations on
42/// `s_baltst::BasicSchema` objects.
43///
44/// # Checking Structural Equivalence Up To Annotation {#s_baltst_basicschemautil-checking-structural-equivalence-up-to-annotation}
45///
46/// The most important operation provided by `s_baltst::BasicSchemaUtil` is
47/// `areEqualUpToAnnotation`, which compares 2 basic schema objects and returns
48/// `true` if they are structurally equal except for the presence or absence of
49/// annotations. This can be used, for example, to test that a basic schema
50/// object parsed from an XML schema definition has an expected structure,
51/// without worrying about having to check the structure of its documentation.
52/// @}
53/** @} */
54/** @} */
55
56/** @addtogroup Standalones
57 * @{
58 */
59/** @addtogroup s_baltst
60 * @{
61 */
62/** @addtogroup s_baltst_basicschemautil
63 * @{
64 */
65
66#include <bdlat_choicefunctions.h>
67#include <bdlat_selectioninfo.h>
68#include <bdlat_typecategory.h>
69
70#include <bslmf_assert.h>
71#include <bslmf_enableif.h>
73#include <bslmf_isconst.h>
74
75#include <bsls_assert.h>
76
78
79
80namespace s_baltst {
81
82 // ======================
83 // struct BasicSchemaUtil
84 // ======================
85
86/// forward declaration
87template <class ELEMENT_TYPE>
88struct BasicSchemaUtil_IsElement;
89
90/// forward declaration
91template <class ELEMENT_TYPE>
92struct BasicSchemaUtil_IsElementOrSchema;
93
94/// This utility `struct` provides a namespace for a suite of functions for
95/// non-primitive operations on `s_baltst::BasicSchema` objects.
96///
97/// See @ref s_baltst_basicschemautil
99
100 private:
101 // PRIVATE TYPES
102
103 /// This boolean-valued metafunction provides a member constant `value`
104 /// that is equal to `true` if the specified `ELEMENT_TYPE` represents
105 /// an element, excluding the top-level schema element, in an XML Schema
106 /// Definition. Otherwise, `value` is equal to `false`.
107 template <class ELEMENT_TYPE>
108 struct IsElement : BasicSchemaUtil_IsElement<ELEMENT_TYPE> {
109 };
110
111 /// This boolean-valued metafunction provides a member constant `value`
112 /// that is equal to `true` if the specified `ELEMENT_TYPE` represents
113 /// an element, including the top-level schema element, in an XML Schema
114 /// Definition. Otherwise, `value` is equal to `false`.
115 template <class ELEMENT_TYPE>
116 struct IsElementOrSchema
117 : BasicSchemaUtil_IsElementOrSchema<ELEMENT_TYPE> {
118 };
119
120 public:
121 // CLASS METHODS
122
123 /// Insert the specified `element` after the last element in the
124 /// `choice` vector of the specified `parent`. This function
125 /// participates in overload resolution if `PARENT_TYPE` is a
126 /// non-`const` type for which `IsElementOrSchema<PARENT_TYPE>::value`
127 /// is `true` and `IsElement<CHILD_TYPE>::value` is `true`.
128 template <class PARENT_TYPE, class CHILD_TYPE>
132 append(PARENT_TYPE *parent, const CHILD_TYPE& element);
133
134 /// Insert a `s_baltst::EnumerationElement` with the specified `value`
135 /// after the last element in the `choice` vector of the specified
136 /// `parent`.
138 const bsl::string_view& value);
139
140 /// Return `true` if the specified `a` and `b` are structurally
141 /// equivalent except for the presence, absence, or order of
142 /// annotations, and return false otherwise.
143 static bool areEqualUpToAnnotation(const BasicSchema& a,
144 const BasicSchema& b);
145};
146
147 // ================================
148 // struct BasicSchemaUtil_IsElement
149 // ================================
150
151/// This boolean-valued metafunction provides a member constant `value` that
152/// is equal to `true` if the specified `ELEMENT_TYPE` represents an
153/// element, excluding the top-level schema element, in an XML Schema
154/// Definition. Otherwise, `value` is equal to `false`.
155template <class ELEMENT_TYPE>
158
159template <>
163
164template <>
168
169template <>
173
174template <>
178
179template <>
183
184template <>
188
189template <>
193
194template <>
198
199 // ========================================
200 // struct BasicSchemaUtil_IsElementOrSchema
201 // ========================================
202
203/// This boolean-valued metafunction provides a member constant `value` that
204/// is equal to `true` if the specified `ELEMENT_TYPE` represents an
205/// element, including the top-level schema element, in an XML Schema
206/// Definition. Otherwise, `value` is equal to `false`.
207template <class ELEMENT_TYPE>
211
212template <>
215
216 // ===============================
217 // struct BasicSchemaUtil_ImplUtil
218 // ===============================
219
220/// This component-private utility `struct` provides implementation details
221/// for `BasicSchemaUtil`.
222///
223/// See @ref s_baltst_basicschemautil
225
226 // TYPES
235
236 private:
237 // PRIVATE CLASS METHODS
238
239 /// The behavior of this function is undefined. It is provided for the purpose of overload set formation.
240 ///
241 /// \note Note that the specified
242 /// `element` is not used.
243 static void doRemoveAnnotations(AnnotationElement *element);
244
245 /// Remove all annotation sub-elements from the specified `element`.
246 template <class ELEMENT_TYPE>
247 static void doRemoveAnnotations(ELEMENT_TYPE *element);
248
249 /// Recursively remove all annotation sub-elements from the set of
250 /// element choices specified by the range '[beginElementChoices,
251 /// endElementChoices)', and return the past-the-end iterator for the new range of element choices.
252 ///
253 /// \note Note that the element re-ordering and
254 /// removal behavior of this function is similar to that of the
255 /// `bsl::remove` algorithm.
256 template <class ELEMENT_CHOICE_FORWARD_ITERATOR>
257 static ELEMENT_CHOICE_FORWARD_ITERATOR doRemoveAnnotations(
258 ELEMENT_CHOICE_FORWARD_ITERATOR beginElementChoices,
259 ELEMENT_CHOICE_FORWARD_ITERATOR endElementChoices);
260
261 public:
262 // CLASS METHODS
263
264 /// Insert the specified `element` after the last element in the
265 /// `choice` vector of the specified `parent`.
266 ///
267 /// \pre The behavior is undefined unless the specified `PARENT_TYPE` parameter is one of the
268 /// non-"Choice"-suffixed types provided by the @ref s_baltst_basicschema
269 /// component.
270 template <class PARENT_TYPE>
271 static void append(PARENT_TYPE *parent, const AnnotationElement& element);
272 template <class PARENT_TYPE>
273 static void append(PARENT_TYPE *parent, const ChoiceElement& element);
274 template <class PARENT_TYPE>
275 static void append(PARENT_TYPE *parent, const ComplexTypeElement& element);
276 template <class PARENT_TYPE>
277 static void append(PARENT_TYPE *parent, const Element& element);
278 template <class PARENT_TYPE>
279 static void append(PARENT_TYPE *parent, const EnumerationElement& element);
280 template <class PARENT_TYPE>
281 static void append(PARENT_TYPE *parent, const RestrictionElement& element);
282 template <class PARENT_TYPE>
283 static void append(PARENT_TYPE *parent, const SequenceElement& element);
284 template <class PARENT_TYPE>
285 static void append(PARENT_TYPE *parent, const SimpleTypeElement& element);
286
287 /// Return `true` if the specified `choice` element choice is an
288 /// annotation element, and return `false` otherwise.
289 ///
290 /// \pre The behavior is undefined unless the specified `ELEMENT_CHOICE_TYPE` parameter is
291 /// one of the "Choice"-suffixed types provided by
292 /// `s_baltst::BasicSchema`.
293 template <class ELEMENT_CHOICE_TYPE>
294 static bool isAnnotation(const ELEMENT_CHOICE_TYPE& choice);
295
296 /// Remove all annotation sub-elements from the specified `element`.
297 template <class ELEMENT_TYPE>
298 static void removeAnnotations(ELEMENT_TYPE *element);
299};
300
301 // =============================================
302 // class BasicSchemaUtil_ChoiceAnnotationRemover
303 // =============================================
304
305/// This function-object class provides a function-call operator that
306/// removes all annotations from an element choice.
307///
308/// See @ref s_baltst_basicschemautil
310
311 public:
312 // CREATORS
313
314 /// Create a `BasicSchemaUtil_ChoiceAnnotationRemover` object.
316
317 // ACCESSORS
318
319 /// Recursively remove all annotation sub-elements from the specified `element`.
320 ///
321 /// \pre The behavior is undefined unless the specified
322 /// `ELEMENT_CHOICE_TYPE` parameter is one of the "Choice"-suffixed
323 /// types provided by `s_baltst::BasicSchema`.
324 template <class ELEMENT_CHOICE_TYPE>
325 void operator()(ELEMENT_CHOICE_TYPE& element) const;
326};
327
328 // ================================================
329 // class BasicSchemaUtil_SelectionAnnotationRemover
330 // ================================================
331
332/// This function-object class provides a function-call operator that
333/// removes all annotations from an element that is the `selection` of a
334/// `bdlat` `Choice`-compatible object.
335///
336/// See @ref s_baltst_basicschemautil
338
339 public:
340 // CREATORS
341
342 /// Create a `BasicSchemaUtil_SelectionAnnotationRemover` object.
344
345 // ACCESSORS
346
347 /// Recursively remove all annotation sub-elements from the specified `selection` element.
348 ///
349 /// \pre The behavior is undefined unless the specified
350 /// `SELECTION_TYPE` is the `selection` of a `bdlat` `Choice`-compatible
351 /// object, and is one of the non-"Choice"-suffixed types provided by
352 /// `s_baltst::BasicSchema`.
353 template <class SELECTION_TYPE>
354 int operator()(SELECTION_TYPE *selection,
355 const bdlat_SelectionInfo&) const;
356};
357
358 // ===========================================
359 // class BasicSchemaUtil_IsAnnotationPredicate
360 // ===========================================
361
362/// This function-object class provides a function-call operator that
363/// determines whether or not an object is an annotation element.
364///
365/// See @ref s_baltst_basicschemautil
367
368 public:
369 // CREATORS
370
371 /// Create a `BasicSchemaUtil_IsAnnotationPredicate` object.
373
374 // ACCESSORS
375
376 /// Return `true` if the specified `element` choice is an annotation
377 /// element, and return `false` otherwise.
378 ///
379 /// \pre The behavior is undefined unless the specified `ELEMENT_CHOICE_TYPE` parameter is one of the
380 /// "Choice"-suffixed types provided by `s_baltst::BasicSchema`.
381 template <class ELEMENT_CHOICE_TYPE>
382 bool operator()(const ELEMENT_CHOICE_TYPE& element) const;
383};
384
385 // ====================================
386 // struct BasicSchemaUtil_AlgorithmUtil
387 // ====================================
388
390 // CLASS METHODS
391
392 /// Erase all of the elements in the specified `container` from the
393 /// specified `position` iterator to the end of the container, as if by
394 /// `container->erase(position, container.end())`.
395 ///
396 /// \pre The behavior is undefined unless `container->erase(position, container.end())` is
397 /// well-formed.
398 template <class SEQUENCE_CONTAINER>
399 static void eraseToEnd(SEQUENCE_CONTAINER *container,
400 typename SEQUENCE_CONTAINER::iterator position);
401
402 /// Invoke the specified `transform` on each object in the range
403 /// specified by `[first, last)` and return an input iterator equal to
404 /// `last`.
405 template <class INPUT_ITERATOR, class TRANSFORM>
406 static INPUT_ITERATOR forEach(INPUT_ITERATOR first,
407 INPUT_ITERATOR last,
408 TRANSFORM transform);
409};
410
411// ============================================================================
412// INLINE DEFINITIONS
413// ----------------------------------------------------------------------------
414
415 // -----------------
416 // struct SchemaUtil
417 // -----------------
418
419// CLASS METHODS
420template <class PARENT_TYPE, class CHILD_TYPE>
421typename bsl::enable_if<
425BasicSchemaUtil::append(PARENT_TYPE *parent, const CHILD_TYPE& child)
426{
428}
429
431 const bsl::string_view& value)
432{
434 enumeration.value() = value;
435 BasicSchemaUtil::append(parent, enumeration);
436}
437
439 const BasicSchema& b)
440{
441 BasicSchema aCopy(a);
443
444 BasicSchema bCopy(b);
446
447 return aCopy == bCopy;
448}
449
450 // -------------------------------
451 // struct BasicSchemaUtil_ImplUtil
452 // -------------------------------
453
454// PRIVATE CLASS METHODS
455void BasicSchemaUtil_ImplUtil::doRemoveAnnotations(AnnotationElement *)
456{
458 "This overload of 'BasicSchemaUtil_ImplUtil::removeAnnotations' must "
459 "not be invoked.");
460}
461
462template <class ELEMENT_TYPE>
463void BasicSchemaUtil_ImplUtil::doRemoveAnnotations(ELEMENT_TYPE *element)
464{
466 &element->choice(),
467 BasicSchemaUtil_ImplUtil::doRemoveAnnotations(
468 element->choice().begin(), element->choice().end()));
469}
470
471template <class ELEMENT_CHOICE_FORWARD_ITERATOR>
472ELEMENT_CHOICE_FORWARD_ITERATOR BasicSchemaUtil_ImplUtil::doRemoveAnnotations(
473 ELEMENT_CHOICE_FORWARD_ITERATOR beginElementChoices,
474 ELEMENT_CHOICE_FORWARD_ITERATOR endElementChoices)
475{
476 const BasicSchemaUtil_IsAnnotationPredicate isAnnotation;
477 const ELEMENT_CHOICE_FORWARD_ITERATOR newEnd =
478 std::remove_if(beginElementChoices, endElementChoices, isAnnotation);
479
480 const BasicSchemaUtil_ChoiceAnnotationRemover removeAnnotations;
482 beginElementChoices, newEnd, removeAnnotations);
483}
484
485// CLASS METHODS
486template <class PARENT_TYPE>
487void BasicSchemaUtil_ImplUtil::append(PARENT_TYPE *parent,
488 const AnnotationElement& element)
489{
490 parent->choice().emplace_back();
491 parent->choice().back().makeAnnotation(element);
492}
493
494template <class PARENT_TYPE>
495void BasicSchemaUtil_ImplUtil::append(PARENT_TYPE *parent,
496 const ChoiceElement& element)
497{
498 parent->choice().emplace_back();
499 parent->choice().back().makeChoice(element);
500}
501
502template <class PARENT_TYPE>
503void BasicSchemaUtil_ImplUtil::append(PARENT_TYPE *parent,
504 const ComplexTypeElement& element)
505{
506 parent->choice().emplace_back();
507 parent->choice().back().makeComplexType(element);
508}
509
510template <class PARENT_TYPE>
511void BasicSchemaUtil_ImplUtil::append(PARENT_TYPE *parent,
512 const Element& element)
513{
514 parent->choice().emplace_back();
515 parent->choice().back().makeElement(element);
516}
517
518template <class PARENT_TYPE>
519void BasicSchemaUtil_ImplUtil::append(PARENT_TYPE *parent,
520 const EnumerationElement& element)
521{
522 parent->choice().emplace_back();
523 parent->choice().back().makeEnumeration(element);
524}
525
526template <class PARENT_TYPE>
527void BasicSchemaUtil_ImplUtil::append(PARENT_TYPE *parent,
528 const RestrictionElement& element)
529{
530 parent->choice().emplace_back();
531 parent->choice().back().makeRestriction(element);
532}
533
534template <class PARENT_TYPE>
535void BasicSchemaUtil_ImplUtil::append(PARENT_TYPE *parent,
536 const SequenceElement& element)
537{
538 parent->choice().emplace_back();
539 parent->choice().back().makeSequence(element);
540}
541
542template <class PARENT_TYPE>
543void BasicSchemaUtil_ImplUtil::append(PARENT_TYPE *parent,
544 const SimpleTypeElement& element)
545{
546 parent->choice().emplace_back();
547 parent->choice().back().makeSimpleType(element);
548}
549
550template <class ELEMENT_CHOICE_TYPE>
551bool BasicSchemaUtil_ImplUtil::isAnnotation(const ELEMENT_CHOICE_TYPE& choice)
552{
553 return choice.isAnnotationValue();
554}
555
556template <class ELEMENT_TYPE>
558{
559 BasicSchemaUtil_ImplUtil::doRemoveAnnotations(element);
560}
561
562 // ----------------------------------------------
563 // struct BasicSchemaUtil_ChoiceAnnotationRemover
564 // ----------------------------------------------
565
566// CREATORS
571
572// ACCESSORS
573template <class ELEMENT_CHOICE_TYPE>
575 ELEMENT_CHOICE_TYPE& element) const
576{
579 static_cast<unsigned>(bdlat_TypeCategory::e_CHOICE_CATEGORY));
580
581 const BasicSchemaUtil_SelectionAnnotationRemover removeAnnotations;
582
584 &element, removeAnnotations);
585
586 BSLS_ASSERT(0 == rc); (void) rc;
587}
588
589 // ------------------------------------------------
590 // class BasicSchemaUtil_SelectionAnnotationRemover
591 // ------------------------------------------------
592
593// CREATORS
598
599// ACCESSORS
600template <class SELECTION_TYPE>
602 SELECTION_TYPE *selection,
603 const bdlat_SelectionInfo&) const
604{
606 return 0;
607}
608
609 // --------------------------------------------
610 // struct BasicSchemaUtil_IsAnnotationPredicate
611 // --------------------------------------------
612
613// CREATORS
617
618// ACCESSORS
619template <class ELEMENT_CHOICE_TYPE>
621 const ELEMENT_CHOICE_TYPE& element) const
622{
624}
625
626 // ------------------------------------
627 // struct BasicSchemaUtil_AlgorithmUtil
628 // ------------------------------------
629
630// CLASS METHODS
631template <class SEQUENCE_CONTAINER>
633 SEQUENCE_CONTAINER *container,
634 typename SEQUENCE_CONTAINER::iterator position)
635{
636 container->erase(position, container->end());
637}
638
639template <class INPUT_ITERATOR, class TRANSFORM>
640INPUT_ITERATOR BasicSchemaUtil_AlgorithmUtil::forEach(INPUT_ITERATOR first,
641 INPUT_ITERATOR last,
642 TRANSFORM transform)
643{
644 for (; first != last; ++first) {
645 transform(*first);
646 }
647
648 return first;
649}
650
651} // close package namespace
652
653
654#endif
655
656// ----------------------------------------------------------------------------
657// Copyright 2021 Bloomberg Finance L.P.
658//
659// Licensed under the Apache License, Version 2.0 (the "License");
660// you may not use this file except in compliance with the License.
661// You may obtain a copy of the License at
662//
663// http://www.apache.org/licenses/LICENSE-2.0
664//
665// Unless required by applicable law or agreed to in writing, software
666// distributed under the License is distributed on an "AS IS" BASIS,
667// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
668// See the License for the specific language governing permissions and
669// limitations under the License.
670// ----------------------------- END-OF-FILE ----------------------------------
671
672/** @} */
673/** @} */
674/** @} */
Definition bslstl_stringview.h:471
Definition s_baltst_basicschema.h:95
Definition s_baltst_basicschema.h:1699
Definition s_baltst_basicschema.h:2157
Definition s_baltst_basicschema.h:2656
Definition s_baltst_basicschema.h:525
bdlb::NullableValue< bsl::string > & value()
Definition s_baltst_basicschema.h:4499
Definition s_baltst_basicschema.h:995
Definition s_baltst_basicschema.h:3241
Definition s_baltst_basicschema.h:1464
Definition s_baltst_basicschemautil.h:309
BasicSchemaUtil_ChoiceAnnotationRemover()
Create a BasicSchemaUtil_ChoiceAnnotationRemover object.
Definition s_baltst_basicschemautil.h:568
void operator()(ELEMENT_CHOICE_TYPE &element) const
Definition s_baltst_basicschemautil.h:574
Definition s_baltst_basicschemautil.h:366
bool operator()(const ELEMENT_CHOICE_TYPE &element) const
Definition s_baltst_basicschemautil.h:620
BasicSchemaUtil_IsAnnotationPredicate()
Create a BasicSchemaUtil_IsAnnotationPredicate object.
Definition s_baltst_basicschemautil.h:614
Definition s_baltst_basicschemautil.h:337
int operator()(SELECTION_TYPE *selection, const bdlat_SelectionInfo &) const
Definition s_baltst_basicschemautil.h:601
BasicSchemaUtil_SelectionAnnotationRemover()
Create a BasicSchemaUtil_SelectionAnnotationRemover object.
Definition s_baltst_basicschemautil.h:595
Definition s_baltst_basicschema.h:3972
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:231
static const t_TYPE value
Definition bslmf_integralconstant.h:267
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_ASSERT_INVOKE_NORETURN(X)
Definition bsls_assert.h:2101
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
int manipulateSelection(TYPE *object, MANIPULATOR &manipulator)
Definition s_baltst_address.h:66
Definition bdlat_selectioninfo.h:138
Definition bdlat_typecategory.h:1088
@ e_CHOICE_CATEGORY
Definition bdlat_typecategory.h:1049
Definition bslmf_enableif.h:530
Definition bslmf_integralconstant.h:261
Definition bslmf_isconst.h:145
Definition s_baltst_basicschemautil.h:389
static INPUT_ITERATOR forEach(INPUT_ITERATOR first, INPUT_ITERATOR last, TRANSFORM transform)
Definition s_baltst_basicschemautil.h:640
static void eraseToEnd(SEQUENCE_CONTAINER *container, typename SEQUENCE_CONTAINER::iterator position)
Definition s_baltst_basicschemautil.h:632
Definition s_baltst_basicschemautil.h:224
BasicSchemaRestrictionElement RestrictionElement
Definition s_baltst_basicschemautil.h:232
static bool isAnnotation(const ELEMENT_CHOICE_TYPE &choice)
Definition s_baltst_basicschemautil.h:551
BasicSchemaEnumerationElement EnumerationElement
Definition s_baltst_basicschemautil.h:231
BasicSchemaElement Element
Definition s_baltst_basicschemautil.h:230
static void removeAnnotations(ELEMENT_TYPE *element)
Remove all annotation sub-elements from the specified element.
Definition s_baltst_basicschemautil.h:557
BasicSchemaChoiceElement ChoiceElement
Definition s_baltst_basicschemautil.h:228
static void append(PARENT_TYPE *parent, const AnnotationElement &element)
Definition s_baltst_basicschemautil.h:487
BasicSchemaSequenceElement SequenceElement
Definition s_baltst_basicschemautil.h:233
BasicSchemaSimpleTypeElement SimpleTypeElement
Definition s_baltst_basicschemautil.h:234
BasicSchemaComplexTypeElement ComplexTypeElement
Definition s_baltst_basicschemautil.h:229
BasicSchemaAnnotationElement AnnotationElement
Definition s_baltst_basicschemautil.h:227
forward declaration
Definition s_baltst_basicschemautil.h:209
forward declaration
Definition s_baltst_basicschemautil.h:156
Definition s_baltst_basicschemautil.h:98
static bsl::enable_if<!bsl::is_const< PARENT_TYPE >::value &&IsElementOrSchema< PARENT_TYPE >::value &&IsElement< CHILD_TYPE >::value >::type append(PARENT_TYPE *parent, const CHILD_TYPE &element)
Definition s_baltst_basicschemautil.h:425
static void appendEnumeration(BasicSchemaRestrictionElement *parent, const bsl::string_view &value)
Definition s_baltst_basicschemautil.h:430
static bool areEqualUpToAnnotation(const BasicSchema &a, const BasicSchema &b)
Definition s_baltst_basicschemautil.h:438