diff options
Diffstat (limited to 'libxsd-frontend/xsd-frontend/traversal/compositors.cxx')
| -rw-r--r-- | libxsd-frontend/xsd-frontend/traversal/compositors.cxx | 164 | 
1 files changed, 164 insertions, 0 deletions
| diff --git a/libxsd-frontend/xsd-frontend/traversal/compositors.cxx b/libxsd-frontend/xsd-frontend/traversal/compositors.cxx new file mode 100644 index 0000000..f2b3dcd --- /dev/null +++ b/libxsd-frontend/xsd-frontend/traversal/compositors.cxx @@ -0,0 +1,164 @@ +// file      : xsd-frontend/traversal/compositors.cxx +// copyright : Copyright (c) 2006-2014 Code Synthesis Tools CC +// license   : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#include <xsd-frontend/traversal/compositors.hxx> + +namespace XSDFrontend +{ +  namespace Traversal +  { +    // ContainsParticle +    // +    void ContainsParticle:: +    traverse (Type& c) +    { +      dispatch (c.particle ()); +    } + + +    // ContainsCompositor +    // +    void ContainsCompositor:: +    traverse (Type& c) +    { +      dispatch (c.compositor ()); +    } + + +    // Compositor +    // +    void Compositor:: +    traverse (Type& c) +    { +      pre (c); +      contains (c); +      post (c); +    } + +    void Compositor:: +    pre (Type&) +    { +    } + +    void Compositor:: +    contains (Type& c) +    { +      iterate_and_dispatch ( +        c.contains_begin (), c.contains_end (), edge_traverser ()); +    } + +    void Compositor:: +    contains (Type& c, EdgeDispatcher& d) +    { +      iterate_and_dispatch (c.contains_begin (), c.contains_end (), d); +    } + +    void Compositor:: +    post (Type&) +    { +    } + + +    // All +    // +    void All:: +    traverse (Type& c) +    { +      pre (c); +      contains (c); +      post (c); +    } + +    void All:: +    pre (Type&) +    { +    } + +    void All:: +    contains (Type& c) +    { +      iterate_and_dispatch ( +        c.contains_begin (), c.contains_end (), edge_traverser ()); +    } + +    void All:: +    contains (Type& c, EdgeDispatcher& d) +    { +      iterate_and_dispatch (c.contains_begin (), c.contains_end (), d); +    } + +    void All:: +    post (Type&) +    { +    } + + +    // Choice +    // +    void Choice:: +    traverse (Type& c) +    { +      pre (c); +      contains (c); +      post (c); +    } + +    void Choice:: +    pre (Type&) +    { +    } + +    void Choice:: +    contains (Type& c) +    { +      iterate_and_dispatch ( +        c.contains_begin (), c.contains_end (), edge_traverser ()); +    } + +    void Choice:: +    contains (Type& c, EdgeDispatcher& d) +    { +      iterate_and_dispatch (c.contains_begin (), c.contains_end (), d); +    } + +    void Choice:: +    post (Type&) +    { +    } + + +    // Sequence +    // +    void Sequence:: +    traverse (Type& c) +    { +      pre (c); +      contains (c); +      post (c); +    } + +    void Sequence:: +    pre (Type&) +    { +    } + +    void Sequence:: +    contains (Type& c) +    { +      iterate_and_dispatch ( +        c.contains_begin (), c.contains_end (), edge_traverser ()); +    } + +    void Sequence:: +    contains (Type& c, EdgeDispatcher& d) +    { +      iterate_and_dispatch (c.contains_begin (), c.contains_end (), d); +    } + +    void Sequence:: +    post (Type&) +    { +    } +  } +} | 
