#ifndef _MARIONETTE_H
#define _MARIONETTE_H

#include <cstdint>
#include <atomic>
#include <memory>
#include <componentThread.h>
#include <component.h>

namespace smo {

class MarionetteThread;

namespace mrntt {

extern std::atomic<int> exitCode;
void exitMarionetteLoop();
extern mrntt::MarionetteComponent mrntt;

} // namespace mrntt

struct CrtCommandLineArgs
{
    CrtCommandLineArgs(int argc, char *argv[], char *envp[])
    :   argc(argc), argv(argv), envp(envp)
    {}

    int argc;
    char **argv;
    char **envp;

    static void set(int argc, char *argv[], char *envp[]);
};

} // namespace smo

#endif // _MARIONETTE_H
