summaryrefslogtreecommitdiff
path: root/TAO/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp')
-rw-r--r--TAO/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp198
1 files changed, 0 insertions, 198 deletions
diff --git a/TAO/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp b/TAO/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp
deleted file mode 100644
index 4fbd1ee242b..00000000000
--- a/TAO/CIAO/DAnCE/Config_Handlers/XSCRT/Traversal.hpp
+++ /dev/null
@@ -1,198 +0,0 @@
-// file : XSCRT/Traversal.hpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef XSCRT_TRAVERSAL_HPP
-#define XSCRT_TRAVERSAL_HPP
-
-#include <map>
-#include <set>
-#include <vector>
-
-#include "XSCRT/ExtendedTypeInfo.hpp"
-
-namespace XSCRT
-{
- namespace Traversal
- {
- //
- //
- //
- template<typename B>
- class TraverserBase
- {
- protected:
- virtual
- ~TraverserBase ();
-
- //@@ VC6
- public:
- virtual void
- trampoline (B& n) = 0;
-
- /*@@ VC6
- template <typename X>
- friend class DispatcherBase;
- */
- };
-
-
- //
- //
- //
- template <typename B>
- class DispatcherBase
- {
- public:
- virtual
- ~DispatcherBase ();
-
- virtual void
- dispatch (B& n);
-
- void
- map (TypeId id, TraverserBase<B>& t)
- {
- //@@ VC6
- Traversers& traversers = traversal_map_[id];
- traversers.push_back (&t);
- }
-
- public:
- typedef
- std::vector<TraverserBase<B>*>
- Traversers;
-
- typedef
- std::map<TypeId, Traversers>
- TraversalMap;
-
- typedef
- typename TraversalMap::const_iterator
- Iterator;
-
- Iterator
- begin () const
- {
- return traversal_map_.begin ();
- }
-
- Iterator
- end () const
- {
- return traversal_map_.end ();
- }
-
- private:
- struct TypeInfoComparator
- {
- bool
- operator () (ExtendedTypeInfo const& x,
- ExtendedTypeInfo const& y) const
- {
- return x.type_id () < y.type_id ();
- }
- };
-
- typedef
- std::map<ExtendedTypeInfo, unsigned long, TypeInfoComparator>
- LevelMap;
-
- typedef
- std::set<ExtendedTypeInfo, TypeInfoComparator>
- TypeInfoSet;
-
- static unsigned long
- compute_levels (ExtendedTypeInfo const& ti,
- unsigned long cur,
- LevelMap& map);
-
- static void
- flatten_tree (ExtendedTypeInfo const& ti, TypeInfoSet& set);
-
- private:
- TraversalMap traversal_map_;
- };
-
-
- //
- //
- //
- template <typename B>
- class Dispatcher : public virtual DispatcherBase<B>
- {
- public:
- void
- traverser (Dispatcher& d)
- {
- for (typename DispatcherBase<B>::Iterator
- i (d.begin ()), end (d.end ());
- i != end; ++i)
- {
- for (typename DispatcherBase<B>::Traversers::const_iterator
- t (i->second.begin ()), end (i->second.end ());
- t != end; ++t)
- {
- dispatcher_.map (i->first, **t);
- }
- }
- }
-
- protected:
- DispatcherBase<B>&
- traverser ()
- {
- return dispatcher_;
- }
-
- template <typename I>
- void
- iterate_and_dispatch (I begin, I end)
- {
- for (; begin != end; ++begin)
- {
- traverser ().dispatch (*begin);
- }
- }
-
- private:
- DispatcherBase<B> dispatcher_;
- };
-
-
-
- //
- //
- //
- template <typename T, typename B>
- struct Traverser : TraverserBase<B>, virtual Dispatcher<B>
- {
- typedef
- T
- Type;
-
- Traverser ()
- {
- map (typeid (Type), *this);
- }
-
- virtual void
- traverse (Type&) = 0;
-
- protected:
- virtual void
- trampoline (B& n)
- {
- //cerr << "trampoline for " << &n << " to type "
- // << typeid (Type).name () << endl;
-
- traverse (dynamic_cast<Type&> (n));
- }
- };
- }
-}
-
-#include "XSCRT/Traversal.ipp"
-#include "XSCRT/Traversal.tpp"
-
-#endif // XSCRT_TRAVERSAL_HPP