// file : xsd-frontend/semantic-graph/any.hxx // author : Boris Kolpackov // copyright : Copyright (c) 2005-2010 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 #include #include #include namespace XSDFrontend { namespace SemanticGraph { class Any: public virtual Nameable, public virtual Particle { typedef Cult::Containers::Vector Namespaces; public: typedef Namespaces::ConstIterator NamespaceIterator; NamespaceIterator namespace_begin () const { return namespaces_.begin (); } NamespaceIterator namespace_end () const { return namespaces_.end (); } public: Boolean 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 (); protected: friend class Bits::Graph; Any (Path const& file, UnsignedLong line, UnsignedLong column, WideString const& namespaces); Any (Path const& file, UnsignedLong line, UnsignedLong 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