// 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 { class scope; // Start builtin command. Throw system_error on failure. // // Note that unlike argc/argv, our args don't include the program name. // // Also note that the future object being returned doesn't block in dtor // until the builtin command terminates. // using builtin = future (scope&, const strings& args, auto_fd in, auto_fd out, auto_fd err); 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