12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #include "RUStateDelegate.h"
- NS_RU_BEGIN
- void StateDelegate::setUserObject(void *userObject)
- {
- _userObject = userObject;
- }
- void* StateDelegate::getUserObject()
- {
- return _userObject;
- }
- void StateDelegate::execStateAct(State* state,
- const StateActInfo* stateActInfo,
- const std::map<string, string>& eventParams,
- const std::function<void(void)>& actFinishCb)
- {
- if (actFinishCb) {
- actFinishCb();
- }
- }
- void StateDelegate::execStateActList(State* state,
- const std::vector<StateActInfo>& stateActsInfo,
- const std::function<void(void)>& actFinishCb)
- {
- execStateActList(state, stateActsInfo, {}, actFinishCb);
- }
- void StateDelegate::execStateActList(State* state,
- const std::vector<StateActInfo>& stateActsInfo,
- const std::map<string, string>& eventParams,
- const std::function<void(void)>& actFinishCb)
- {
- if(stateActsInfo.size() == 0) {
- execStateAct(state, nullptr, eventParams, actFinishCb);
- } else {
- execStateActListRecursively(state, stateActsInfo, eventParams, actFinishCb);
- }
- }
- void StateDelegate::execStateActListRecursively(State* state,
- const std::vector<StateActInfo>& stateActsInfo,
- const std::function<void(void)>& actFinishCb)
- {
- execStateActListRecursively(state, stateActsInfo, {}, actFinishCb);
- }
- void StateDelegate::execStateActListRecursively(State* state,
- const std::vector<StateActInfo>& stateActsInfo,
- const std::map<string, string>& eventParams,
- const std::function<void(void)>& actFinishCb)
- {
- if(stateActsInfo.size() == 0){
- if (actFinishCb) {
- actFinishCb();
- }
- return;
- }
- auto execNextActs = [=](void){
- auto newActs = stateActsInfo;
- newActs.erase(newActs.begin());
- execStateActListRecursively(state, newActs, eventParams, actFinishCb);
- };
- execStateAct(state, &stateActsInfo.at(0), eventParams, execNextActs);
- }
- void StateDelegate::entry(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb) {
- execStateActList(state, stateActInfo, actFinishCb);
- }
- void StateDelegate::idle(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb) {
- execStateActList(state, stateActInfo, actFinishCb);
- }
- void StateDelegate::exit(State* state, const std::vector<StateActInfo>& stateActInfo, std::function<void(void)> actFinishCb) {
- execStateActList(state, stateActInfo, actFinishCb);
- }
- void StateDelegate::beforeSwitch(State* state, const std::vector<StateActInfo>& stateActInfo, StateActInfo evt, std::function<void(void)> actFinishCb) {
- execStateActList(state, stateActInfo, evt.actParams, actFinishCb);
- }
- void StateDelegate::afterSwitch(State* state, const std::vector<StateActInfo>& stateActInfo, StateActInfo evt, std::function<void(void)> actFinishCb) {
- execStateActList(state, stateActInfo, evt.actParams, actFinishCb);
- }
- NS_RU_END
|