diff options
author | jai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-01-29 21:15:18 +0000 |
---|---|---|
committer | jai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-01-29 21:15:18 +0000 |
commit | b71531b42b3325fd6079a7039aae8641262c8adf (patch) | |
tree | a5b9aa16924c541fcb424ee9460b1ac7f5a89352 /modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp | |
parent | a0f67cc97c0050d907145e312135b60c0125e56e (diff) | |
download | ATCD-b71531b42b3325fd6079a7039aae8641262c8adf.tar.gz |
branching/taggingDS-main
Diffstat (limited to 'modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp')
-rw-r--r-- | modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp b/modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp new file mode 100644 index 00000000000..44864e4b05e --- /dev/null +++ b/modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp @@ -0,0 +1,78 @@ +// file : CIDLC/UtilityTypeNameEmitters.cpp +// author : Jeff Parsons <j.parsons@vanderbilt.edu> +// cvs-id : $Id$ + +#include "UtilityTypeNameEmitters.hpp" +#include "CCF/CodeGenerationKit/Regex.hpp" + +#include <sstream> + +FullTypeNameEmitter::FullTypeNameEmitter (Context& c) + : EmitterBase (c) +{ +} + +void +FullTypeNameEmitter::traverse (SemanticGraph::Type& t) +{ + os << t.scoped_name (); +} + +// =================================================== + +SimpleTypeNameEmitter::SimpleTypeNameEmitter (Context& c) + : EmitterBase (c) +{ +} + +void +SimpleTypeNameEmitter::traverse (SemanticGraph::Type& t) +{ + os << t.name (); +} + +// =================================================== + +EnclosingTypeNameEmitter::EnclosingTypeNameEmitter (Context& c) + : EmitterBase (c) +{ +} + +void +EnclosingTypeNameEmitter::traverse (SemanticGraph::Type& t) +{ + os << t.scoped_name ().scope_name (); +} + +// =================================================== + +StrippedTypeNameEmitter::StrippedTypeNameEmitter (Context& c) + : EmitterBase (c) +{ +} + +void +StrippedTypeNameEmitter::traverse (SemanticGraph::Type& t) +{ + ScopedName scoped (t.scoped_name ()); + os << Name (scoped.begin () + 1, scoped.end ()); +} + +// =================================================== + +FacetEnclosingTypeNameEmitter::FacetEnclosingTypeNameEmitter (Context& c) + : EmitterBase (c) +{ +} + +void +FacetEnclosingTypeNameEmitter::traverse (SemanticGraph::Type& t) +{ + // We need to escape C++ keywords before flattening the name. + // + std::ostringstream ostr; + ostr.pword (name_printer_index) = os.pword (name_printer_index); + ostr << t.scoped_name ().scope_name (); + os << regex::perl_s (ostr.str (), "/::/_/"); +} + |