From ddb77e1407eeaf0f18390cb49d915ca50ac2b528 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sun, 20 Sep 2009 07:06:51 +0200 Subject: Add header, inline, and source generators All they currently do is output the namespace structure plus the included C++ files for header. --- cli/header.cxx | 36 ++++++++++++++++++++++++++++++++++++ cli/header.hxx | 14 ++++++++++++++ cli/inline.cxx | 24 ++++++++++++++++++++++++ cli/inline.hxx | 14 ++++++++++++++ cli/source.cxx | 24 ++++++++++++++++++++++++ cli/source.hxx | 14 ++++++++++++++ 6 files changed, 126 insertions(+) create mode 100644 cli/header.cxx create mode 100644 cli/header.hxx create mode 100644 cli/inline.cxx create mode 100644 cli/inline.hxx create mode 100644 cli/source.cxx create mode 100644 cli/source.hxx (limited to 'cli') diff --git a/cli/header.cxx b/cli/header.cxx new file mode 100644 index 0000000..21f70f2 --- /dev/null +++ b/cli/header.cxx @@ -0,0 +1,36 @@ +// file : cli/header.cxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2009 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#include "header.hxx" + +namespace +{ + struct includes: traversal::cxx_includes, context + { + includes (context& c) : context (c) {} + + virtual void + traverse (semantics::cxx_includes& i) + { + os << "#include " << i.file () << endl + << endl; + } + }; +} + +void +generate_header (context& ctx) +{ + traversal::cli_unit unit; + includes includes (ctx); + traversal::names unit_names; + namespace_ ns (ctx); + traversal::names ns_names; + + unit >> includes; + unit >> unit_names >> ns >> ns_names >> ns; + + unit.dispatch (ctx.unit); +} diff --git a/cli/header.hxx b/cli/header.hxx new file mode 100644 index 0000000..a546664 --- /dev/null +++ b/cli/header.hxx @@ -0,0 +1,14 @@ +// file : cli/header.hxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2009 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#ifndef CLI_HEADER_HXX +#define CLI_HEADER_HXX + +#include "context.hxx" + +void +generate_header (context&); + +#endif // CLI_HEADER_HXX diff --git a/cli/inline.cxx b/cli/inline.cxx new file mode 100644 index 0000000..e376d76 --- /dev/null +++ b/cli/inline.cxx @@ -0,0 +1,24 @@ +// file : cli/inline.cxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2009 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#include "inline.hxx" + +namespace +{ + +} + +void +generate_inline (context& ctx) +{ + traversal::cli_unit unit; + traversal::names unit_names; + namespace_ ns (ctx); + traversal::names ns_names; + + unit >> unit_names >> ns >> ns_names >> ns; + + unit.dispatch (ctx.unit); +} diff --git a/cli/inline.hxx b/cli/inline.hxx new file mode 100644 index 0000000..1e1e790 --- /dev/null +++ b/cli/inline.hxx @@ -0,0 +1,14 @@ +// file : cli/inline.hxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2009 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#ifndef CLI_INLINE_HXX +#define CLI_INLINE_HXX + +#include "context.hxx" + +void +generate_inline (context&); + +#endif // CLI_INLINE_HXX diff --git a/cli/source.cxx b/cli/source.cxx new file mode 100644 index 0000000..75be8a3 --- /dev/null +++ b/cli/source.cxx @@ -0,0 +1,24 @@ +// file : cli/source.cxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2009 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#include "source.hxx" + +namespace +{ + +} + +void +generate_source (context& ctx) +{ + traversal::cli_unit unit; + traversal::names unit_names; + namespace_ ns (ctx); + traversal::names ns_names; + + unit >> unit_names >> ns >> ns_names >> ns; + + unit.dispatch (ctx.unit); +} diff --git a/cli/source.hxx b/cli/source.hxx new file mode 100644 index 0000000..12caea3 --- /dev/null +++ b/cli/source.hxx @@ -0,0 +1,14 @@ +// file : cli/source.hxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2009 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#ifndef CLI_SOURCE_HXX +#define CLI_SOURCE_HXX + +#include "context.hxx" + +void +generate_source (context&); + +#endif // CLI_SOURCE_HXX -- cgit v1.1