int main()
{
    StateMachine stateMachine;

    stateMachine.setOnStartCallback([] () { std::cout << "state machine started" << std::endl; });
    stateMachine.setOnStopCallback([] () { std::cout << "state machine stopped" << std::endl; });

    State* state1 = new State();
    state1->setOnEnterCallback([] (const Event*) { std::cout << "entering state1" << std::endl; });
    state1->setOnExitCallback([] (const Event*) { std::cout << "exiting state1" << std::endl; });

    State* state2 = new State();
    state2->setOnEnterCallback([] (const Event*) { std::cout << "entering state2" << std::endl; });
    state2->setOnExitCallback([] (const Event*) { std::cout << "exiting state2" << std::endl; });

    State* state3 = new State();
    state3->setOnEnterCallback([] (const Event*) { std::cout << "entering state3" << std::endl; });
    state3->setOnExitCallback([] (const Event*) { std::cout << "exiting state3" << std::endl; });

    stateMachine.addTransition(12, state1, state2);
    stateMachine.addTransition(13, state1, state3);
    stateMachine.addTransition(23, state2, state3);
    stateMachine.addTransition(31, state3, state1);
    stateMachine.setInitialState(state1);

    stateMachine.start();

    stateMachine.postEvent(new Event(12));
    stateMachine.postEvent(new Event(23));
    stateMachine.postEvent(new Event(31));
    stateMachine.postEvent(new Event(13));

    return 0;
}
Exemple #2
0
int main(int argc, char** argv) {

	ros::init(argc,argv,"mk_behaviors");
	StateMachine sm;
	sm.start(); // blocking

	return 0;
}
    virtual void SetUp() {

        LOGUSRMOCK = new MockLogger;

        /* State Machine in Unknown state. */
        state_machine_unknown.start();

        /* State Machine in Missing state. */
        state_machine_missing.start();

        ON_CALL(hw_status, read_status())
            .WillByDefault(Return(ModuleStatus::Status::NOT_PRESENT));
        ON_CALL(sw_status, read_status())
            .WillByDefault(Return(ModuleStatus::Status::NOT_PRESENT));

        state_machine_missing.set_next_state(&hw_status, &sw_status);

        /* State Machine in Up state. */
        state_machine_up.start();

        ON_CALL(hw_status, read_status())
            .WillByDefault(Return(ModuleStatus::Status::PRESENT));
        ON_CALL(sw_status, read_status())
            .WillByDefault(Return(ModuleStatus::Status::PRESENT));

        state_machine_up.set_next_state(&hw_status, &sw_status);

        /* State Machine in Down state. */
        state_machine_down.start();

        ON_CALL(hw_status, read_status())
            .WillByDefault(Return(ModuleStatus::Status::PRESENT));
        ON_CALL(sw_status, read_status())
            .WillByDefault(Return(ModuleStatus::Status::NOT_PRESENT));

        state_machine_down.set_next_state(&hw_status, &sw_status);
    }
Exemple #4
0
int main(int argc, char * argv[])
{

    StateMachine * machine = new StateMachine();
    View001 * view001 = new View001();
    view001->addTransition(machine);

    View002 * view002 = new View002();
    view002->addTransition(machine);

    machine->addState(view001);
    machine->addState(view002);
    machine->setInitialState(view001);
    machine->start();

    return 0;
}
int main(int args, const char * argv[]) {

	cout << "------" << endl;

	StateMachine2 sm2 = StateMachine2();
	sm2.run();


	cout << "------" << endl;

	RelationalOperator r1(1);
	RelationalOperator r2(2);

	cout << (r1 < r2) << endl;
	cout << (r1 > r2) << endl;
	cout << (r1 == r2) << endl;
	cout << (r1 != r2) << endl;

	cout << "------" << endl;


	StateMachine sm = StateMachine();
	sm.start();

	Child child = Child();
	child.getName();
	child.getCount();


	const uint32_t type = 0x12345678;
	CPU info;
	info.num = type;
	cout << info.id.Stepping << " " << info.id.Model << endl;

	vector<int> v = { 1, 2, 3, 4 };
	vector<int> v2;
	v2.resize(v.size());
	
	int x = 2;

	for_each(v.begin(), v.end(), add2);
	for_each(v.begin(), v.end(), addval<3>);
	for_each(v.begin(), v.end(), Functor(x));
	for_each(v.begin(), v.end(), [x](int v){
		cout << v + x << endl;
	});

	cout << "------";

	transform(v.begin(), v.end(), v2.begin(), [x](int v){
		cout << v + x << endl;
		return v + x;
	});


	cout << "------" << endl;

	vector<int>::iterator y = find_if(v.begin(), end(v), [](int v) {
		if (v % 2 == 0) {
			cout << v << endl;
			return true;
		}
		else return false;		
	});

	cout << *y << endl;

	function<double(double a, double b)> func;
	func = bind(my_divide, _2, _1);

	cout << func(1, 3) << endl;

	return 0;
}