45 #ifndef __CU_BEHAVIOR_PARSER_H__ 
   46 #define __CU_BEHAVIOR_PARSER_H__ 
   48 #include <cugl/ai/behavior/CUBehaviorNode.h> 
   49 #include <cugl/ai/behavior/CUBehaviorAction.h> 
   50 #include <cugl/io/CUJsonReader.h> 
   51 #include <unordered_map> 
   89     std::unordered_map<std::string,std::function<float()>> _prioritizers;
 
   91     std::unordered_map<std::string,std::shared_ptr<BehaviorActionDef>> _actions;
 
   93 #pragma mark Constructors 
  136     static std::shared_ptr<BehaviorParser> 
alloc() {
 
  137         std::shared_ptr<BehaviorParser> result = std::make_shared<BehaviorParser>();
 
  138         return (result->init() ? result : 
nullptr);
 
  141 #pragma mark Parser State 
  152     void addPrioritizer(
const std::string& name, std::function<
float()> prioritizer);
 
  177     std::function<float()> 
getPrioritizer(
const std::string& name) 
const;
 
  226     void addAction(std::shared_ptr<BehaviorActionDef> actiondef) {
 
  238     void addAction(
const std::string& name, std::shared_ptr<BehaviorActionDef> actiondef);
 
  248     void addAction(
const char* name, std::shared_ptr<BehaviorActionDef> actiondef) {
 
  261     std::shared_ptr<BehaviorActionDef> 
getAction(
const std::string& name) 
const;
 
  272     std::shared_ptr<BehaviorActionDef> 
getAction(
const char* name)
 const {
 
  286     std::shared_ptr<BehaviorActionDef> 
removeAction(
const std::string& name);
 
  302 #pragma mark Parsing Functions 
  317     std::unordered_map<std::string, std::shared_ptr<BehaviorNodeDef>>
 
  336     std::unordered_map<std::string, std::shared_ptr<BehaviorNodeDef>>
 
  350     std::shared_ptr<BehaviorNodeDef> parseJson(
const std::shared_ptr<JsonValue>& json);