// file : odb/traversal/derived.hxx // author : Boris Kolpackov // copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC // license : GNU GPL v3; see accompanying LICENSE file #ifndef ODB_TRAVERSAL_DERIVED_HXX #define ODB_TRAVERSAL_DERIVED_HXX #include #include namespace traversal { // // Edges. // struct qualifies: edge { qualifies () { } qualifies (node_dispatcher& n) { node_traverser (n); } virtual void traverse (type&); }; struct points: edge { points () { } points (node_dispatcher& n) { node_traverser (n); } virtual void traverse (type&); }; struct references: edge { references () { } references (node_dispatcher& n) { node_traverser (n); } virtual void traverse (type&); }; struct contains: edge { contains () { } contains (node_dispatcher& n) { node_traverser (n); } virtual void traverse (type&); }; // // Nodes. // struct derived_type: node {}; struct qualifier: node { virtual void traverse (type&); virtual void qualifies (type&); virtual void qualifies (type&, edge_dispatcher&); }; struct pointer: node { virtual void traverse (type&); virtual void points (type&); virtual void points (type&, edge_dispatcher&); }; struct reference: node { virtual void traverse (type&); virtual void references (type&); virtual void references (type&, edge_dispatcher&); }; struct array: node { virtual void traverse (type&); virtual void contains (type&); virtual void contains (type&, edge_dispatcher&); }; } #endif // ODB_TRAVERSAL_DERIVED_HXX