7 #ifndef QICORE_BEHAVIOR_H_
8 # define QICORE_BEHAVIOR_H_
11 #include <qi/anyvalue.hpp>
12 #include <qi/anyobject.hpp>
13 #include <qi/session.hpp>
14 #include <qi/type/objecttypebuilder.hpp>
15 #include <qi/anymodule.hpp>
22 typedef boost::shared_ptr<Node>
NodePtr;
30 typedef std::pair<std::string, std::string>
Slot;
49 return src.first +
'.' + src.second +
" -> " + dst.first +
'.' + dst.second;
53 typedef std::map<std::string, Node>
NodeMap;
58 void load(std::istream& is);
94 Behavior(qi::SessionPtr session): _session(session) {}
97 void loadObjects(
bool debugmode);
99 void setTransitions(
bool debugmode, qi::MetaCallType type = qi::MetaCallType_Auto);
100 void removeTransitions();
101 void loadFile(
const std::string& path);
102 void loadString(
const std::string& data);
103 AnyObject object(
const std::string& name);
104 qi::AnyValue call(
const std::string& objUid,
const std::string& fun, std::vector<qi::AnyValue> args);
132 void transition(qi::AnyValue argument,
const std::string& transitionId);
135 typedef qi::SignalLink Link;
137 typedef std::map<std::string, std::pair<SignalLink, SignalLink> > ObjectLinks;
138 ObjectLinks _objectLinks;
142 qi::SessionPtr _session;
145 QI_REGISTER_OBJECT(
Behavior, loadObjects, unloadObjects, setTransitions, removeTransitions, loadFile, loadString, call, onTransition, model, objects, transitions, setModel, onTaskRunning, onTaskError,
object, start, stop, onStart, onStop);
qi::BehaviorModel & model()
std::map< std::string, AnyObject > ObjectMap
QI_TYPE_STRUCT(::qi::BehaviorModel, nodes, transitions, name)
qi::Signal< void > onStop
std::pair< std::string, std::string > Slot
std::map< std::string, TransitionPtr > TransitionMap
std::map< std::string, Node > NodeMap
TransitionMap & transitions()
Behavior(qi::SessionPtr session)
qi::Signal< const std::string &, bool > onTaskRunning
Triggered when one of the tasks's running property changes state.
qi::Signal< void > onStart
void displayModel(const BehaviorModel &model)
TransitionMap transitions
QI_REGISTER_OBJECT(Behavior, loadObjects, unloadObjects, setTransitions, removeTransitions, loadFile, loadString, call, onTransition, model, objects, transitions, setModel, onTaskRunning, onTaskError, object, start, stop, onStart, onStop)
std::map< std::string, qi::AnyValue > ParameterMap
qi::Signal< const std::string &, qi::AnyValue > onTransition
Triggered when a transition occurrs, if transitions were set in debug mode.
qi::Signal< const std::string &, const std::string & > onTaskError
Triggered when one of the tasks enter/leave an error state.
unsigned int targetMethod
std::map< std::string, Transition > TransitionMap
std::vector< NodePtr > NodePtrVector
void setModel(const qi::BehaviorModel &model)
BehaviorModel loadBehaviorModel(const qilang::NodePtrVector &nodes)
boost::shared_ptr< Node > NodePtr