summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-09-20 07:06:51 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-09-20 07:06:51 +0200
commitddb77e1407eeaf0f18390cb49d915ca50ac2b528 (patch)
treea914a9aaa4894f94795cb2b556e332ce25470e37 /cli
parentf15dcbcb90c92e0ce4c9ff575349b60713fe1f83 (diff)
Add header, inline, and source generators
All they currently do is output the namespace structure plus the included C++ files for header.
Diffstat (limited to 'cli')
-rw-r--r--cli/header.cxx36
-rw-r--r--cli/header.hxx14
-rw-r--r--cli/inline.cxx24
-rw-r--r--cli/inline.hxx14
-rw-r--r--cli/source.cxx24
-rw-r--r--cli/source.hxx14
6 files changed, 126 insertions, 0 deletions
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 <boris@codesynthesis.com>
+// 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 <boris@codesynthesis.com>
+// 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 <boris@codesynthesis.com>
+// 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 <boris@codesynthesis.com>
+// 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 <boris@codesynthesis.com>
+// 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 <boris@codesynthesis.com>
+// 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