summaryrefslogtreecommitdiff
path: root/modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp')
-rw-r--r--modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp b/modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp
new file mode 100644
index 00000000000..94c499e1a9d
--- /dev/null
+++ b/modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp
@@ -0,0 +1,66 @@
+// file : CIDLC/UtilityTypeNameEmitters.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef UTILITYTYPENAMEEMITTERS_HPP
+#define UTILITYTYPENAMEEMITTERS_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+#include "EmitterBase.hpp"
+
+using namespace std;
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+// Emits type's full scoped name.
+struct FullTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ FullTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+// Emits type's local name.
+struct SimpleTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ SimpleTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+// Emits name of type's enclosing scope.
+struct EnclosingTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ EnclosingTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+// Emits scoped name minus the leading double colon.
+struct StrippedTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ StrippedTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+// Emits scoped name in flat form for use with a prefix.
+struct FacetEnclosingTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ FacetEnclosingTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+#endif // UTILITYTYPENAMEEMITTERS_HPP