summaryrefslogtreecommitdiff
path: root/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp')
-rw-r--r--CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp386
1 files changed, 0 insertions, 386 deletions
diff --git a/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp b/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp
deleted file mode 100644
index 2b6697abae9..00000000000
--- a/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp
+++ /dev/null
@@ -1,386 +0,0 @@
-// file : CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef CDD_TRAVERSAL_HPP
-#define CDD_TRAVERSAL_HPP
-
-#include <map>
-#include <vector>
-
-#include "CCF/CompilerElements/Introspection.hpp"
-
-#include "SyntaxTree.hpp"
-
-namespace CDD
-{
- namespace Traversal
- {
- //
- //
- //
- class TraverserInterface
- {
- protected:
- virtual
- ~TraverserInterface ()
- {
- }
-
- virtual void
- traverse (SyntaxTree::NodePtr const& n) = 0;
-
- friend class Dispatcher;
- };
-
-
- //
- //
- //
- class Dispatcher
- {
- public:
- virtual
- ~Dispatcher ()
- {
- }
-
- virtual void
- dispatch (SyntaxTree::NodePtr const& n);
-
- protected:
-
- class Ambiguous {};
-
- void
- map (Introspection::TypeId id,
- TraverserInterface* t,
- bool suppress_ambiguity = false)
- throw (Ambiguous)
- {
- if (!traversal_map_.insert (std::make_pair (id, t)).second)
- {
- if (suppress_ambiguity)
- {
- traversal_map_[id].suppressed = true;
- }
- else
- {
- throw Ambiguous ();
- }
- }
- }
-
- private:
-
- struct TraverserDescriptor
- {
- TraverserDescriptor (TraverserInterface* t = 0)
- : traverser (t),
- suppressed (false)
- {
- }
-
- TraverserInterface* traverser;
- bool suppressed;
- };
-
- typedef
- std::map<Introspection::TypeId, TraverserDescriptor>
- TraversalMap;
-
- public:
- typedef
- TraversalMap::const_iterator
- Iterator;
-
- Iterator
- begin () const
- {
- return traversal_map_.begin ();
- }
-
- Iterator
- end () const
- {
- return traversal_map_.end ();
- }
-
- private:
- TraversalMap traversal_map_;
- };
-
-
- //
- //
- //
- class Discriminator : public virtual Dispatcher
- {
- public:
- virtual void
- add (Dispatcher* d) throw (Ambiguous)
- {
- for (Iterator i = d->begin (); i != d->end (); i++)
- {
- map (i->first, i->second.traverser, true);
- }
- }
- };
-
-
- //
- //
- //
- class Traverser : public TraverserInterface,
- public virtual Dispatcher
- {
- public:
- virtual void
- add_delegate (Dispatcher* d)
- {
- delegates_.push_back (d);
- }
-
- protected:
- virtual bool
- delegate (SyntaxTree::NodePtr const& n) const
- {
- if (delegates_.empty ()) return false;
-
- for (DispatcherList::const_iterator i = delegates_.begin ();
- i != delegates_.end ();
- i++)
- {
- (*i)->dispatch (n);
- }
-
- return true;
- }
-
- protected:
- typedef
- std::vector<Dispatcher*>
- DispatcherList;
-
- DispatcherList delegates_;
- };
-
-
- //
- //
- //
- struct PortInstance : Traverser
- {
- typedef
- SyntaxTree::PortInstancePtr
- NodePtr;
-
- PortInstance ()
- {
- map (typeid (SyntaxTree::PortInstance), this);
- }
-
- virtual void
- traverse (SyntaxTree::NodePtr const& n)
- {
- traverse (n->dynamic_type<SyntaxTree::PortInstance> ());
- }
-
- virtual void
- traverse (NodePtr const& n)
- {
- delegate (n);
- }
- };
-
-
- //
- //
- //
- struct ComponentInstance : Traverser
- {
- public:
-
- virtual void
- add_port_delegate (Dispatcher* d)
- {
- port_delegates_.push_back (d);
- }
-
- public:
- typedef
- SyntaxTree::ComponentInstancePtr
- NodePtr;
-
- ComponentInstance ()
- {
- map (typeid (SyntaxTree::ComponentInstance), this);
- }
-
- virtual void
- traverse (SyntaxTree::NodePtr const& n)
- {
- traverse (n->dynamic_type<SyntaxTree::ComponentInstance> ());
- }
-
- virtual void
- traverse (NodePtr const& n)
- {
- if (!delegate (n))
- {
- pre (n);
- ports (n);
- post (n);
- }
- }
-
- virtual void
- pre (NodePtr const&)
- {
- }
-
- virtual void
- ports (NodePtr const& n)
- {
- delegate_port (n);
- }
-
- virtual void
- post (NodePtr const&)
- {
- }
-
- protected:
- virtual void
- delegate_port (NodePtr const& s)
- {
- for (SyntaxTree::ComponentInstance::Iterator n = s->begin ();
- n != s->end ();
- n++)
- {
- dispatch (*n);
-
- for (DispatcherList::const_iterator i = port_delegates_.begin ();
- i != port_delegates_.end ();
- i++)
- {
- (*i)->dispatch (*n);
- }
- }
- }
-
- protected:
- DispatcherList port_delegates_;
- };
-
-
- //
- //
- //
- struct Connection : Traverser
- {
- typedef
- SyntaxTree::ConnectionPtr
- NodePtr;
-
- Connection ()
- {
- map (typeid (SyntaxTree::Connection), this);
- }
-
- virtual void
- traverse (SyntaxTree::NodePtr const& n)
- {
- traverse (n->dynamic_type<SyntaxTree::Connection> ());
- }
-
- virtual void
- traverse (NodePtr const& n)
- {
- delegate (n);
- }
- };
-
-
- //
- //
- //
- struct Descriptor : Traverser
- {
- public:
-
- virtual void
- add_node_delegate (Dispatcher* d)
- {
- node_delegates_.push_back (d);
- }
-
- public:
- typedef
- SyntaxTree::DescriptorPtr
- NodePtr;
-
- Descriptor ()
- {
- map (typeid (SyntaxTree::Descriptor), this);
- }
-
- virtual void
- traverse (SyntaxTree::NodePtr const& n)
- {
- traverse (n->dynamic_type<SyntaxTree::Descriptor> ());
- }
-
- virtual void
- traverse (NodePtr const& n)
- {
- if (!delegate (n))
- {
- pre (n);
- ports (n);
- post (n);
- }
- }
-
- virtual void
- pre (NodePtr const&)
- {
- }
-
- virtual void
- ports (NodePtr const& n)
- {
- delegate_node (n);
- }
-
- virtual void
- post (NodePtr const&)
- {
- }
-
- protected:
- virtual void
- delegate_node (NodePtr const& s)
- {
- for (SyntaxTree::Descriptor::Iterator n = s->begin ();
- n != s->end ();
- n++)
- {
- dispatch (*n);
-
- for (DispatcherList::const_iterator i = node_delegates_.begin ();
- i != node_delegates_.end ();
- i++)
- {
- (*i)->dispatch (*n);
- }
- }
- }
-
- protected:
- DispatcherList node_delegates_;
- };
- }
-}
-
-#endif // CDD_TRAVERSAL_HPP