From 89f8e08550d437eedd16f6aa0cc5333a7db75bea Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 1 Nov 2016 14:20:49 +0200 Subject: Establish testscript builtins infrastructure --- build2/test/script/builtin | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 build2/test/script/builtin (limited to 'build2/test/script/builtin') diff --git a/build2/test/script/builtin b/build2/test/script/builtin new file mode 100644 index 0000000..805e5fd --- /dev/null +++ b/build2/test/script/builtin @@ -0,0 +1,45 @@ +// file : build2/test/script/builtin -*- C++ -*- +// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#ifndef BUILD2_TEST_SCRIPT_BUILTIN +#define BUILD2_TEST_SCRIPT_BUILTIN + +#include +#include + +#include + +namespace build2 +{ + namespace test + { + namespace script + { + // Note that unlike argc/argv, our args don't include the program name. + // + using builtin = int (*) (const strings& args, + int in_fd, int out_fd, int err_fd); + + class builtin_map: public std::map + { + public: + using base = std::map; + using base::base; + + // Return NULL if not a builtin. + // + builtin + find (const string& n) const + { + auto i (base::find (n)); + return i != end () ? i->second : nullptr; + } + }; + + extern const builtin_map builtins; + } + } +} + +#endif // BUILD2_TEST_SCRIPT_BUILTIN -- cgit v1.1