diff options
Diffstat (limited to 'modules/CIAO/CCF/CCF/IDL3/SemanticGraph')
-rw-r--r-- | modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.cpp | 187 | ||||
-rw-r--r-- | modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.hpp | 234 | ||||
-rw-r--r-- | modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.cpp | 34 | ||||
-rw-r--r-- | modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.hpp | 67 | ||||
-rw-r--r-- | modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.cpp | 106 | ||||
-rw-r--r-- | modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.hpp | 104 | ||||
-rw-r--r-- | modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.cpp | 79 | ||||
-rw-r--r-- | modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.hpp | 149 |
8 files changed, 960 insertions, 0 deletions
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.cpp new file mode 100644 index 00000000000..da8d0dde24b --- /dev/null +++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.cpp @@ -0,0 +1,187 @@ +// file : CCF/IDL3/SemanticGraph/Component.cpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#include "CCF/IDL3/SemanticGraph/EventType.hpp" +#include "CCF/IDL3/SemanticGraph/Component.hpp" + +namespace CCF +{ + namespace IDL3 + { + namespace SemanticGraph + { + using Introspection::TypeInfo; + using Introspection::Access; + + // Provider + // + // + namespace + { + TypeInfo + provider_init_ () + { + TypeInfo ti (typeid (Provider)); + ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Instance::static_type_info ()); + return ti; + } + + TypeInfo provider_ (provider_init_ ()); + } + + TypeInfo const& Provider:: + static_type_info () { return provider_; } + + + // User + // + // + namespace + { + TypeInfo + user_init_ () + { + TypeInfo ti (typeid (User)); + ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Instance::static_type_info ()); + return ti; + } + + TypeInfo user_ (user_init_ ()); + } + + TypeInfo const& User:: + static_type_info () { return user_; } + + User:: + ~User () + { + } + + + // MultiUser + // + // + namespace + { + TypeInfo + multi_user_init_ () + { + TypeInfo ti (typeid (MultiUser)); + ti.add_base (Access::PUBLIC, true, User::static_type_info ()); + return ti; + } + + TypeInfo multi_user_ (multi_user_init_ ()); + } + + TypeInfo const& MultiUser:: + static_type_info () { return multi_user_; } + + + // SingleUser + // + // + namespace + { + TypeInfo + single_user_init_ () + { + TypeInfo ti (typeid (SingleUser)); + ti.add_base (Access::PUBLIC, true, User::static_type_info ()); + return ti; + } + + TypeInfo single_user_ (single_user_init_ ()); + } + + TypeInfo const& SingleUser:: + static_type_info () { return single_user_; } + + // Publisher + // + // + namespace + { + TypeInfo + publisher_init_ () + { + TypeInfo ti (typeid (Publisher)); + ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Instance::static_type_info ()); + return ti; + } + + TypeInfo publisher_ (publisher_init_ ()); + } + + TypeInfo const& Publisher:: + static_type_info () { return publisher_; } + + + // Emitter + // + // + namespace + { + TypeInfo + emitter_init_ () + { + TypeInfo ti (typeid (Emitter)); + ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Instance::static_type_info ()); + return ti; + } + + TypeInfo emitter_ (emitter_init_ ()); + } + + TypeInfo const& Emitter:: + static_type_info () { return emitter_; } + + + // Consumer + // + // + namespace + { + TypeInfo + consumer_init_ () + { + TypeInfo ti (typeid (Consumer)); + ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Instance::static_type_info ()); + return ti; + } + + TypeInfo consumer_ (consumer_init_ ()); + } + + TypeInfo const& Consumer:: + static_type_info () { return consumer_; } + + + // Component + // + // + namespace + { + TypeInfo + component_init_ () + { + TypeInfo ti (typeid (Component)); + ti.add_base (Access::PUBLIC, true, Type::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Scope::static_type_info ()); + return ti; + } + + TypeInfo component_ (component_init_ ()); + } + + TypeInfo const& Component:: + static_type_info () { return component_; } + } + } +} diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.hpp new file mode 100644 index 00000000000..f3d7b7784e8 --- /dev/null +++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.hpp @@ -0,0 +1,234 @@ +// file : CCF/IDL3/SemanticGraph/Component.hpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#ifndef CCF_IDL3_SEMANTIC_GRAPH_COMPONENT_HPP +#define CCF_IDL3_SEMANTIC_GRAPH_COMPONENT_HPP + +#include "CCF/IDL2/SemanticGraph/Interface.hpp" +#include "CCF/IDL3/SemanticGraph/Elements.hpp" + +namespace CCF +{ + namespace IDL3 + { + namespace SemanticGraph + { + // + // + // + class Provider : public virtual Nameable, public virtual Instance + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + Provider (Path const& path, unsigned long line) + : Node (path, line) + { + type_info (static_type_info ()); + } + }; + + + // + // + // + class User : public virtual Nameable, public virtual Instance + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + User () // For virtual inheritance only. + { + type_info (static_type_info ()); + } + + virtual + ~User () = 0; + }; + + + class MultiUser : public virtual User + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + MultiUser (Path const& path, unsigned long line) + : Node (path, line) + { + type_info (static_type_info ()); + } + }; + + + class SingleUser : public virtual User + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + SingleUser (Path const& path, unsigned long line) + : Node (path, line) + { + type_info (static_type_info ()); + } + }; + + + // + // + // + class Publisher : public virtual Nameable, public virtual Instance + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + Publisher (Path const& path, unsigned long line) + : Node (path, line) + { + type_info (static_type_info ()); + } + }; + + + // + // + // + class Emitter : public virtual Nameable, public virtual Instance + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + Emitter (Path const& path, unsigned long line) + : Node (path, line) + { + type_info (static_type_info ()); + } + }; + + + // + // + // + class Consumer : public virtual Nameable, public virtual Instance + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + Consumer (Path const& path, unsigned long line) + : Node (path, line) + { + type_info (static_type_info ()); + } + }; + + + // + // + // + class Component : public virtual Type, public virtual Scope + { + typedef + std::vector <Supports*> + Supports_; + + public: + Inherits* + inherits () const + { + return inherits_; + } + + typedef + Supports_::const_iterator + SupportsIterator; + + SupportsIterator + supports_begin () const + { + return supports_.begin (); + } + + SupportsIterator + supports_end () const + { + return supports_.end (); + } + + virtual bool + complete () const + { + return true; + } + + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + Component (Path const& path, unsigned long line) + : Node (path, line), inherits_ (0) + { + type_info (static_type_info ()); + } + + using Type::add_edge_right; + using Scope::add_edge_left; + + void + add_edge_left (Inherits& e) + { + inherits_ = &e; + } + + void + add_edge_right (Inherits&) + { + } + + void + add_edge_left (Supports& e) + { + supports_.push_back (&e); + } + + void + add_edge_right (Manages&) + { + } + + private: + Inherits* inherits_; + Supports_ supports_; + }; + } + } +} + +#endif // CCF_IDL3_SEMANTIC_GRAPH_COMPONENT_HPP diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.cpp new file mode 100644 index 00000000000..ab49a698842 --- /dev/null +++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.cpp @@ -0,0 +1,34 @@ +// file : CCF/IDL3/SemanticGraph/Elements.cpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#include "CCF/IDL3/SemanticGraph/Elements.hpp" + +namespace CCF +{ + namespace IDL3 + { + namespace SemanticGraph + { + using Introspection::TypeInfo; + using Introspection::Access; + + namespace + { + TypeInfo + manages_init_ () + { + TypeInfo ti (typeid (Manages)); + ti.add_base (Access::PUBLIC, true, Edge::static_type_info ()); + return ti; + } + + TypeInfo manages_ (manages_init_ ()); + } + + TypeInfo const& Manages:: + static_type_info () { return manages_; } + + } + } +} diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.hpp new file mode 100644 index 00000000000..b6577b6ff2e --- /dev/null +++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.hpp @@ -0,0 +1,67 @@ +// file : CCF/IDL3/SemanticGraph/Elements.hpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#ifndef CCF_IDL3_SEMANTIC_GRAPH_ELEMENTS_HPP +#define CCF_IDL3_SEMANTIC_GRAPH_ELEMENTS_HPP + +#include "CCF/IDL2/SemanticGraph/Elements.hpp" + +namespace CCF +{ + namespace IDL3 + { + namespace SemanticGraph + { + using namespace CCF::IDL2::SemanticGraph; + + // + // + // + class Manages : public virtual Edge + { + public: + Node& + manager () const + { + return *manager_; + } + + Node& + managee () const + { + return *managee_; + } + + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + Manages () + { + type_info (static_type_info ()); + } + + void + set_left_node (Node& n) + { + manager_ = &n; + } + + void + set_right_node (Node& n) + { + managee_ = &n; + } + + private: + Node* manager_; + Node* managee_; + }; + } + } +} + +#endif // CCF_IDL3_SEMANTIC_GRAPH_ELEMENTS_HPP diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.cpp new file mode 100644 index 00000000000..9fde39c008d --- /dev/null +++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.cpp @@ -0,0 +1,106 @@ +// file : CCF/IDL3/SemanticGraph/EventType.cpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#include "CCF/IDL3/SemanticGraph/EventType.hpp" + +namespace CCF +{ + namespace IDL3 + { + namespace SemanticGraph + { + using Introspection::TypeInfo; + using Introspection::Access; + + // EventType + // + // + namespace + { + TypeInfo + event_type_init_ () + { + TypeInfo ti (typeid (EventType)); + ti.add_base (Access::PUBLIC, true, ValueType::static_type_info ()); + return ti; + } + + TypeInfo event_type_ (event_type_init_ ()); + } + + TypeInfo const& EventType:: + static_type_info () { return event_type_; } + + EventType:: + ~EventType () + { + } + + + // AbstractEventType + // + // + namespace + { + TypeInfo + abstract_event_type_init_ () + { + TypeInfo ti (typeid (AbstractEventType)); + ti.add_base (Access::PUBLIC, true, EventType::static_type_info ()); + ti.add_base ( + Access::PUBLIC, true, AbstractValueType::static_type_info ()); + return ti; + } + + TypeInfo abstract_event_type_ (abstract_event_type_init_ ()); + } + + TypeInfo const& AbstractEventType:: + static_type_info () { return abstract_event_type_; } + + + // ConcreteEventType + // + // + namespace + { + TypeInfo + concrete_event_type_init_ () + { + TypeInfo ti (typeid (ConcreteEventType)); + ti.add_base (Access::PUBLIC, true, EventType::static_type_info ()); + ti.add_base ( + Access::PUBLIC, true, ConcreteValueType::static_type_info ()); + return ti; + } + + TypeInfo concrete_event_type_ (concrete_event_type_init_ ()); + } + + TypeInfo const& ConcreteEventType:: + static_type_info () { return concrete_event_type_; } + + + // EventTypeFactory + // + // + namespace + { + TypeInfo + event_type_factory_init_ () + { + TypeInfo ti (typeid (EventTypeFactory)); + ti.add_base ( + Access::PUBLIC, true, ValueTypeFactory::static_type_info ()); + return ti; + } + + TypeInfo event_type_factory_ (event_type_factory_init_ ()); + } + + TypeInfo const& EventTypeFactory:: + static_type_info () { return event_type_factory_; } + } + } +} diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.hpp new file mode 100644 index 00000000000..203ee321f66 --- /dev/null +++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.hpp @@ -0,0 +1,104 @@ +// file : CCF/IDL3/SemanticGraph/EventType.hpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#ifndef CCF_IDL3_SEMANTIC_GRAPH_EVENT_TYPE_HPP +#define CCF_IDL3_SEMANTIC_GRAPH_EVENT_TYPE_HPP + +#include "CCF/IDL2/SemanticGraph/ValueType.hpp" +#include "CCF/IDL3/SemanticGraph/Elements.hpp" + +namespace CCF +{ + namespace IDL3 + { + namespace SemanticGraph + { + // + // + // + class EventType : public virtual ValueType + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + EventType () // For virtual inheritance only. + { + type_info (static_type_info ()); + } + + virtual + ~EventType () = 0; + }; + + + // + // + // + class AbstractEventType : public virtual EventType, + public virtual AbstractValueType + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + AbstractEventType (Path const& path, unsigned long line) + : Node (path, line), AbstractValueType (path, line) + { + type_info (static_type_info ()); + } + }; + + + // + // + // + class ConcreteEventType : public virtual EventType, + public virtual ConcreteValueType + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + ConcreteEventType (Path const& path, unsigned long line) + : Node (path, line), ConcreteValueType (path, line) + { + type_info (static_type_info ()); + } + }; + + // + // + // + class EventTypeFactory : public virtual ValueTypeFactory + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + EventTypeFactory (Path const& path, unsigned long line) + : Node (path, line), + TwoWayOperation (path, line), + ValueTypeFactory (path, line) + { + type_info (static_type_info ()); + } + }; + } + } +} + +#endif // CCF_IDL3_SEMANTIC_GRAPH_EVENT_TYPE_HPP diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.cpp new file mode 100644 index 00000000000..deb3dacffa0 --- /dev/null +++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.cpp @@ -0,0 +1,79 @@ +// file : CCF/IDL3/SemanticGraph/Home.cpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#include "CCF/IDL3/SemanticGraph/Home.hpp" + +namespace CCF +{ + namespace IDL3 + { + namespace SemanticGraph + { + using Introspection::TypeInfo; + using Introspection::Access; + + // Home + // + // + namespace + { + TypeInfo + home_init_ () + { + TypeInfo ti (typeid (Home)); + ti.add_base (Access::PUBLIC, true, Type::static_type_info ()); + ti.add_base (Access::PUBLIC, true, Scope::static_type_info ()); + return ti; + } + + TypeInfo home_ (home_init_ ()); + } + + TypeInfo const& Home:: + static_type_info () { return home_; } + + + // HomeFactory + // + // + namespace + { + TypeInfo + home_factory_init_ () + { + TypeInfo ti (typeid (HomeFactory)); + ti.add_base ( + Access::PUBLIC, true, TwoWayOperation::static_type_info ()); + return ti; + } + + TypeInfo home_factory_ (home_factory_init_ ()); + } + + TypeInfo const& HomeFactory:: + static_type_info () { return home_factory_; } + + + // HomeFinder + // + // + namespace + { + TypeInfo + home_finder_init_ () + { + TypeInfo ti (typeid (HomeFinder)); + ti.add_base ( + Access::PUBLIC, true, TwoWayOperation::static_type_info ()); + return ti; + } + + TypeInfo home_finder_ (home_finder_init_ ()); + } + + TypeInfo const& HomeFinder:: + static_type_info () { return home_finder_; } + } + } +} diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.hpp new file mode 100644 index 00000000000..d243d468cbe --- /dev/null +++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.hpp @@ -0,0 +1,149 @@ +// file : CCF/IDL3/SemanticGraph/Home.hpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#ifndef CCF_IDL3_SEMANTIC_GRAPH_HOME_HPP +#define CCF_IDL3_SEMANTIC_GRAPH_HOME_HPP + +#include "CCF/IDL2/SemanticGraph/Operation.hpp" +#include "CCF/IDL3/SemanticGraph/Elements.hpp" +#include "CCF/IDL3/SemanticGraph/Component.hpp" + +namespace CCF +{ + namespace IDL3 + { + namespace SemanticGraph + { + // + // + // + class Home : public virtual Type, public virtual Scope + { + typedef + std::vector <Supports*> + Supports_; + + public: + Manages& + manages () const + { + return *manages_; + } + + Inherits* + inherits () const + { + return inherits_; + } + + typedef + Supports_::const_iterator + SupportsIterator; + + SupportsIterator + supports_begin () const + { + return supports_.begin (); + } + + SupportsIterator + supports_end () const + { + return supports_.end (); + } + + virtual bool + complete () const + { + return true; + } + + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + Home (Path const& path, unsigned long line) + : Node (path, line), inherits_ (0) + { + type_info (static_type_info ()); + } + + using Type::add_edge_right; + using Scope::add_edge_left; + + void + add_edge_left (Manages& e) + { + manages_ = &e; + } + + void + add_edge_left (Inherits& e) + { + inherits_ = &e; + } + + void + add_edge_right (Inherits&) + { + } + + void + add_edge_left (Supports& e) + { + supports_.push_back (&e); + } + + private: + Manages* manages_; + Inherits* inherits_; + Supports_ supports_; + }; + + + // + // + // + class HomeFactory : public virtual TwoWayOperation + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + HomeFactory (Path const& path, unsigned long line) + : Node (path, line), TwoWayOperation (path, line) + { + type_info (static_type_info ()); + } + }; + + + // + // + // + class HomeFinder : public virtual TwoWayOperation + { + public: + static Introspection::TypeInfo const& + static_type_info (); + + protected: + friend class Graph<Node, Edge>; + + HomeFinder (Path const& path, unsigned long line) + : Node (path, line), TwoWayOperation (path, line) + { + type_info (static_type_info ()); + } + }; + } + } +} + +#endif // CCF_IDL3_SEMANTIC_GRAPH_HOME_HPP |