blob: b435bb4370f98b99875943bf9fd191b249c37692 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
// file : XMLSchema/Traversal.hpp
// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
// cvs-id : $Id$
#ifndef XMLSCHEMA_TRAVERSAL_HPP
#define XMLSCHEMA_TRAVERSAL_HPP
#include <XSCRT/Traversal.hpp>
#include <XMLSchema/Types.hpp>
namespace XMLSchema
{
namespace Traversal
{
// Automatic traversal of IDREFs.
//
//
struct IDREF :
XSCRT::Traversal::Traverser<XMLSchema::IDREF_Base, XSCRT::Type>
{
virtual void
traverse (XMLSchema::IDREF_Base& r)
{
if (r.get ()) dispatch (*(r.get ()));
}
virtual void
traverse (XMLSchema::IDREF_Base const& r)
{
if (r.get ()) dispatch (*(r.get ()));
}
};
template <typename T>
struct Traverser : XSCRT::Traversal::Traverser<T, XSCRT::Type>
{
};
typedef Traverser<byte> byte;
typedef Traverser<unsignedByte> unsignedByte;
typedef Traverser<short_> short_;
typedef Traverser<unsignedShort> unsignedShort;
typedef Traverser<int_> int_;
typedef Traverser<unsignedInt> unsignedInt;
typedef Traverser<long_> long_;
typedef Traverser<unsignedLong> unsignedLong;
typedef Traverser<boolean> boolean;
typedef Traverser<float_> float_;
typedef Traverser<double_> double_;
template <typename C>
struct string : Traverser<XMLSchema::string<C> >
{
};
template <typename C>
struct ID : Traverser<XMLSchema::ID<C> >
{
};
}
}
#include <XMLSchema/Traversal.ipp>
#include <XMLSchema/Traversal.tpp>
#endif // XMLSCHEMA_TRAVERSAL_HPP
|