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 73 74 75 76 77 78 79 80 81 82 83 84 85
|
// file : xsd-frontend/semantic-graph/any.hxx
// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
#ifndef XSD_FRONTEND_SEMANTIC_GRAPH_ANY_HXX
#define XSD_FRONTEND_SEMANTIC_GRAPH_ANY_HXX
#include <vector>
#include <xsd-frontend/semantic-graph/elements.hxx>
#include <xsd-frontend/semantic-graph/particle.hxx>
#include <xsd-frontend/semantic-graph/namespace.hxx>
namespace XSDFrontend
{
namespace SemanticGraph
{
class Any: public virtual Nameable,
public virtual Particle
{
typedef std::vector<String> Namespaces;
public:
typedef Namespaces::const_iterator NamespaceIterator;
NamespaceIterator
namespace_begin () const
{
return namespaces_.begin ();
}
NamespaceIterator
namespace_end () const
{
return namespaces_.end ();
}
public:
bool
prototype_p ()
{
return prototype_ != 0;
}
Any&
prototype ()
{
assert (prototype_ != 0);
return *prototype_;
}
void
prototype (Any& a)
{
assert (prototype_ == 0);
prototype_ = &a;
}
public:
Namespace&
definition_namespace ();
public:
Any (Path const& file,
unsigned long line,
unsigned long column,
String const& namespaces);
Any (Path const& file,
unsigned long line,
unsigned long column,
NamespaceIterator begin,
NamespaceIterator end);
using Nameable::add_edge_right;
using Particle::add_edge_right;
private:
Any* prototype_;
Namespaces namespaces_;
};
}
}
#endif // XSD_FRONTEND_SEMANTIC_GRAPH_ANY_HXX
|