19#ifndef CLIPSENVIRONMENT_H
20#define CLIPSENVIRONMENT_H
30#include <sigc++/sigc++.h>
59 typedef CLIPSPointer<Environment>
pointer;
87 bool build(
const std::string& construct );
106 Values function(
const std::string& function_name,
const std::string& arguments=std::string() );
119 int load(
const std::string& filename );
130 bool save(
const std::string& filename );
240 bool dribble_on(
const std::string& dribble_file );
251 bool watch(
const std::string& item );
253 bool unwatch(
const std::string& item );
372 long int run(
long int runlimit = -1 );
392 void run_threaded(
long int runlimit = -1,
int priority = 0 );
469 template <
typename T_return >
470 bool add_function( std::string name,
const sigc::slot0<T_return>& slot);
472 template <
typename T_return,
typename T_arg1 >
473 bool add_function( std::string name,
const sigc::slot1<T_return, T_arg1>& slot);
475 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
476 bool add_function( std::string name,
const sigc::slot2<T_return, T_arg1, T_arg2>& slot);
478 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
479 bool add_function( std::string name,
const sigc::slot3<T_return, T_arg1, T_arg2, T_arg3>& slot);
481 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
482 bool add_function( std::string name,
const sigc::slot4<T_return, T_arg1, T_arg2, T_arg3, T_arg4>& slot);
484 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
485 bool add_function( std::string name,
const sigc::slot5<T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5>& slot);
487 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
488 bool add_function( std::string name,
const sigc::slot6<T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6>& slot);
490 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
491 bool add_function( std::string name,
const sigc::slot7<T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7>& slot);
561 template <
typename T_arg1 >
564 template <
typename T_arg1,
typename T_arg2 >
567 template <
typename T_arg1,
typename T_arg2,
typename T_arg3 >
570 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
573 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
576 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
579 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
582 template <
typename T_return >
583 static T_return
callback(
void* theEnv );
585 template <
typename T_return,
typename T_arg1 >
586 static T_return
callback(
void* theEnv );
588 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
589 static T_return
callback(
void* theEnv );
591 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
592 static T_return
callback(
void* theEnv );
594 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
595 static T_return
callback(
void* theEnv );
597 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
598 static T_return
callback(
void* theEnv );
600 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
601 static T_return
callback(
void* theEnv );
603 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
604 static T_return
callback(
void* theEnv );
608 template <
typename T_arg1>
611 template <
typename T_arg1,
typename T_arg2>
614 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
617 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
620 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
624 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
625 typename T_arg5,
typename T_arg6>
628 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
629 typename T_arg5,
typename T_arg6,
typename T_arg7>
635 template <
typename T_arg1>
638 template <
typename T_arg1,
typename T_arg2>
641 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
644 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
647 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
651 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
652 typename T_arg5,
typename T_arg6>
655 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
656 typename T_arg5,
typename T_arg6,
typename T_arg7>
660 {
return (
int ( * ) (
void* ) ) (
void* ( * ) (
void* ) )
strcallback; }
662 template <
typename T_arg1 >
663 int ( *
get_callback(
const sigc::slot1<std::string,T_arg1>& slot ))(
void* )
664 {
return (
int ( * ) (
void* ) ) (
void* ( * ) (
void* ) ) strcallback<T_arg1>; }
666 template <
typename T_arg1,
typename T_arg2 >
667 int ( *
get_callback(
const sigc::slot2<std::string,T_arg1,T_arg2>& slot ))(
void* )
668 {
return (
int ( * ) (
void* ) ) (
void* ( * ) (
void* ) ) strcallback<T_arg1,T_arg2>; }
670 template <
typename T_arg1,
typename T_arg2,
typename T_arg3 >
671 int ( *
get_callback(
const sigc::slot3<std::string,T_arg1,T_arg2,T_arg3>& slot ))(
void* )
672 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3>; }
674 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
675 int ( *
get_callback(
const sigc::slot4<std::string,T_arg1,T_arg2,T_arg3,T_arg4>& slot ))(
void* )
676 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3,T_arg4>; }
678 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
679 int ( *
get_callback(
const sigc::slot5<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot ))(
void* )
680 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>; }
682 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
683 int ( *
get_callback(
const sigc::slot6<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot ))(
void* )
684 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>; }
686 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
687 int ( *
get_callback(
const sigc::slot7<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot ))(
void* )
688 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>; }
690 int ( *
get_callback(
const sigc::slot0<Values>& slot ))(
void* )
693 template <
typename T_arg1>
694 int ( *
get_callback(
const sigc::slot1<Values,T_arg1>& slot ))(
void* )
695 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1>; }
697 template <
typename T_arg1,
typename T_arg2>
698 int ( *
get_callback(
const sigc::slot2<Values,T_arg1,T_arg2>& slot ))(
void* )
699 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2>; }
701 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
702 int ( *
get_callback(
const sigc::slot3<Values,T_arg1,T_arg2,T_arg3>& slot ))(
void* )
703 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3>; }
705 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
706 int ( *
get_callback(
const sigc::slot4<Values,T_arg1,T_arg2,T_arg3,T_arg4>& slot ))(
void* )
707 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3,T_arg4>; }
709 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5>
710 int ( *
get_callback(
const sigc::slot5<Values,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot ))(
void* )
711 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>; }
713 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6>
714 int ( *
get_callback(
const sigc::slot6<Values,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot ))(
void* )
715 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>; }
717 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7>
718 int ( *
get_callback(
const sigc::slot7<Values,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot ))(
void* )
719 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>; }
722 int ( *
get_callback(
const sigc::slot0<Value>& slot ))(
void* )
725 template <
typename T_arg1>
726 int ( *
get_callback(
const sigc::slot1<Value,T_arg1>& slot ))(
void* )
727 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_unknown<T_arg1>; }
729 template <
typename T_arg1,
typename T_arg2>
730 int ( *
get_callback(
const sigc::slot2<Value,T_arg1,T_arg2>& slot ))(
void* )
731 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_unknown<T_arg1,T_arg2>; }
733 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
734 int ( *
get_callback(
const sigc::slot3<Value,T_arg1,T_arg2,T_arg3>& slot ))(
void* )
735 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_unknown<T_arg1,T_arg2,T_arg3>; }
737 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
738 int ( *
get_callback(
const sigc::slot4<Value,T_arg1,T_arg2,T_arg3,T_arg4>& slot ))(
void* )
739 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_unknown<T_arg1,T_arg2,T_arg3,T_arg4>; }
741 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5>
742 int ( *
get_callback(
const sigc::slot5<Value,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot ))(
void* )
743 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_unknown<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>; }
745 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6>
746 int ( *
get_callback(
const sigc::slot6<Value,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot ))(
void* )
747 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_unknown<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>; }
749 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7>
750 int ( *
get_callback(
const sigc::slot7<Value,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot ))(
void* )
751 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_unknown<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>; }
754 template <
typename T_return >
755 int ( *
get_callback(
const sigc::slot0<T_return>& slot ))(
void* )
756 {
return (
int (*) (
void*)) ( T_return ( * ) (
void* ) ) callback<T_return>; }
758 template <
typename T_return,
typename T_arg1 >
759 int ( *
get_callback(
const sigc::slot1<T_return,T_arg1>& slot ))(
void* )
760 {
return (
int ( * ) (
void* ) ) ( T_return ( * ) (
void* ) ) callback<T_return,T_arg1>; }
762 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
763 int ( *
get_callback(
const sigc::slot2<T_return,T_arg1,T_arg2>& slot ))(
void* )
764 {
return (
int ( * ) (
void* ) ) ( T_return ( * ) (
void* ) ) callback<T_return,T_arg1,T_arg2>; }
766 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
767 int ( *
get_callback(
const sigc::slot3<T_return,T_arg1,T_arg2,T_arg3>& slot ))(
void* )
768 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3>; }
770 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
771 int ( *
get_callback(
const sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4>& slot ))(
void* )
772 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3,T_arg4>; }
774 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
775 int ( *
get_callback(
const sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot ))(
void* )
776 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>; }
778 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
779 int ( *
get_callback(
const sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot ))(
void* )
780 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>; }
782 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
783 int ( *
get_callback(
const sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot ))(
void* )
784 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>; }
788 template <
typename T_arg1>
791 template <
typename T_arg1,
typename T_arg2>
794 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
797 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
800 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5>
803 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6>
806 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7>
814 static void*
add_symbol(
void *env,
const char* s );
823 char *restr = (
char *)malloc(4);
m_func_restr[name] = restr;
824 snprintf(restr, 4,
"00u");
828 template <
typename T_arg1>
832 char *restr = (
char *)malloc(5);
m_func_restr[name] = restr;
833 snprintf(restr, 5,
"11u%c", get_argument_code<T_arg1>());
837 template <
typename T_arg1,
typename T_arg2>
841 char *restr = (
char *)malloc(6);
m_func_restr[name] = restr;
842 snprintf(restr, 6,
"22u%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>());
846 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
850 char *restr = (
char *)malloc(7);
m_func_restr[name] = restr;
851 snprintf(restr, 7,
"33u%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
852 get_argument_code<T_arg3>());
856 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
860 char *restr = (
char *)malloc(8);
m_func_restr[name] = restr;
861 snprintf(restr, 8,
"44u%c%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
862 get_argument_code<T_arg3>(), get_argument_code<T_arg4>());
866 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
871 char *restr = (
char *)malloc(9);
m_func_restr[name] = restr;
872 snprintf(restr, 9,
"55u%c%c%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
873 get_argument_code<T_arg3>(), get_argument_code<T_arg4>(), get_argument_code<T_arg5>());
877 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
878 typename T_arg5,
typename T_arg6>
882 char *restr = (
char *)malloc(10);
m_func_restr[name] = restr;
883 snprintf(restr, 10,
"66u%c%c%c%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
884 get_argument_code<T_arg3>(), get_argument_code<T_arg4>(), get_argument_code<T_arg5>(),
885 get_argument_code<T_arg6>());
889 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
890 typename T_arg5,
typename T_arg6,
typename T_arg7>
894 char *restr = (
char *)malloc(11);
m_func_restr[name] = restr;
895 snprintf(restr, 11,
"77u%c%c%c%c%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
896 get_argument_code<T_arg3>(), get_argument_code<T_arg4>(), get_argument_code<T_arg5>(),
897 get_argument_code<T_arg6>(), get_argument_code<T_arg7>());
902 template <
typename T_return>
905 sigc::slot0<T_return>* cb;
909 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 0" );
910 cb =
static_cast<sigc::slot0<T_return>*
>( cbptr );
916 template <
typename T_return,
typename T_arg1 >
919 sigc::slot1<T_return,T_arg1>* cb;
924 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 1" );
926 cb =
static_cast<sigc::slot1<T_return,T_arg1>*
>( cbptr );
927 return ( *cb ) ( arg1 );
932 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
935 sigc::slot2<T_return, T_arg1, T_arg2>* cb;
941 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 2" );
944 cb =
static_cast<sigc::slot2<T_return, T_arg1, T_arg2>*
>( cbptr );
945 return ( *cb ) ( arg1, arg2 );
950 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
953 sigc::slot3<T_return,T_arg1,T_arg2,T_arg3>* cb;
960 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 3" );
964 cb =
static_cast<sigc::slot3<T_return, T_arg1, T_arg2,T_arg3>*
>( cbptr );
965 return ( *cb ) ( arg1, arg2, arg3 );
970 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
973 sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4>* cb;
981 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 4" );
986 cb =
static_cast<sigc::slot4<T_return, T_arg1, T_arg2,T_arg3,T_arg4>*
>( cbptr );
987 return ( *cb ) ( arg1, arg2, arg3, arg4 );
992 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
995 sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>* cb;
1004 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 5" );
1010 cb =
static_cast<sigc::slot5<T_return, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5>*
>( cbptr );
1011 return ( *cb ) ( arg1, arg2, arg3, arg4, arg5 );
1016 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
1019 sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>* cb;
1029 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 6" );
1036 cb =
static_cast<sigc::slot6<T_return, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>*
>( cbptr );
1037 return ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6 );
1042 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
1045 sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>* cb;
1056 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 7" );
1064 cb =
static_cast<sigc::slot7<T_return, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>*
>( cbptr );
1065 return ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6, arg7 );
1072 sigc::slot0<Values>* cb;
1076 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 0" );
1077 cb =
static_cast<sigc::slot0<Values>*
>( cbptr );
1085 template <
typename T_arg1>
1088 sigc::slot1<Values, T_arg1>* cb;
1093 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 1" );
1094 cb =
static_cast<sigc::slot1<Values, T_arg1>*
>( cbptr );
1096 Values v = ( *cb ) (arg1);
1103 template <
typename T_arg1,
typename T_arg2>
1106 sigc::slot2<Values, T_arg1, T_arg2>* cb;
1112 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 2" );
1113 cb =
static_cast<sigc::slot2<Values, T_arg1, T_arg2>*
>( cbptr );
1116 Values v = ( *cb ) (arg1, arg2);
1124 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
1127 sigc::slot3<Values, T_arg1, T_arg2, T_arg3>* cb;
1134 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 3" );
1135 cb =
static_cast<sigc::slot3<Values, T_arg1, T_arg2, T_arg3>*
>( cbptr );
1139 Values v = ( *cb ) (arg1, arg2, arg3);
1146 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
1149 sigc::slot4<Values, T_arg1, T_arg2, T_arg3, T_arg4>* cb;
1157 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 4" );
1158 cb =
static_cast<sigc::slot4<Values, T_arg1, T_arg2, T_arg3, T_arg4>*
>(cbptr);
1163 Values v = ( *cb ) (arg1, arg2, arg3, arg4);
1170 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1174 sigc::slot5<Values, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5>* cb;
1183 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 5" );
1184 cb =
static_cast<sigc::slot5<
Values, T_arg1, T_arg2, T_arg3,
1185 T_arg4, T_arg5
>*>(cbptr);
1191 Values v = ( *cb ) (arg1, arg2, arg3, arg4, arg5);
1199 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1200 typename T_arg5,
typename T_arg6>
1203 sigc::slot6<Values, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6>* cb;
1213 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 6" );
1214 cb =
static_cast<sigc::slot6<
Values, T_arg1, T_arg2, T_arg3,
1215 T_arg4, T_arg5, T_arg6
>*>(cbptr);
1222 Values v = ( *cb ) (arg1, arg2, arg3, arg4, arg5, arg6);
1229 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1230 typename T_arg5,
typename T_arg6,
typename T_arg7>
1233 sigc::slot7<Values, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7>* cb;
1244 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 7" );
1245 cb =
static_cast<sigc::slot7<
Values, T_arg1, T_arg2, T_arg3,
1246 T_arg4, T_arg5, T_arg6, T_arg7
>*>(cbptr);
1254 Values v = ( *cb ) (arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1266 sigc::slot0<Value>* cb;
1270 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 0" );
1271 cb =
static_cast<sigc::slot0<Value>*
>( cbptr );
1272 Value v = ( *cb ) ();
1279 template <
typename T_arg1>
1282 sigc::slot1<Value, T_arg1>* cb;
1287 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 1" );
1288 cb =
static_cast<sigc::slot1<Value, T_arg1>*
>( cbptr );
1290 Value v = ( *cb ) (arg1);
1297 template <
typename T_arg1,
typename T_arg2>
1300 sigc::slot2<Value, T_arg1, T_arg2>* cb;
1306 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 2" );
1307 cb =
static_cast<sigc::slot2<Value, T_arg1, T_arg2>*
>( cbptr );
1310 Value v = ( *cb ) (arg1, arg2);
1318 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
1321 sigc::slot3<Value, T_arg1, T_arg2, T_arg3>* cb;
1328 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 3" );
1329 cb =
static_cast<sigc::slot3<Value, T_arg1, T_arg2, T_arg3>*
>( cbptr );
1333 Value v = ( *cb ) (arg1, arg2, arg3);
1340 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
1343 sigc::slot4<Value, T_arg1, T_arg2, T_arg3, T_arg4>* cb;
1351 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 4" );
1352 cb =
static_cast<sigc::slot4<Value, T_arg1, T_arg2, T_arg3, T_arg4>*
>(cbptr);
1357 Value v = ( *cb ) (arg1, arg2, arg3, arg4);
1364 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1368 sigc::slot5<Value, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5>* cb;
1377 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 5" );
1378 cb =
static_cast<sigc::slot5<
Value, T_arg1, T_arg2, T_arg3,
1379 T_arg4, T_arg5
>*>(cbptr);
1385 Value v = ( *cb ) (arg1, arg2, arg3, arg4, arg5);
1393 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1394 typename T_arg5,
typename T_arg6>
1397 sigc::slot6<Value, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6>* cb;
1407 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 6" );
1408 cb =
static_cast<sigc::slot6<
Value, T_arg1, T_arg2, T_arg3,
1409 T_arg4, T_arg5, T_arg6
>*>(cbptr);
1416 Value v = ( *cb ) (arg1, arg2, arg3, arg4, arg5, arg6);
1423 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1424 typename T_arg5,
typename T_arg6,
typename T_arg7>
1427 sigc::slot7<Value, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7>* cb;
1438 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 7" );
1439 cb =
static_cast<sigc::slot7<
Value, T_arg1, T_arg2, T_arg3,
1440 T_arg4, T_arg5, T_arg6, T_arg7
>*>(cbptr);
1448 Value v = ( *cb ) (arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1460 sigc::slot0<std::string>* cb;
1464 throw std::logic_error(
"clipsmm/string: wrong # args on slot callback; expected 0" );
1465 cb =
static_cast<sigc::slot0<std::string>*
>( cbptr );
1466 return add_symbol( theEnv, ( ( *cb ) ( )).c_str() );
1471 template <
typename T_arg1 >
1474 sigc::slot1<std::string,T_arg1>* cb;
1479 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 1" );
1481 cb =
static_cast<sigc::slot1<std::string,T_arg1>*
>( cbptr );
1482 return add_symbol( theEnv, ( ( *cb ) ( arg1 )).c_str() );
1487 template <
typename T_arg1,
typename T_arg2 >
1490 sigc::slot2<std::string, T_arg1, T_arg2>* cb;
1496 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 2" );
1499 cb =
static_cast<sigc::slot2<std::string, T_arg1, T_arg2>*
>( cbptr );
1500 return add_symbol( theEnv, ( ( *cb ) ( arg1, arg2 )).c_str() );
1505 template <
typename T_arg1,
typename T_arg2,
typename T_arg3 >
1508 sigc::slot3<std::string,T_arg1,T_arg2,T_arg3>* cb;
1515 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 3" );
1519 cb =
static_cast<sigc::slot3<std::string, T_arg1, T_arg2,T_arg3>*
>( cbptr );
1520 return add_symbol( theEnv, ( ( *cb ) ( arg1, arg2, arg3 )).c_str() );
1525 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
1528 sigc::slot4<std::string,T_arg1,T_arg2,T_arg3,T_arg4>* cb;
1537 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 4" );
1542 cb =
static_cast<sigc::slot4<std::string, T_arg1, T_arg2,T_arg3,T_arg4>*
>( cbptr );
1543 s = ( *cb ) ( arg1, arg2, arg3, arg4 );
1549 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
1552 sigc::slot5<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>* cb;
1561 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 5" );
1567 cb =
static_cast<sigc::slot5<std::string, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5>*
>( cbptr );
1568 return add_symbol( theEnv, ( ( *cb ) ( arg1, arg2, arg3, arg4, arg5 )).c_str() );
1573 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
1576 sigc::slot6<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>* cb;
1586 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 6" );
1593 cb =
static_cast<sigc::slot6<std::string, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>*
>( cbptr );
1594 return add_symbol( theEnv, ( ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6 )).c_str() );
1599 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
1602 sigc::slot7<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>* cb;
1613 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 7" );
1621 cb =
static_cast<sigc::slot7<std::string, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>*
>( cbptr );
1622 return add_symbol( theEnv, ( ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6, arg7 )).c_str() );
1627template <
typename T_return >
1630 char retcode = get_return_code<T_return>( );
1632 sigc::slot0<T_return>* scb =
new sigc::slot0<T_return>(slot);
1633 any holder = CLIPSPointer<sigc::slot0<T_return> >(scb);
1644 template <
typename T_return,
typename T_arg1 >
1647 char retcode = get_return_code<T_return>( );
1648 char *argstring = get_function_restriction<T_arg1>(name);
1649 sigc::slot1<T_return, T_arg1>* scb =
new sigc::slot1<T_return, T_arg1>(slot);
1650 any holder = CLIPSPointer<sigc::slot1<T_return, T_arg1> >(scb);
1661 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
1664 char retcode = get_return_code<T_return>( );
1665 char *argstring = get_function_restriction<T_arg1,T_arg2>(name);
1666 sigc::slot2<T_return, T_arg1, T_arg2>* scb =
new sigc::slot2<T_return, T_arg1, T_arg2>(slot);
1667 any holder = CLIPSPointer<sigc::slot2<T_return, T_arg1, T_arg2> >(scb);
1678 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
1681 char retcode = get_return_code<T_return>( );
1682 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3>(name);
1683 sigc::slot3<T_return,T_arg1,T_arg2,T_arg3>* scb =
1684 new sigc::slot3<T_return,T_arg1,T_arg2,T_arg3>(slot);
1685 any holder = CLIPSPointer<sigc::slot3<T_return,T_arg1,T_arg2,T_arg3> >(scb);
1697 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
1700 char retcode = get_return_code<T_return>( );
1701 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3,T_arg4>(name);
1702 sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4>* scb =
1703 new sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4>(slot);
1704 any holder = CLIPSPointer<sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4> >(scb);
1716 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
1719 const sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot) {
1720 char retcode = get_return_code<T_return>( );
1721 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(name);
1722 sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>* scb =
1723 new sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(slot);
1724 any holder = CLIPSPointer<sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >(scb);
1736 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
1739 const sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot) {
1740 char retcode = get_return_code<T_return>( );
1741 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(name);
1742 sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>* scb =
1743 new sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(slot);
1744 any holder = CLIPSPointer<sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >(scb);
1756 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
1759 const sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot) {
1760 char retcode = get_return_code<T_return>( );
1761 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(name);
1762 sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>* scb =
1763 new sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(slot);
1764 any holder = CLIPSPointer<sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >(scb);
CLIPSPointer< Activation > pointer
Definition: activation.h:33
CLIPSPointer< DefaultFacts > pointer
Definition: defaultfacts.h:33
Definition: environment.h:57
Activation::pointer get_activation_list_head()
Definition: environment.cpp:520
static void callback_multifield(void *theEnv, void *rv)
Definition: environment.h:1071
int load(const std::string &filename)
Loads a set of constructs into the CLIPS data base.
Definition: environment.cpp:88
bool use_dynamic_constraint_checking(bool use=true)
Sets the dynamic constraint checking behavior.
Definition: environment.cpp:237
Function::pointer get_function(const std::string &function_name)
Definition: environment.cpp:679
sigc::signal< void > signal_globals_changed()
Definition: environment.cpp:771
bool save(const std::string &filename)
Saves a set of constructs to the specified file.
Definition: environment.cpp:98
bool dribble_off()
Turns off the storing of dribble information.
Definition: environment.cpp:107
Glib::Mutex m_mutex_threaded_run
Mutex that locks when a threaded run is executing.
Definition: environment.h:533
DefaultFacts::pointer get_default_facts_list_head()
Definition: environment.cpp:322
std::vector< std::string > get_default_facts_names()
Gets a list of default facts names from all modules.
Definition: environment.cpp:295
Glib::Mutex m_mutex_run_signal
Mutex that protects against multiple signal emits.
Definition: environment.h:534
~Environment()
Definition: environment.cpp:50
static void set_return_values(void *env, void *rv, const Values &v)
Definition: environment.cpp:804
Module::pointer get_current_module()
Definition: environment.cpp:494
static T_return callback(void *theEnv)
Definition: environment.h:904
bool is_dribble_active()
Determines if the storing of dribble information is active.
Definition: environment.cpp:103
sigc::signal< void, long int > signal_run()
Signal emitted when the rules are executed.
Definition: environment.cpp:183
bool fact_duplication_enabled()
Returns the current state of the fact duplication behavior.
Definition: environment.cpp:257
static void * strcallback(void *theEnv)
Definition: environment.h:1459
Fact::pointer assert_fact(const std::string &factstring)
Definition: environment.cpp:434
long int run(long int runlimit=-1)
Allows rules to execute.
Definition: environment.cpp:130
sigc::signal< void, long int > m_signal_run
Signal emitted when a job is run.
Definition: environment.h:535
Glib::Mutex m_mutex_run_queue
Mutex that protects access to the run queue.
Definition: environment.h:531
bool build(const std::string &construct)
Allows a construct to be defined.
Definition: environment.cpp:80
bool remove_function(std::string name)
Definition: environment.cpp:621
static void * get_function_context(void *env)
Definition: environment.cpp:800
Global::pointer get_global_list_head()
Definition: environment.cpp:640
void set_as_current()
Definition: environment.cpp:215
bool auto_float_dividend_enabled()
Returns the current state of the auto-float dividend behavior.
Definition: environment.cpp:225
bool incremental_reset_enabled()
Definition: environment.cpp:474
void reorder_agenda()
Reorders the agenda for all modules.
Definition: environment.cpp:544
Rule::pointer get_rule_list_head()
Definition: environment.cpp:419
Module::pointer get_focused_module()
Definition: environment.cpp:504
Fact::pointer assert_fact_f(const char *format,...)
Definition: environment.cpp:454
void clear()
Clears the environment.
Definition: environment.cpp:84
static void * add_symbol(void *env, const char *s)
Definition: environment.cpp:856
static int get_arg_count(void *env)
Definition: environment.cpp:796
Values evaluate(const std::string &expression)
Evaluates and expression and returns a vector of the results.
Definition: environment.cpp:595
std::vector< std::string > get_focus_stack()
Definition: environment.cpp:514
DefaultFacts::pointer get_default_facts(const std::string &default_facts_name)
Definition: environment.cpp:285
bool use_static_constraint_checking(bool use=true)
Sets the static constraint checking behavior.
Definition: environment.cpp:253
static std::map< void *, Environment * > m_environment_map
Definition: environment.h:551
Function::pointer get_function_list_head()
Definition: environment.cpp:687
std::vector< std::string > get_function_names()
Gets a list of function names from all modules.
Definition: environment.cpp:697
bool use_fact_duplication(bool use=true)
Sets the static constraint checking behavior.
Definition: environment.cpp:261
static void rule_firing_callback(void *end)
Definition: environment.cpp:791
Global::pointer get_global(const std::string &global_name)
Definition: environment.cpp:632
Glib::Thread * m_run_thread
A pointer to the currently running thread.
Definition: environment.h:529
ConflictResolution get_conflict_resolution_strategy()
Gets the current conflict resolution strategy.
Definition: environment.cpp:568
static void callback_unknown(void *theEnv, void *rv)
Definition: environment.h:1265
Glib::Mutex m_mutex_run
Mutex that protects against multiple executions.
Definition: environment.h:532
sigc::signal< void > signal_periodic()
Definition: environment.cpp:731
void clear_focus_stack()
Definition: environment.cpp:220
Module::pointer get_module(const std::string &module_name)
Definition: environment.cpp:484
static void set_return_value(void *env, void *rv, const Value &v)
Definition: environment.cpp:851
bool static_constraint_checking_enabled()
Returns the current state of the static constraint checking behavior.
Definition: environment.cpp:249
sigc::signal< void > m_signal_rule_firing
Definition: environment.h:507
sigc::signal< void > m_signal_globals_changed
Definition: environment.h:509
SalienceEvaluation get_salience_evaluation()
Gets the salience evaluation mode.
Definition: environment.cpp:558
Module::pointer get_module_list_head()
Definition: environment.cpp:585
void remove_rules()
Definition: environment.cpp:429
sigc::signal< void > m_signal_reset
Definition: environment.h:506
Environment()
Definition: environment.cpp:33
bool dribble_on(const std::string &dribble_file)
Allows the dribble function of CLIPS to be turned on.
Definition: environment.cpp:111
std::vector< std::string > get_globals_names()
Gets a list of global names from all modules.
Definition: environment.cpp:650
bool use_sequence_operator_recognition(bool use=true)
Sets the sequence operator recognition behavior.
Definition: environment.cpp:245
Values function(const std::string &function_name, const std::string &arguments=std::string())
Evaluates a CLIPS function.
Definition: environment.cpp:606
bool use_auto_float_dividend(bool use=true)
Sets the auto-float dividend behavior.
Definition: environment.cpp:229
Fact::pointer get_facts()
TODO Facts.
Definition: environment.cpp:275
Rule::pointer get_rule(const std::string &rule_name)
Definition: environment.cpp:382
bool dynamic_constraint_checking_enabled()
Returns the current state of the dynamic constraint checking behavior.
Definition: environment.cpp:233
int(*)(void *) get_callback(const sigc::slot0< std::string > &slot)
Definition: environment.h:659
void threaded_run()
Protected method that does the actual work.
Definition: environment.cpp:187
sigc::signal< void > m_signal_periodic
Definition: environment.h:505
bool check_agenda_changed()
TODO ListDefmodules.
Definition: environment.cpp:746
sigc::signal< void > m_signal_clear
Definition: environment.h:504
char * get_function_restriction(std::string &name)
Definition: environment.h:821
bool use_global_reset(bool use=true)
Definition: environment.cpp:269
std::priority_queue< Job > m_run_queue
A priority queue of jobs to run.
Definition: environment.h:530
bool batch_evaluate(const std::string &filename)
Evaluates a series of commands in the specified file.
Definition: environment.cpp:68
int is_watched(const std::string &item)
Determine if an item is being watched.
Definition: environment.cpp:116
void join_run_thread()
Waits until the execution thread is finished.
Definition: environment.cpp:163
CLIPSPointer< Environment > pointer
Definition: environment.h:59
void refresh_agenda()
Refreshes the agenda for all modules.
Definition: environment.cpp:530
static void clear_callback(void *env)
Definition: environment.cpp:776
bool binary_load(const std::string &filename)
Loads a binary image of constructs into the CLIPS data base.
Definition: environment.cpp:72
bool sequence_operator_recognition_enabled()
Returns the current state of the sequence operator recognition behavior.
Definition: environment.cpp:241
std::vector< std::string > get_module_names()
Definition: environment.cpp:578
static void reset_callback(void *env)
Definition: environment.cpp:786
Template::pointer get_template(const std::string &template_name)
Definition: environment.cpp:332
bool binary_save(const std::string &filename)
Saves a binary image of constructs from the CLIPS data base.
Definition: environment.cpp:76
std::vector< std::string > get_rule_names()
Gets a list of rule names from all modules.
Definition: environment.cpp:392
std::map< std::string, any > m_slots
Holds any dynamically created slots.
Definition: environment.h:502
bool watch(const std::string &item)
Definition: environment.cpp:120
bool unwatch(const std::string &item)
Definition: environment.cpp:125
bool check_globals_changed()
Definition: environment.cpp:761
ConflictResolution set_conflict_resolution_strategy(ConflictResolution cr)
Sets the conflict resolution strategy.
Definition: environment.cpp:573
std::map< std::string, char * > m_func_restr
Map from function name to restrictions.
Definition: environment.h:546
std::vector< std::string > get_template_names()
Gets a list of template names from all modules.
Definition: environment.cpp:345
sigc::signal< void > signal_agenda_changed()
Definition: environment.cpp:756
bool global_reset_enable()
Definition: environment.cpp:265
static void periodic_callback(void *env)
Definition: environment.cpp:781
sigc::signal< void > signal_reset()
Definition: environment.cpp:736
void reset()
Resets the CLIPS environment.
Definition: environment.cpp:93
bool use_incremental_reset(bool use=true)
Definition: environment.cpp:479
sigc::signal< void > signal_rule_firing()
Definition: environment.cpp:741
bool add_function(std::string name, const sigc::slot0< T_return > &slot)
Definition: environment.h:1629
void run_threaded(long int runlimit=-1, int priority=0)
Executes rules in a separate thread.
Definition: environment.cpp:142
sigc::signal< void > m_signal_agenda_changed
Definition: environment.h:508
SalienceEvaluation set_salience_evaluation(SalienceEvaluation se)
Sets the salience evaluation mode.
Definition: environment.cpp:563
sigc::signal< void > signal_clear()
Definition: environment.cpp:726
Template::pointer get_template_list_head()
Definition: environment.cpp:372
CLIPSPointer< Fact > pointer
Definition: fact.h:36
CLIPSPointer< Function > pointer
Definition: function.h:32
CLIPSPointer< Global > pointer
Definition: global.h:33
CLIPSPointer< Module > pointer
Definition: module.h:31
void * m_cobj
The underlying CLIPS C object.
Definition: object.h:45
CLIPSPointer< Rule > pointer
Definition: rule.h:31
CLIPSPointer< Template > pointer
Definition: template.h:44
int EnvDefineFunction2WithContext(void *, const char *, int, int(*)(void *), const char *, const char *, void *)
Definition: activation.cpp:29
void get_argument(void *env, int argposition, void *&value)
Definition: utility.cpp:71
std::vector< Value > Values
Definition: value.h:278
SalienceEvaluation
Definition: enum.h:27
ConflictResolution
Definition: enum.h:36
Encapsulates the concept of a CLIPS job.
Definition: environment.h:512
Job(int p, long int rl)
Constructor that takes a priority and a CLIPS runlimit.
Definition: environment.h:514
bool operator<(const Job &other) const
Comparison operator that compares the priority member.
Definition: environment.h:517
long int runlimit
How many rules should fire.
Definition: environment.h:526
int priority
The priority of this job.
Definition: environment.h:520