Register#
register.h#
-
class Reg#
-
Public Static Functions
-
static void Init()#
-
static void Deinit()#
-
static void Run(const std::function<void(void)> &post_build_cb = std::function<void(void)>())#
-
static CallbackInstance Call(bool condition = true)#
-
static ToolchainInstance Toolchain(const ArgToolchainState &condition)#
-
static const tf::Taskflow &GetTaskflow()#
-
class CallbackInstance#
Public Functions
-
inline CallbackInstance(bool condition = true)#
-
template<typename C, typename ...Params>
inline CallbackInstance &Func(const C &cb, Params&&... params)#
-
template<typename C, typename T, typename ...Params>
inline CallbackInstance &Build(const C &build_cb, T &builder, Params&&... params)#
-
inline CallbackInstance(bool condition = true)#
-
class Instance#
Public Functions
-
template<typename C, typename T, typename ...Params>
inline void Build(const C &build_cb, T &builder, Params&&... params)#
-
void Dep(const internal::BuilderInterface &target, const internal::BuilderInterface &dependency)#
Setup dependency between 2 Targets PreReq: Call
Reg::Instance::Build
before callingReg::Instance::Dep
Target runs after dependency is built
-
void Test(const std::string &command, const BaseTarget &target, const TestConfig &config = TestConfig())#
Instance the Target to be run PreReq: Call
Reg::Instance::Build
before callingReg::Instance::Test
PreReq: Requires ArgToolchainState::build && ArgToolchainState::test to be true.Target is added as the
{executable}
argument. We can add more fmt::format arguments using the TestConfig arguments parameter
-
void RunBuild()#
Builds the targets that have been dynamically added through
Reg::Instance::Build
-
void RunTest()#
Runs the targets that have been dynamically added through
Reg::Instance::Test
-
inline const tf::Taskflow &GetTaskflow() const#
-
template<typename C, typename T, typename ...Params>
-
class ToolchainInstance#
Public Functions
-
inline ToolchainInstance(const ArgToolchainState &condition)#
-
template<typename C, typename ...Params>
inline ToolchainInstance &Func(const C &cb, Params&&... params)#
-
template<typename C, typename T, typename ...Params>
inline ToolchainInstance &Build(const C &build_cb, T &builder, Params&&... params)#
-
template<typename P>
inline ToolchainInstance &BuildPackage(P &package)#
-
ToolchainInstance &Dep(const internal::BuilderInterface &target, const internal::BuilderInterface &dependency)#
-
ToolchainInstance &Test(const std::string &command, const BaseTarget &target, const TestConfig &config = TestConfig())#
-
inline ToolchainInstance(const ArgToolchainState &condition)#
-
static void Init()#
test_info.h#
-
struct TestConfig#
Public Functions
-
inline TestConfig(const std::unordered_map<const char*, std::string> &arguments = {}, const env::optional<fs::path> &working_directory = {}, const TestOutput &output = TestOutput())#
Configure your
Reg::Instance::Test
using TestConfig.- Parameters
arguments – fmt::format args passed to test commands
working_directory – Working directory from which the test runs
output – Output from tests
-
inline const std::unordered_map<const char*, std::string> &GetArguments() const#
-
inline const env::optional<fs::path> &GetWorkingDirectory() const#
-
inline const TestOutput &GetTestOutput() const#
-
inline TestConfig(const std::unordered_map<const char*, std::string> &arguments = {}, const env::optional<fs::path> &working_directory = {}, const TestOutput &output = TestOutput())#
-
struct TestOutput#
Public Types
-
enum class Type#
Values:
-
enumerator DefaultBehaviour#
Do not redirect to user or tests, default printed on console
-
enumerator TestPrintOnStderr#
Test only redirects stderr and prints.
-
enumerator TestPrintOnStdout#
Test only redirects stdout and prints.
-
enumerator TestPrintOnStderrAndStdout#
Test redirects both and prints.
-
enumerator UserRedirect#
Redirects to user variables.
-
enumerator DefaultBehaviour#
Public Functions
-
inline TestOutput(Type output_type = Type::TestPrintOnStderrAndStdout, std::vector<std::string> *redirect_stdout = nullptr, std::vector<std::string> *redirect_stderr = nullptr)#
Configure your
Reg::Instance::Test
to get test output.- Parameters
output_type – Select your output type (behaviour)
redirect_stdout – User stdout redirection
redirect_stderr – User stderr redirection
-
inline std::vector<std::string> *GetRedirectStdoutToUser() const#
-
inline std::vector<std::string> *GetRedirectStderrToUser() const#
-
enum class Type#
Example#
1class BigObj {};
2
3static void callback_usage_func(const BigObj & cobj, BigObj & obj);
4
5int main(int argc, char ** argv) {
6 Args::Init()
7 .Parse(argc, argv);
8
9 Reg::Init();
10 Reg::Call(Args::Clean()).Func([](){
11 fs::remove_all(Project::GetBuildDir());
12 })
13
14
15 BigObj obj;
16 Reg::Call().Func(callback_usage_func, BigObj(), obj)
17
18 bool expression = true; // false
19 Reg::Call(expression).Func(callback_usage_func, BigObj(), obj)
20
21 // Example snippets of these given in Target API
22 // Build
23 // Dep
24 // Test
25 // RunBuild
26 // RunTest
27 return 0;
28}