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>
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 );
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( ( ( *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( ( ( *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( ( ( *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( ( ( *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( ( ( *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( ( ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6, arg7 )).c_str() );
1627 template <
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);
1636 const_cast<char*>( name.c_str() ),
1639 const_cast<char*
>( name.c_str() ),
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);
1653 const_cast<char*>( name.c_str() ),
1656 const_cast<char*
>( name.c_str() ),
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);
1670 const_cast<char*>( name.c_str() ),
1673 const_cast<char*
>( name.c_str() ),
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);
1688 const_cast<char*>( name.c_str() ),
1691 const_cast<char*
>( name.c_str() ),
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);
1707 const_cast<char*>( name.c_str() ),
1710 const_cast<char*
>( name.c_str() ),
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);
1727 const_cast<char*>( name.c_str() ),
1730 const_cast<char*
>( name.c_str() ),
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);
1747 const_cast<char*>( name.c_str() ),
1750 const_cast<char*
>( name.c_str() ),
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);
1767 const_cast<char*>( name.c_str() ),
1770 const_cast<char*
>( name.c_str() ),