00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 static inline Integer conget(Cell string)
00027 {
00028 int value;
00029 Psc psc, str_psc;
00030 Pair sym;
00031
00032 if (!isstring(string))
00033 xsb_abort("[CONGET] Non-string in the first argument");
00034
00035 psc = (Psc)flags[CURRENT_MODULE];
00036 sym = insert(string_val(string), 0, psc, &value);
00037 str_psc = pair_psc(sym);
00038
00039 if (get_type(str_psc) == T_PRED || get_type(str_psc) == T_DYNA)
00040 xsb_abort("[conget] Cannot get data from predicate.\n");
00041
00042 return (Integer)get_data(str_psc);
00043 }
00044
00045
00046 static inline xsbBool conset(Cell string, Integer newval)
00047 {
00048 int value;
00049 Psc psc, str_psc;
00050 Pair sym;
00051
00052 if (!isstring(string))
00053 xsb_abort("[CONSET] Non-string in the first argument");
00054 psc = (Psc)flags[CURRENT_MODULE];
00055 sym = insert(string_val(string), 0, psc, &value);
00056 str_psc = pair_psc(sym);
00057
00058 if (get_type(str_psc) == T_PRED || get_type(str_psc) == T_DYNA)
00059 xsb_abort("[conget] Cannot set data of predicate.\n");
00060
00061 set_data(str_psc, (Psc) newval);
00062 return TRUE;
00063 }