aboutsummaryrefslogtreecommitdiff
path: root/build/cli/target
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-06-24 13:53:28 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-06-24 13:53:28 +0200
commite815af118562c68794efbd310c887acd8eae800c (patch)
treecedd8745cce259693c038c309d663a682c982e98 /build/cli/target
parent4f52c4ed65883dacef32587cf066fbb1182c6628 (diff)
First take on the cli module plus necessary infrastructure
Diffstat (limited to 'build/cli/target')
-rw-r--r--build/cli/target51
1 files changed, 51 insertions, 0 deletions
diff --git a/build/cli/target b/build/cli/target
new file mode 100644
index 0000000..e5bf16d
--- /dev/null
+++ b/build/cli/target
@@ -0,0 +1,51 @@
+// file : build/cli/target -*- C++ -*-
+// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#ifndef BUILD_CLI_TARGET
+#define BUILD_CLI_TARGET
+
+#include <build/target>
+
+#include <build/cxx/target>
+
+namespace build
+{
+ namespace cli
+ {
+ class cli: public file
+ {
+ public:
+ using file::file;
+
+ public:
+ virtual const target_type& type () const {return static_type;}
+ static const target_type static_type;
+ };
+
+ class cli_cxx: public target_group
+ {
+ public:
+ using target_group::target_group;
+
+ target* m[3] {nullptr, nullptr, nullptr};
+
+ cxx::hxx* h () const {return static_cast<cxx::hxx*> (m[0]);}
+ cxx::cxx* c () const {return static_cast<cxx::cxx*> (m[1]);}
+ cxx::ixx* i () const {return static_cast<cxx::ixx*> (m[2]);}
+
+ void h (cxx::hxx& t) {m[0] = &t;}
+ void c (cxx::cxx& t) {m[1] = &t;}
+ void i (cxx::ixx& t) {m[2] = &t;}
+
+ virtual group_view
+ members (action) const;
+
+ public:
+ virtual const target_type& type () const {return static_type;}
+ static const target_type static_type;
+ };
+ }
+}
+
+#endif // BUILD_CLI_TARGET