diff options
Diffstat (limited to 'libbuild2/test/script/builtin.hxx')
-rw-r--r-- | libbuild2/test/script/builtin.hxx | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/libbuild2/test/script/builtin.hxx b/libbuild2/test/script/builtin.hxx deleted file mode 100644 index b340335..0000000 --- a/libbuild2/test/script/builtin.hxx +++ /dev/null @@ -1,74 +0,0 @@ -// file : libbuild2/test/script/builtin.hxx -*- C++ -*- -// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#ifndef LIBBUILD2_TEST_SCRIPT_BUILTIN_HXX -#define LIBBUILD2_TEST_SCRIPT_BUILTIN_HXX - -#include <map> - -#include <libbuild2/types.hxx> -#include <libbuild2/utility.hxx> - -namespace build2 -{ - namespace test - { - namespace script - { - class scope; - - // A process/thread-like object representing a running builtin. - // - // For now, instead of allocating the result storage dynamically, we - // expect it to be provided by the caller. - // - class builtin - { - public: - uint8_t - wait () {if (t_.joinable ()) t_.join (); return r_;} - - ~builtin () {wait ();} - - public: - builtin (uint8_t& r, thread&& t = thread ()): r_ (r), t_ (move (t)) {} - - builtin (builtin&&) = default; - - private: - uint8_t& r_; - thread t_; - }; - - // Start builtin command. Throw system_error on failure. - // - // Note that unlike argc/argv, our args don't include the program name. - // - using builtin_func = builtin (scope&, - uint8_t& result, - const strings& args, - auto_fd in, auto_fd out, auto_fd err); - - class builtin_map: public std::map<string, builtin_func*> - { - public: - using base = std::map<string, builtin_func*>; - using base::base; - - // Return NULL if not a builtin. - // - builtin_func* - find (const string& n) const - { - auto i (base::find (n)); - return i != end () ? i->second : nullptr; - } - }; - - extern const builtin_map builtins; - } - } -} - -#endif // LIBBUILD2_TEST_SCRIPT_BUILTIN_HXX |