00001
00061 #ifndef _SOAR_CORE_API_H_
00062 #define _SOAR_CORE_API_H_
00063
00064 #include "soarkernel.h"
00065 #include "callback.h"
00066 #include "soarapi_datatypes.h"
00067
00068
00069
00070
00082
00083
00084
00098 extern void soar_cInitializeSoar(void);
00099
00123 extern int soar_cReInitSoar(void);
00124
00141 extern void soar_cCreateAgent(const char *agent_name);
00142
00176 extern int soar_cRun(long n, bool all, enum go_type_enum type, enum soar_apiSlotType slot);
00177
00186 extern void soar_cStopAllAgents(void);
00187
00199 extern void soar_cStopCurrentAgent(const char *reason);
00200
00221 extern int soar_cDestroyAgentByName(const char *name);
00222
00242 extern int soar_cDestroyAllAgentsWithName(char *name);
00243
00262 extern void soar_cDestroyAgentByAddress(psoar_agent delete_agent);
00263
00293 extern int soar_cDestroyAgentById(int agent_id);
00294
00311 extern void soar_cQuit(void);
00312
00315
00316
00317
00329
00330
00331
00354 extern int soar_cLoadReteNet(const char *filename);
00355
00375 extern int soar_cSaveReteNet(const char *filename);
00376
00411
00412 extern long soar_cAddWme(const char *szId, const char *szAttr, const char *szValue, bool accept, psoar_wme * new_wme);
00413
00432 extern int soar_cRemoveWmeUsingTimetag(int num);
00433
00458 extern int soar_cRemoveWme(psoar_wme wme);
00459
00476 extern void soar_cExciseAllProductions(void);
00477
00493 extern void soar_cExciseAllTaskProductions(void);
00494
00516 extern void soar_cExciseAllProductionsOfType(byte type);
00517
00536 extern int soar_cExciseProductionByName(const char *name);
00537
00540
00541
00542
00549
00550
00566 extern void soar_cSetSystemParameter(int param, long value);
00567
00568
00569 #define soar_cGetInputPeriod() (current_agent(input_period))
00570
00571
00572 #define soar_cSetInputPeriod(p) ((p >= 0)?(current_agent(input_period) = p) : -1)
00573
00574
00575 #define soar_cGetVerbosity() (current_agent(soar_verbose_flag))
00576
00577
00578 #define soar_cSetVerbosity(x) ((current_agent(soar_verbose_flag)) = (x))
00579
00580 #ifndef NO_TIMING_STUFF
00581
00607 extern double soar_cDetermineTimerResolution(double *min, double *max);
00608 #endif
00609
00610 #ifdef DC_HISTOGRAM
00611
00633 extern void soar_cInitializeDCHistogram(int size, int freq);
00634 #endif
00635
00636 #ifdef KT_HISTOGRAM
00637
00658 extern void soar_cInitializeKTHistogram(int size);
00659 #endif
00660
00677 extern void soar_cSetChunkNameLong(bool truly);
00678
00704 extern int soar_cSetChunkNameCount(long count);
00705
00726 extern int soar_cSetChunkNamePrefix(const char *prefix);
00727
00745 extern void soar_cSetLearning(enum soar_apiLearningSetting setting);
00746
00765 extern int soar_cSetOperand2(bool turnOn);
00766
00780 extern void soar_cSetWaitSNC(bool wait);
00781
00800 extern int soar_cMultiAttributes(const char *attr, int value);
00801
00827 extern int soar_cAttributePreferencesMode(int mode);
00828
00831
00832
00833
00841
00842
00869 extern void soar_cAddInputFunction(agent * a, soar_callback_fn f,
00870 soar_callback_data cb_data, soar_callback_free_fn free_fn, const char *name);
00871
00889 extern void soar_cRemoveInputFunction(agent * a, const char *name);
00890
00920 extern void soar_cAddOutputFunction(agent * a, soar_callback_fn f,
00921 soar_callback_data cb_data,
00922 soar_callback_free_fn free_fn, const char *output_link_name);
00923
00942 extern void soar_cRemoveOutputFunction(agent * a, const char *name);
00943
00970 extern void soar_cPushCallback(soar_callback_agent a,
00971 SOAR_CALLBACK_TYPE type,
00972 soar_callback_fn fn, soar_callback_data data, soar_callback_free_fn free_fn);
00973
01000 extern void soar_cAddCallback(soar_callback_agent a,
01001 SOAR_CALLBACK_TYPE type,
01002 soar_callback_fn fn,
01003 soar_callback_data data, soar_callback_free_fn free_fn, soar_callback_id id);
01004
01026 extern void soar_cPopCallback(soar_callback_agent a, SOAR_CALLBACK_TYPE type);
01027
01046 extern void soar_cRemoveCallback(soar_callback_agent a, SOAR_CALLBACK_TYPE type, soar_callback_id id);
01047
01074 extern void soar_cAddGlobalCallback(SOAR_GLOBAL_CALLBACK_TYPE type,
01075 soar_callback_fn fn,
01076 soar_callback_data data, soar_callback_free_fn free_fn, soar_callback_id id);
01077
01093 extern void soar_cRemoveGlobalCallback(SOAR_GLOBAL_CALLBACK_TYPE type, soar_callback_id id);
01094
01112 extern void soar_cListAllCallbacks(soar_callback_agent a, bool monitorable_only);
01113
01128 extern void soar_cListAllCallbacksForEvent(soar_callback_agent agent, SOAR_CALLBACK_TYPE type);
01129
01144 extern void soar_cRemoveAllMonitorableCallbacks(soar_callback_agent agent);
01145
01161 extern void soar_cRemoveAllCallbacksForEvent(soar_callback_agent agent, SOAR_CALLBACK_TYPE type);
01162
01180 extern void soar_cTestAllMonitorableCallbacks(soar_callback_agent the_agent);
01181
01200 extern SOAR_CALLBACK_TYPE soar_cCallbackNameToEnum(const char *name, bool monitor_only);
01201
01202 extern void soar_cDefaultAskCallback(soar_callback_agent the_agent, soar_callback_data data, soar_call_data call_data);
01203
01206
01207
01208
01218
01219
01251 extern char *soar_cGetWmeId(psoar_wme w, char *buff, size_t buff_size);
01252
01280 extern char *soar_cGetWmeAttr(psoar_wme w, char *buff, size_t buff_size);
01281
01309 extern char *soar_cGetWmeValue(psoar_wme w, char *buff, size_t buff_size);
01310
01325 extern unsigned long soar_cGetWmeTimetag(psoar_wme w);
01326
01353 extern unsigned long soar_cAddIntWme(char *szId, char *szAttr, int value,
01354 bool acceptable_preference, psoar_wme * new_wme);
01355
01382 extern unsigned long soar_cAddFloatWme(char *szId, char *szAttr, float value,
01383 bool acceptable_preference, psoar_wme * new_wme);
01384
01406 extern void soar_cInitAgentIterator(soar_apiAgentIterator * ai);
01407
01434 extern bool soar_cStepAgentIterator(soar_apiAgentIterator * ai);
01435
01454 extern psoar_agent soar_cGetAgentByName(char *name);
01455
01472 int soar_cGetIdForAgentByName(char *name);
01473
01488 bool soar_cSetCurrentAgentByName(char *name);
01489
01504 void soar_cSetCurrentAgent(psoar_agent agent);
01505
01516 psoar_agent soar_cGetCurrentAgent();
01517
01543 char *soar_cGetAgentInputLinkId(psoar_agent a, char *buff, size_t buff_size);
01544
01570 char *soar_cGetAgentOutputLinkId(psoar_agent a, char *buff, size_t buff_size);
01571
01587 int soar_cGetAgentId(psoar_agent a);
01588
01604 #ifdef USE_STDARGS
01605 void print(char *format, ...);
01606 #else
01607 void print();
01608 #endif
01609
01612 #endif