summaryrefslogtreecommitdiff
path: root/libcutl/tests/compiler/traversal/driver.cxx
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2024-03-06 10:24:46 +0100
committerJörg Frings-Fürst <debian@jff.email>2024-03-06 10:24:46 +0100
commit372a0e99c2f61543d9e14d9933b59d9d1f4cb26e (patch)
treebbadf39aed0610c8f8f7b41fefff47773b8ac205 /libcutl/tests/compiler/traversal/driver.cxx
parent23d41842168ac1a1580111b9c5c73500ceee3d57 (diff)
parent4538829ab86b5a1cd4e845e7eab165029c9d6d46 (diff)
Merge branch 'feature/upstream' into develop
Diffstat (limited to 'libcutl/tests/compiler/traversal/driver.cxx')
-rw-r--r--libcutl/tests/compiler/traversal/driver.cxx139
1 files changed, 0 insertions, 139 deletions
diff --git a/libcutl/tests/compiler/traversal/driver.cxx b/libcutl/tests/compiler/traversal/driver.cxx
deleted file mode 100644
index b1fea74..0000000
--- a/libcutl/tests/compiler/traversal/driver.cxx
+++ /dev/null
@@ -1,139 +0,0 @@
-// file : tests/compiler/traversal/driver.cxx
-// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC
-// license : MIT; see accompanying LICENSE file
-
-#include <vector>
-#include <iostream>
-
-#include <cutl/shared-ptr.hxx>
-
-#include <cutl/compiler/type-info.hxx>
-#include <cutl/compiler/traversal.hxx>
-
-using namespace std;
-using namespace cutl;
-
-// Data types.
-//
-struct base
-{
- virtual ~base () {}
-};
-
-struct derived1: base {};
-struct derived2: base {};
-
-typedef vector<shared_ptr<base> > objects;
-
-struct init
-{
- init ()
- {
- using compiler::type_info;
-
- {
- type_info ti (typeid (base));
- insert (ti);
- }
-
- {
- type_info ti (typeid (derived1));
- ti.add_base (typeid (base));
- insert (ti);
- }
-
- {
- type_info ti (typeid (derived2));
- ti.add_base (typeid (base));
- insert (ti);
- }
- }
-} init_;
-
-// Traversers.
-//
-template <typename X>
-struct traverser: compiler::traverser_impl<X, base>,
- virtual compiler::dispatcher<base>
-{
- void
- add_traverser (compiler::traverser_map<base>& m)
- {
- compiler::dispatcher<base>::traverser (m);
- }
-};
-
-typedef traverser<base> base_trav;
-typedef traverser<derived1> derived1_trav;
-typedef traverser<derived2> derived2_trav;
-
-struct base_impl: base_trav
-{
- virtual void
- traverse (type&)
- {
- cout << "base_impl: base" << endl;
- }
-};
-
-struct derived1_impl: derived1_trav
-{
- virtual void
- traverse (type&)
- {
- cout << "derived1_impl: derived1" << endl;
- }
-};
-
-struct combined_impl: derived1_trav, derived2_trav
-{
- virtual void
- traverse (derived1&)
- {
- cout << "combined_impl: derived1" << endl;
- }
-
- virtual void
- traverse (derived2&)
- {
- cout << "combined_impl: derived2" << endl;
- }
-};
-
-int
-main ()
-{
- objects o;
- o.push_back (shared_ptr<base> (new (shared) base));
- o.push_back (shared_ptr<base> (new (shared) derived1));
- o.push_back (shared_ptr<base> (new (shared) derived2));
-
- base_impl base;
- derived1_impl derived1;
- combined_impl combined;
-
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- base.dispatch (**i);
-
- cout << endl;
-
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- derived1.dispatch (**i);
-
- cout << endl;
-
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- combined.dispatch (**i);
-
- cout << endl;
-
- base.add_traverser (derived1);
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- base.dispatch (**i);
-
- cout << endl;
-
- derived1.add_traverser (combined);
- for (objects::iterator i (o.begin ()); i != o.end (); ++i)
- derived1.dispatch (**i);
-}