From 900cdb2da86c6a9c523bac093aef482a1f1033e3 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 7 May 2012 09:35:54 +0200 Subject: Get rid of dependency on libfrontend-elements Use libcutl facilities instead. --- xsd-frontend/traversal/attribute.cxx | 2 +- xsd-frontend/traversal/attribute.hxx | 2 +- xsd-frontend/traversal/complex.cxx | 4 +- xsd-frontend/traversal/complex.hxx | 4 +- xsd-frontend/traversal/compositors.cxx | 8 +- xsd-frontend/traversal/compositors.hxx | 8 +- xsd-frontend/traversal/element-group.cxx | 2 +- xsd-frontend/traversal/element-group.hxx | 2 +- xsd-frontend/traversal/element.cxx | 2 +- xsd-frontend/traversal/element.hxx | 2 +- xsd-frontend/traversal/elements.cxx | 4 +- xsd-frontend/traversal/elements.hxx | 150 +++++++++---------------------- xsd-frontend/traversal/enumeration.cxx | 4 +- xsd-frontend/traversal/enumeration.hxx | 4 +- xsd-frontend/traversal/list.cxx | 2 +- xsd-frontend/traversal/list.hxx | 2 +- xsd-frontend/traversal/union.cxx | 2 +- xsd-frontend/traversal/union.hxx | 2 +- 18 files changed, 70 insertions(+), 136 deletions(-) (limited to 'xsd-frontend/traversal') diff --git a/xsd-frontend/traversal/attribute.cxx b/xsd-frontend/traversal/attribute.cxx index 00344b6..f94aec4 100644 --- a/xsd-frontend/traversal/attribute.cxx +++ b/xsd-frontend/traversal/attribute.cxx @@ -24,7 +24,7 @@ namespace XSDFrontend } Void Attribute:: - belongs (Type& a, EdgeDispatcherBase& d) + belongs (Type& a, EdgeDispatcher& d) { d.dispatch (a.belongs ()); } diff --git a/xsd-frontend/traversal/attribute.hxx b/xsd-frontend/traversal/attribute.hxx index bc36a86..e04df75 100644 --- a/xsd-frontend/traversal/attribute.hxx +++ b/xsd-frontend/traversal/attribute.hxx @@ -24,7 +24,7 @@ namespace XSDFrontend pre (Type&); virtual Void - belongs (Type&, EdgeDispatcherBase&); + belongs (Type&, EdgeDispatcher&); virtual Void belongs (Type&); diff --git a/xsd-frontend/traversal/complex.cxx b/xsd-frontend/traversal/complex.cxx index b014812..9a07382 100644 --- a/xsd-frontend/traversal/complex.cxx +++ b/xsd-frontend/traversal/complex.cxx @@ -37,7 +37,7 @@ namespace XSDFrontend } Void Complex:: - inherits (Type& c, EdgeDispatcherBase& d) + inherits (Type& c, EdgeDispatcher& d) { if (c.inherits_p ()) d.dispatch (c.inherits ()); @@ -50,7 +50,7 @@ namespace XSDFrontend } Void Complex:: - contains_compositor (Type& c, EdgeDispatcherBase& d) + contains_compositor (Type& c, EdgeDispatcher& d) { if (c.contains_compositor_p ()) d.dispatch (c.contains_compositor ()); diff --git a/xsd-frontend/traversal/complex.hxx b/xsd-frontend/traversal/complex.hxx index 5f1e38f..21f42ef 100644 --- a/xsd-frontend/traversal/complex.hxx +++ b/xsd-frontend/traversal/complex.hxx @@ -28,13 +28,13 @@ namespace XSDFrontend inherits (Type&); Void - inherits (Type&, EdgeDispatcherBase&); + inherits (Type&, EdgeDispatcher&); virtual Void contains_compositor (Type&); Void - contains_compositor (Type&, EdgeDispatcherBase&); + contains_compositor (Type&, EdgeDispatcher&); virtual Void post (Type&); diff --git a/xsd-frontend/traversal/compositors.cxx b/xsd-frontend/traversal/compositors.cxx index 0de3819..c68e7a7 100644 --- a/xsd-frontend/traversal/compositors.cxx +++ b/xsd-frontend/traversal/compositors.cxx @@ -50,7 +50,7 @@ namespace XSDFrontend } Void Compositor:: - contains (Type& c, EdgeDispatcherBase& d) + contains (Type& c, EdgeDispatcher& d) { iterate_and_dispatch (c.contains_begin (), c.contains_end (), d); } @@ -84,7 +84,7 @@ namespace XSDFrontend } Void All:: - contains (Type& c, EdgeDispatcherBase& d) + contains (Type& c, EdgeDispatcher& d) { iterate_and_dispatch (c.contains_begin (), c.contains_end (), d); } @@ -118,7 +118,7 @@ namespace XSDFrontend } Void Choice:: - contains (Type& c, EdgeDispatcherBase& d) + contains (Type& c, EdgeDispatcher& d) { iterate_and_dispatch (c.contains_begin (), c.contains_end (), d); } @@ -152,7 +152,7 @@ namespace XSDFrontend } Void Sequence:: - contains (Type& c, EdgeDispatcherBase& d) + contains (Type& c, EdgeDispatcher& d) { iterate_and_dispatch (c.contains_begin (), c.contains_end (), d); } diff --git a/xsd-frontend/traversal/compositors.hxx b/xsd-frontend/traversal/compositors.hxx index a6c9cec..5e099e4 100644 --- a/xsd-frontend/traversal/compositors.hxx +++ b/xsd-frontend/traversal/compositors.hxx @@ -62,7 +62,7 @@ namespace XSDFrontend contains (Type&); virtual Void - contains (Type&, EdgeDispatcherBase&); + contains (Type&, EdgeDispatcher&); virtual Void post (Type&); @@ -83,7 +83,7 @@ namespace XSDFrontend contains (Type&); virtual Void - contains (Type&, EdgeDispatcherBase&); + contains (Type&, EdgeDispatcher&); virtual Void post (Type&); @@ -104,7 +104,7 @@ namespace XSDFrontend contains (Type&); virtual Void - contains (Type&, EdgeDispatcherBase&); + contains (Type&, EdgeDispatcher&); virtual Void post (Type&); @@ -125,7 +125,7 @@ namespace XSDFrontend contains (Type&); virtual Void - contains (Type&, EdgeDispatcherBase&); + contains (Type&, EdgeDispatcher&); virtual Void post (Type&); diff --git a/xsd-frontend/traversal/element-group.cxx b/xsd-frontend/traversal/element-group.cxx index 2129272..1658074 100644 --- a/xsd-frontend/traversal/element-group.cxx +++ b/xsd-frontend/traversal/element-group.cxx @@ -24,7 +24,7 @@ namespace XSDFrontend } Void ElementGroup:: - contains_compositor (Type& g, EdgeDispatcherBase& d) + contains_compositor (Type& g, EdgeDispatcher& d) { d.dispatch (g.contains_compositor ()); } diff --git a/xsd-frontend/traversal/element-group.hxx b/xsd-frontend/traversal/element-group.hxx index ef5bd84..56ddc0f 100644 --- a/xsd-frontend/traversal/element-group.hxx +++ b/xsd-frontend/traversal/element-group.hxx @@ -25,7 +25,7 @@ namespace XSDFrontend contains_compositor (Type&); virtual Void - contains_compositor (Type&, EdgeDispatcherBase&); + contains_compositor (Type&, EdgeDispatcher&); virtual Void post (Type&); diff --git a/xsd-frontend/traversal/element.cxx b/xsd-frontend/traversal/element.cxx index 26ed784..62e5ee8 100644 --- a/xsd-frontend/traversal/element.cxx +++ b/xsd-frontend/traversal/element.cxx @@ -24,7 +24,7 @@ namespace XSDFrontend } Void Element:: - belongs (Type& m, EdgeDispatcherBase& d) + belongs (Type& m, EdgeDispatcher& d) { d.dispatch (m.belongs ()); } diff --git a/xsd-frontend/traversal/element.hxx b/xsd-frontend/traversal/element.hxx index c77dd1d..3e54950 100644 --- a/xsd-frontend/traversal/element.hxx +++ b/xsd-frontend/traversal/element.hxx @@ -22,7 +22,7 @@ namespace XSDFrontend pre (Type&); virtual Void - belongs (Type&, EdgeDispatcherBase&); + belongs (Type&, EdgeDispatcher&); virtual Void belongs (Type&); diff --git a/xsd-frontend/traversal/elements.cxx b/xsd-frontend/traversal/elements.cxx index 84d076a..f8bc283 100644 --- a/xsd-frontend/traversal/elements.cxx +++ b/xsd-frontend/traversal/elements.cxx @@ -25,7 +25,7 @@ namespace XSDFrontend } Void Instance:: - belongs (Type& a, EdgeDispatcherBase& d) + belongs (Type& a, EdgeDispatcher& d) { d.dispatch (a.belongs ()); } @@ -58,7 +58,7 @@ namespace XSDFrontend } Void Member:: - belongs (Type& a, EdgeDispatcherBase& d) + belongs (Type& a, EdgeDispatcher& d) { d.dispatch (a.belongs ()); } diff --git a/xsd-frontend/traversal/elements.hxx b/xsd-frontend/traversal/elements.hxx index 3acb0b5..35604e8 100644 --- a/xsd-frontend/traversal/elements.hxx +++ b/xsd-frontend/traversal/elements.hxx @@ -8,7 +8,7 @@ #include -#include +#include #include @@ -16,150 +16,85 @@ namespace XSDFrontend { namespace Traversal { + using namespace cutl; using namespace Cult::Types; - namespace Bits - { - using FrontendElements::Traversal::TraverserBase; - using FrontendElements::Traversal::Traverser; - - using FrontendElements::Traversal::DispatcherBase; - using FrontendElements::Traversal::Dispatcher; - - } - - typedef Bits::DispatcherBase NodeDispatcherBase; - typedef Bits::DispatcherBase EdgeDispatcherBase; - + typedef compiler::dispatcher NodeDispatcher; + typedef compiler::dispatcher EdgeDispatcher; // // - struct NodeBase : virtual Bits::Dispatcher, - virtual Bits::Dispatcher + struct NodeBase: NodeDispatcher, EdgeDispatcher { Void - edge_traverser (EdgeDispatcherBase& d) + edge_traverser (EdgeDispatcher& d) { - Bits::Dispatcher::traverser (d); + EdgeDispatcher::traverser (d); } - EdgeDispatcherBase& + EdgeDispatcher& edge_traverser () { return *this; } - public: - using Bits::Dispatcher::dispatch; - using Bits::Dispatcher::dispatch; - - using Bits::Dispatcher::map; - - using Bits::Dispatcher::iterate_and_dispatch; - }; - - - // - // - template - struct Node : Bits::TraverserBase, virtual NodeBase - { - typedef - T - Type; - - Node () - { - map (typeid (Type), *this); - } - - virtual Void - traverse (Type&) = 0; - - virtual Void - trampoline (SemanticGraph::Node& i) - { - traverse (dynamic_cast (i)); - } + using NodeDispatcher::dispatch; + using EdgeDispatcher::dispatch; - virtual Void - trampoline (SemanticGraph::Node const&) - { - abort (); - } + using EdgeDispatcher::iterate_and_dispatch; }; - - // - // - struct EdgeBase : virtual Bits::Dispatcher, - virtual Bits::Dispatcher + struct EdgeBase: EdgeDispatcher, NodeDispatcher { Void - node_traverser (NodeDispatcherBase& d) + node_traverser (NodeDispatcher& d) { - Bits::Dispatcher::traverser (d); + NodeDispatcher::traverser (d); } - NodeDispatcherBase& + NodeDispatcher& node_traverser () { return *this; } - public: - using Bits::Dispatcher::dispatch; - using Bits::Dispatcher::dispatch; - - using Bits::Dispatcher::map; - - using Bits::Dispatcher::iterate_and_dispatch; - }; - - template - struct Edge : Bits::TraverserBase, virtual EdgeBase - { - typedef - T - Type; - - Edge () - { - map (typeid (Type), *this); - } - - virtual Void - traverse (Type&) = 0; - - virtual Void - trampoline (SemanticGraph::Edge& i) - { - traverse (dynamic_cast (i)); - } + using EdgeDispatcher::dispatch; + using NodeDispatcher::dispatch; - virtual Void - trampoline (SemanticGraph::Edge const&) - { - abort (); - } + using NodeDispatcher::iterate_and_dispatch; }; - inline - EdgeBase& + inline EdgeBase& operator>> (NodeBase& n, EdgeBase& e) { n.edge_traverser (e); return e; } - inline - NodeBase& + inline NodeBase& operator>> (EdgeBase& e, NodeBase& n) { e.node_traverser (n); return n; } + // + // + template + struct Node: compiler::traverser_impl, + virtual NodeBase + { + typedef T Type; + }; + + template + struct Edge: compiler::traverser_impl, + virtual EdgeBase + { + typedef T Type; + }; + + // // Edges // @@ -204,11 +139,10 @@ namespace XSDFrontend } }; - + // // Nodes // - // // struct Nameable : Node @@ -231,7 +165,7 @@ namespace XSDFrontend template Void names (T& s, - EdgeDispatcherBase& d, + EdgeDispatcher& d, Void (X::*pre_) (T&) = (Void (ScopeTemplate::*)(T&)) (0), Void (X::*post_) (T&) = (Void (ScopeTemplate::*)(T&)) (0), Void (X::*none_) (T&) = (Void (ScopeTemplate::*)(T&)) (0), @@ -267,7 +201,7 @@ namespace XSDFrontend } virtual Void - names (T& s, EdgeDispatcherBase& d) + names (T& s, EdgeDispatcher& d) { names > (s, d); } @@ -332,7 +266,7 @@ namespace XSDFrontend pre (Type&); virtual Void - belongs (Type&, EdgeDispatcherBase&); + belongs (Type&, EdgeDispatcher&); virtual Void belongs (Type&); @@ -353,7 +287,7 @@ namespace XSDFrontend pre (Type&); virtual Void - belongs (Type&, EdgeDispatcherBase&); + belongs (Type&, EdgeDispatcher&); virtual Void belongs (Type&); diff --git a/xsd-frontend/traversal/enumeration.cxx b/xsd-frontend/traversal/enumeration.cxx index 4ba10eb..9dfae89 100644 --- a/xsd-frontend/traversal/enumeration.cxx +++ b/xsd-frontend/traversal/enumeration.cxx @@ -38,7 +38,7 @@ namespace XSDFrontend } Void Enumeration:: - inherits (Type& e, EdgeDispatcherBase& d) + inherits (Type& e, EdgeDispatcher& d) { if (e.inherits_p ()) d.dispatch (e.inherits ()); @@ -67,7 +67,7 @@ namespace XSDFrontend } Void Enumerator:: - belongs (Type& e, EdgeDispatcherBase& d) + belongs (Type& e, EdgeDispatcher& d) { d.dispatch (e.belongs ()); } diff --git a/xsd-frontend/traversal/enumeration.hxx b/xsd-frontend/traversal/enumeration.hxx index c1f2b08..f8aeaf7 100644 --- a/xsd-frontend/traversal/enumeration.hxx +++ b/xsd-frontend/traversal/enumeration.hxx @@ -28,7 +28,7 @@ namespace XSDFrontend inherits (Type&); Void - inherits (Type&, EdgeDispatcherBase&); + inherits (Type&, EdgeDispatcher&); virtual Void post (Type&); @@ -43,7 +43,7 @@ namespace XSDFrontend pre (Type&); virtual Void - belongs (Type&, EdgeDispatcherBase&); + belongs (Type&, EdgeDispatcher&); virtual Void belongs (Type&); diff --git a/xsd-frontend/traversal/list.cxx b/xsd-frontend/traversal/list.cxx index 08186a8..523a43c 100644 --- a/xsd-frontend/traversal/list.cxx +++ b/xsd-frontend/traversal/list.cxx @@ -30,7 +30,7 @@ namespace XSDFrontend } Void List:: - argumented (Type& l, EdgeDispatcherBase& d) + argumented (Type& l, EdgeDispatcher& d) { d.dispatch (l.argumented ()); } diff --git a/xsd-frontend/traversal/list.hxx b/xsd-frontend/traversal/list.hxx index d750f17..6105de8 100644 --- a/xsd-frontend/traversal/list.hxx +++ b/xsd-frontend/traversal/list.hxx @@ -25,7 +25,7 @@ namespace XSDFrontend argumented (Type&); virtual Void - argumented (Type&, EdgeDispatcherBase& d); + argumented (Type&, EdgeDispatcher& d); virtual Void name (Type&); diff --git a/xsd-frontend/traversal/union.cxx b/xsd-frontend/traversal/union.cxx index fbee353..26522ec 100644 --- a/xsd-frontend/traversal/union.cxx +++ b/xsd-frontend/traversal/union.cxx @@ -30,7 +30,7 @@ namespace XSDFrontend } Void Union:: - argumented (Type& u, EdgeDispatcherBase& d) + argumented (Type& u, EdgeDispatcher& d) { iterate_and_dispatch (u.argumented_begin (), u.argumented_end (), d); } diff --git a/xsd-frontend/traversal/union.hxx b/xsd-frontend/traversal/union.hxx index dd2b195..fe79929 100644 --- a/xsd-frontend/traversal/union.hxx +++ b/xsd-frontend/traversal/union.hxx @@ -25,7 +25,7 @@ namespace XSDFrontend argumented (Type&); virtual Void - argumented (Type&, EdgeDispatcherBase& d); + argumented (Type&, EdgeDispatcher& d); virtual Void name (Type&); -- cgit v1.1