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 );
364 long int run(
long int runlimit = -1 );
384 void run_threaded(
long int runlimit = -1,
int priority = 0 );
461 template <
typename T_return >
462 bool add_function( std::string name,
const sigc::slot0<T_return>& slot);
464 template <
typename T_return,
typename T_arg1 >
465 bool add_function( std::string name,
const sigc::slot1<T_return, T_arg1>& slot);
467 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
468 bool add_function( std::string name,
const sigc::slot2<T_return, T_arg1, T_arg2>& slot);
470 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
471 bool add_function( std::string name,
const sigc::slot3<T_return, T_arg1, T_arg2, T_arg3>& slot);
473 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
474 bool add_function( std::string name,
const sigc::slot4<T_return, T_arg1, T_arg2, T_arg3, T_arg4>& slot);
476 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
477 bool add_function( std::string name,
const sigc::slot5<T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5>& slot);
479 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
480 bool add_function( std::string name,
const sigc::slot6<T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6>& slot);
482 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 >
483 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);
553 template <
typename T_arg1 >
556 template <
typename T_arg1,
typename T_arg2 >
559 template <
typename T_arg1,
typename T_arg2,
typename T_arg3 >
562 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
565 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
568 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
571 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
574 template <
typename T_return >
575 static T_return
callback(
void* theEnv );
577 template <
typename T_return,
typename T_arg1 >
578 static T_return
callback(
void* theEnv );
580 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
581 static T_return
callback(
void* theEnv );
583 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
584 static T_return
callback(
void* theEnv );
586 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
587 static T_return
callback(
void* theEnv );
589 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
590 static T_return
callback(
void* theEnv );
592 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
593 static T_return
callback(
void* theEnv );
595 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 >
596 static T_return
callback(
void* theEnv );
600 template <
typename T_arg1>
603 template <
typename T_arg1,
typename T_arg2>
606 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
609 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
612 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
616 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
617 typename T_arg5,
typename T_arg6>
620 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
621 typename T_arg5,
typename T_arg6,
typename T_arg7>
625 {
return (
int ( * ) (
void* ) ) (
void* ( * ) (
void* ) )
strcallback; }
627 template <
typename T_arg1 >
628 int ( *
get_callback(
const sigc::slot1<std::string,T_arg1>& slot ))(
void* )
629 {
return (
int ( * ) (
void* ) ) (
void* ( * ) (
void* ) ) strcallback<T_arg1>; }
631 template <
typename T_arg1,
typename T_arg2 >
632 int ( *
get_callback(
const sigc::slot2<std::string,T_arg1,T_arg2>& slot ))(
void* )
633 {
return (
int ( * ) (
void* ) ) (
void* ( * ) (
void* ) ) strcallback<T_arg1,T_arg2>; }
635 template <
typename T_arg1,
typename T_arg2,
typename T_arg3 >
636 int ( *
get_callback(
const sigc::slot3<std::string,T_arg1,T_arg2,T_arg3>& slot ))(
void* )
637 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3>; }
639 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
640 int ( *
get_callback(
const sigc::slot4<std::string,T_arg1,T_arg2,T_arg3,T_arg4>& slot ))(
void* )
641 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3,T_arg4>; }
643 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
644 int ( *
get_callback(
const sigc::slot5<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot ))(
void* )
645 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>; }
647 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
648 int ( *
get_callback(
const sigc::slot6<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot ))(
void* )
649 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>; }
651 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
652 int ( *
get_callback(
const sigc::slot7<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot ))(
void* )
653 {
return (
int(*)(
void*)) (
void* (*)(
void*)) strcallback<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>; }
655 int ( *
get_callback(
const sigc::slot0<Values>& slot ))(
void* )
658 template <
typename T_arg1>
659 int ( *
get_callback(
const sigc::slot1<Values,T_arg1>& slot ))(
void* )
660 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1>; }
662 template <
typename T_arg1,
typename T_arg2>
663 int ( *
get_callback(
const sigc::slot2<Values,T_arg1,T_arg2>& slot ))(
void* )
664 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2>; }
666 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
667 int ( *
get_callback(
const sigc::slot3<Values,T_arg1,T_arg2,T_arg3>& slot ))(
void* )
668 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3>; }
670 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
671 int ( *
get_callback(
const sigc::slot4<Values,T_arg1,T_arg2,T_arg3,T_arg4>& slot ))(
void* )
672 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3,T_arg4>; }
674 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5>
675 int ( *
get_callback(
const sigc::slot5<Values,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot ))(
void* )
676 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>; }
678 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6>
679 int ( *
get_callback(
const sigc::slot6<Values,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot ))(
void* )
680 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>; }
682 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7>
683 int ( *
get_callback(
const sigc::slot7<Values,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot ))(
void* )
684 {
return (
int (*) (
void*)) ( void ( * ) (
void*,
void* ) ) callback_multifield<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>; }
687 template <
typename T_return >
688 int ( *
get_callback(
const sigc::slot0<T_return>& slot ))(
void* )
689 {
return (
int (*) (
void*)) ( T_return ( * ) (
void* ) ) callback<T_return>; }
691 template <
typename T_return,
typename T_arg1 >
692 int ( *
get_callback(
const sigc::slot1<T_return,T_arg1>& slot ))(
void* )
693 {
return (
int ( * ) (
void* ) ) ( T_return ( * ) (
void* ) ) callback<T_return,T_arg1>; }
695 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
696 int ( *
get_callback(
const sigc::slot2<T_return,T_arg1,T_arg2>& slot ))(
void* )
697 {
return (
int ( * ) (
void* ) ) ( T_return ( * ) (
void* ) ) callback<T_return,T_arg1,T_arg2>; }
699 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
700 int ( *
get_callback(
const sigc::slot3<T_return,T_arg1,T_arg2,T_arg3>& slot ))(
void* )
701 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3>; }
703 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
704 int ( *
get_callback(
const sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4>& slot ))(
void* )
705 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3,T_arg4>; }
707 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
708 int ( *
get_callback(
const sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot ))(
void* )
709 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>; }
711 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
712 int ( *
get_callback(
const sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot ))(
void* )
713 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>; }
715 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 >
716 int ( *
get_callback(
const sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot ))(
void* )
717 {
return (
int(*)(
void*)) (T_return(*)(
void*)) callback<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>; }
721 template <
typename T_arg1>
724 template <
typename T_arg1,
typename T_arg2>
727 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
730 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
733 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5>
736 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6>
739 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7>
755 char *restr = (
char *)malloc(4);
m_func_restr[name] = restr;
756 snprintf(restr, 4,
"00u");
760 template <
typename T_arg1>
764 char *restr = (
char *)malloc(5);
m_func_restr[name] = restr;
765 snprintf(restr, 5,
"11u%c", get_argument_code<T_arg1>());
769 template <
typename T_arg1,
typename T_arg2>
773 char *restr = (
char *)malloc(6);
m_func_restr[name] = restr;
774 snprintf(restr, 6,
"22u%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>());
778 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
782 char *restr = (
char *)malloc(7);
m_func_restr[name] = restr;
783 snprintf(restr, 7,
"33u%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
784 get_argument_code<T_arg3>());
788 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
792 char *restr = (
char *)malloc(8);
m_func_restr[name] = restr;
793 snprintf(restr, 8,
"44u%c%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
794 get_argument_code<T_arg3>(), get_argument_code<T_arg4>());
798 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
803 char *restr = (
char *)malloc(9);
m_func_restr[name] = restr;
804 snprintf(restr, 9,
"55u%c%c%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
805 get_argument_code<T_arg3>(), get_argument_code<T_arg4>(), get_argument_code<T_arg5>());
809 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
810 typename T_arg5,
typename T_arg6>
814 char *restr = (
char *)malloc(10);
m_func_restr[name] = restr;
815 snprintf(restr, 10,
"66u%c%c%c%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
816 get_argument_code<T_arg3>(), get_argument_code<T_arg4>(), get_argument_code<T_arg5>(),
817 get_argument_code<T_arg6>());
821 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
822 typename T_arg5,
typename T_arg6,
typename T_arg7>
826 char *restr = (
char *)malloc(11);
m_func_restr[name] = restr;
827 snprintf(restr, 11,
"77u%c%c%c%c%c%c%c", get_argument_code<T_arg1>(), get_argument_code<T_arg2>(),
828 get_argument_code<T_arg3>(), get_argument_code<T_arg4>(), get_argument_code<T_arg5>(),
829 get_argument_code<T_arg6>(), get_argument_code<T_arg7>());
834 template <
typename T_return>
837 sigc::slot0<T_return>* cb;
841 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 0" );
842 cb =
static_cast<sigc::slot0<T_return>*
>( cbptr );
848 template <
typename T_return,
typename T_arg1 >
851 sigc::slot1<T_return,T_arg1>* cb;
856 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 1" );
858 cb =
static_cast<sigc::slot1<T_return,T_arg1>*
>( cbptr );
859 return ( *cb ) ( arg1 );
864 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
867 sigc::slot2<T_return, T_arg1, T_arg2>* cb;
873 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 2" );
876 cb =
static_cast<sigc::slot2<T_return, T_arg1, T_arg2>*
>( cbptr );
877 return ( *cb ) ( arg1, arg2 );
882 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
885 sigc::slot3<T_return,T_arg1,T_arg2,T_arg3>* cb;
892 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 3" );
896 cb =
static_cast<sigc::slot3<T_return, T_arg1, T_arg2,T_arg3>*
>( cbptr );
897 return ( *cb ) ( arg1, arg2, arg3 );
902 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
905 sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4>* cb;
913 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 4" );
918 cb =
static_cast<sigc::slot4<T_return, T_arg1, T_arg2,T_arg3,T_arg4>*
>( cbptr );
919 return ( *cb ) ( arg1, arg2, arg3, arg4 );
924 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
927 sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>* cb;
936 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 5" );
942 cb =
static_cast<sigc::slot5<T_return, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5>*
>( cbptr );
943 return ( *cb ) ( arg1, arg2, arg3, arg4, arg5 );
948 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
951 sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>* cb;
961 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 6" );
968 cb =
static_cast<sigc::slot6<T_return, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>*
>( cbptr );
969 return ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6 );
974 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 >
977 sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>* cb;
988 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 7" );
996 cb =
static_cast<sigc::slot7<T_return, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>*
>( cbptr );
997 return ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6, arg7 );
1004 sigc::slot0<Values>* cb;
1008 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 0" );
1009 cb =
static_cast<sigc::slot0<Values>*
>( cbptr );
1017 template <
typename T_arg1>
1020 sigc::slot1<Values, T_arg1>* cb;
1025 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 1" );
1026 cb =
static_cast<sigc::slot1<Values, T_arg1>*
>( cbptr );
1028 Values v = ( *cb ) (arg1);
1035 template <
typename T_arg1,
typename T_arg2>
1038 sigc::slot2<Values, T_arg1, T_arg2>* cb;
1044 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 2" );
1045 cb =
static_cast<sigc::slot2<Values, T_arg1, T_arg2>*
>( cbptr );
1048 Values v = ( *cb ) (arg1, arg2);
1056 template <
typename T_arg1,
typename T_arg2,
typename T_arg3>
1059 sigc::slot3<Values, T_arg1, T_arg2, T_arg3>* cb;
1066 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 3" );
1067 cb =
static_cast<sigc::slot3<Values, T_arg1, T_arg2, T_arg3>*
>( cbptr );
1071 Values v = ( *cb ) (arg1, arg2, arg3);
1078 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4>
1081 sigc::slot4<Values, T_arg1, T_arg2, T_arg3, T_arg4>* cb;
1089 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 4" );
1090 cb =
static_cast<sigc::slot4<Values, T_arg1, T_arg2, T_arg3, T_arg4>*
>(cbptr);
1095 Values v = ( *cb ) (arg1, arg2, arg3, arg4);
1102 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1106 sigc::slot5<Values, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5>* cb;
1115 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 5" );
1116 cb =
static_cast<sigc::slot5<
Values, T_arg1, T_arg2, T_arg3,
1117 T_arg4, T_arg5
>*>(cbptr);
1123 Values v = ( *cb ) (arg1, arg2, arg3, arg4, arg5);
1131 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1132 typename T_arg5,
typename T_arg6>
1135 sigc::slot6<Values, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6>* cb;
1145 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 6" );
1146 cb =
static_cast<sigc::slot6<
Values, T_arg1, T_arg2, T_arg3,
1147 T_arg4, T_arg5, T_arg6
>*>(cbptr);
1154 Values v = ( *cb ) (arg1, arg2, arg3, arg4, arg5, arg6);
1161 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
1162 typename T_arg5,
typename T_arg6,
typename T_arg7>
1165 sigc::slot7<Values, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7>* cb;
1176 throw std::logic_error(
"clipsmm/mf: wrong # args on slot callback; expected 7" );
1177 cb =
static_cast<sigc::slot7<
Values, T_arg1, T_arg2, T_arg3,
1178 T_arg4, T_arg5, T_arg6, T_arg7
>*>(cbptr);
1186 Values v = ( *cb ) (arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1196 sigc::slot0<std::string>* cb;
1200 throw std::logic_error(
"clipsmm/string: wrong # args on slot callback; expected 0" );
1201 cb =
static_cast<sigc::slot0<std::string>*
>( cbptr );
1207 template <
typename T_arg1 >
1210 sigc::slot1<std::string,T_arg1>* cb;
1215 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 1" );
1217 cb =
static_cast<sigc::slot1<std::string,T_arg1>*
>( cbptr );
1218 return add_symbol( ( ( *cb ) ( arg1 )).c_str() );
1223 template <
typename T_arg1,
typename T_arg2 >
1226 sigc::slot2<std::string, T_arg1, T_arg2>* cb;
1232 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 2" );
1235 cb =
static_cast<sigc::slot2<std::string, T_arg1, T_arg2>*
>( cbptr );
1236 return add_symbol( ( ( *cb ) ( arg1, arg2 )).c_str() );
1241 template <
typename T_arg1,
typename T_arg2,
typename T_arg3 >
1244 sigc::slot3<std::string,T_arg1,T_arg2,T_arg3>* cb;
1251 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 3" );
1255 cb =
static_cast<sigc::slot3<std::string, T_arg1, T_arg2,T_arg3>*
>( cbptr );
1256 return add_symbol( ( ( *cb ) ( arg1, arg2, arg3 )).c_str() );
1261 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
1264 sigc::slot4<std::string,T_arg1,T_arg2,T_arg3,T_arg4>* cb;
1273 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 4" );
1278 cb =
static_cast<sigc::slot4<std::string, T_arg1, T_arg2,T_arg3,T_arg4>*
>( cbptr );
1279 s = ( *cb ) ( arg1, arg2, arg3, arg4 );
1285 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
1288 sigc::slot5<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>* cb;
1297 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 5" );
1303 cb =
static_cast<sigc::slot5<std::string, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5>*
>( cbptr );
1304 return add_symbol( ( ( *cb ) ( arg1, arg2, arg3, arg4, arg5 )).c_str() );
1309 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
1312 sigc::slot6<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>* cb;
1322 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 6" );
1329 cb =
static_cast<sigc::slot6<std::string, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>*
>( cbptr );
1330 return add_symbol( ( ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6 )).c_str() );
1335 template <
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6,
typename T_arg7 >
1338 sigc::slot7<std::string,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>* cb;
1349 throw std::logic_error(
"clipsmm: wrong # args on slot callback; expected 7" );
1357 cb =
static_cast<sigc::slot7<std::string, T_arg1, T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>*
>( cbptr );
1358 return add_symbol( ( ( *cb ) ( arg1, arg2, arg3, arg4, arg5, arg6, arg7 )).c_str() );
1363 template <
typename T_return >
1366 char retcode = get_return_code<T_return>( );
1368 sigc::slot0<T_return>* scb =
new sigc::slot0<T_return>(slot);
1369 any holder = CLIPSPointer<sigc::slot0<T_return> >(scb);
1372 const_cast<char*>( name.c_str() ),
1375 const_cast<char*
>( name.c_str() ),
1380 template <
typename T_return,
typename T_arg1 >
1383 char retcode = get_return_code<T_return>( );
1384 char *argstring = get_function_restriction<T_arg1>(name);
1385 sigc::slot1<T_return, T_arg1>* scb =
new sigc::slot1<T_return, T_arg1>(slot);
1386 any holder = CLIPSPointer<sigc::slot1<T_return, T_arg1> >(scb);
1389 const_cast<char*>( name.c_str() ),
1392 const_cast<char*
>( name.c_str() ),
1397 template <
typename T_return,
typename T_arg1,
typename T_arg2 >
1400 char retcode = get_return_code<T_return>( );
1401 char *argstring = get_function_restriction<T_arg1,T_arg2>(name);
1402 sigc::slot2<T_return, T_arg1, T_arg2>* scb =
new sigc::slot2<T_return, T_arg1, T_arg2>(slot);
1403 any holder = CLIPSPointer<sigc::slot2<T_return, T_arg1, T_arg2> >(scb);
1406 const_cast<char*>( name.c_str() ),
1409 const_cast<char*
>( name.c_str() ),
1414 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3 >
1417 char retcode = get_return_code<T_return>( );
1418 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3>(name);
1419 sigc::slot3<T_return,T_arg1,T_arg2,T_arg3>* scb =
1420 new sigc::slot3<T_return,T_arg1,T_arg2,T_arg3>(slot);
1421 any holder = CLIPSPointer<sigc::slot3<T_return,T_arg1,T_arg2,T_arg3> >(scb);
1424 const_cast<char*>( name.c_str() ),
1427 const_cast<char*
>( name.c_str() ),
1433 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4 >
1436 char retcode = get_return_code<T_return>( );
1437 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3,T_arg4>(name);
1438 sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4>* scb =
1439 new sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4>(slot);
1440 any holder = CLIPSPointer<sigc::slot4<T_return,T_arg1,T_arg2,T_arg3,T_arg4> >(scb);
1443 const_cast<char*>( name.c_str() ),
1446 const_cast<char*
>( name.c_str() ),
1452 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5 >
1455 const sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& slot) {
1456 char retcode = get_return_code<T_return>( );
1457 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(name);
1458 sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>* scb =
1459 new sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(slot);
1460 any holder = CLIPSPointer<sigc::slot5<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >(scb);
1463 const_cast<char*>( name.c_str() ),
1466 const_cast<char*
>( name.c_str() ),
1472 template <
typename T_return,
typename T_arg1,
typename T_arg2,
typename T_arg3,
typename T_arg4,
typename T_arg5,
typename T_arg6 >
1475 const sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& slot) {
1476 char retcode = get_return_code<T_return>( );
1477 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(name);
1478 sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>* scb =
1479 new sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(slot);
1480 any holder = CLIPSPointer<sigc::slot6<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >(scb);
1483 const_cast<char*>( name.c_str() ),
1486 const_cast<char*
>( name.c_str() ),
1492 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 >
1495 const sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>& slot) {
1496 char retcode = get_return_code<T_return>( );
1497 char *argstring = get_function_restriction<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(name);
1498 sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>* scb =
1499 new sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(slot);
1500 any holder = CLIPSPointer<sigc::slot7<T_return,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >(scb);
1503 const_cast<char*>( name.c_str() ),
1506 const_cast<char*
>( name.c_str() ),