'----------------------------------------------------------------------- */
#ifndef DISABLE_MODULE_THEN_BUDDHISM
#define then
'----------------------------------------------------------------------- */
#ifndef DISABLE_MODULE_THEN_BUDDHISM
#define then
#define WHOKNOWS (int)(srandom((unsigned)time(NULL)),random()%2)
#define create_var(ID,TYPE,EXPR) TYPE ID=(EXPR)
#define def_var(ID,TYPE) TYPE ID
#define WHOKNOWS (int)(srandom((unsigned)time(NULL)),random()%2)
#define create_var(ID,TYPE,EXPR) TYPE ID=(EXPR)
#define def_var(ID,TYPE) TYPE ID
#define atob(EXPR) (eqi((EXPR),YES)?1:0)
#endif
/* .----------------------------------------------------------------------.
#define atob(EXPR) (eqi((EXPR),YES)?1:0)
#endif
/* .----------------------------------------------------------------------.
#define TRUE 1
#define FALSE 0
#define WEIRDINT (1<<(sizeof(int)*8-1))
#define btoa(EXPR) ((EXPR)?"TRUE":"FALSE")
#define coalesce(VAR,EXPR) (VAR?VAR:(EXPR))
#define TRUE 1
#define FALSE 0
#define WEIRDINT (1<<(sizeof(int)*8-1))
#define btoa(EXPR) ((EXPR)?"TRUE":"FALSE")
#define coalesce(VAR,EXPR) (VAR?VAR:(EXPR))
-#define _CLL1_GLOBALS char *NIL="NULL", *EOL="\n", *OFS=" ", *IFS=" \t\n"; unsigned RANDOM_SEED=0;
+#define _CLL1_GLOBALS str NIL="NULL", EOL="\n", OFS=" ", IFS=" \t\n"; unsigned RANDOM_SEED=0;
/* .----------------------------------------------------------------------.
/ 4. C<<1 data declaration and allocation, updated 2008-01-31 xCh.
'----------------------------------------------------------------------- */
/* .----------------------------------------------------------------------.
/ 4. C<<1 data declaration and allocation, updated 2008-01-31 xCh.
'----------------------------------------------------------------------- */
#define init_mem(...) _mem_##TYPE##_( _ARG2(__VA_ARGS__,,) - 0 )
#define construct_mem(TYPE) (struct TYPE *)_mem_##TYPE##_(void) { create_mem(this,TYPE);/* <-' */ _init_mem_##TYPE##_(this); return this; } _init_mem_##TYPE##_(this_is(TYPE))
#define create_list(ID1,I2,TYPE) create_mem(ID1,TYPE); struct TYPE *ID2=((ID1->__next=NULL),ID1)
#define init_mem(...) _mem_##TYPE##_( _ARG2(__VA_ARGS__,,) - 0 )
#define construct_mem(TYPE) (struct TYPE *)_mem_##TYPE##_(void) { create_mem(this,TYPE);/* <-' */ _init_mem_##TYPE##_(this); return this; } _init_mem_##TYPE##_(this_is(TYPE))
#define create_list(ID1,I2,TYPE) create_mem(ID1,TYPE); struct TYPE *ID2=((ID1->__next=NULL),ID1)
-#define create_str(ID,EXPR) char *ID=(EXPR)
-#define new_str(ID,...) char *ID=_cll1_get_str(__VA_ARGS__,NIL)
-#define def_str(ID) char *ID=NULL
-#define get_str(...) _cll1_get_str(__VA_ARGS__,NIL)
#define create_context(ID) create_mem(ID,_CTXAtom)
#define def_context(ID) def_mem(ID,_CTXAtom)
#define list(TYPE) struct TYPE *__next
#define create_context(ID) create_mem(ID,_CTXAtom)
#define def_context(ID) def_mem(ID,_CTXAtom)
#define list(TYPE) struct TYPE *__next
/* .----------------------------------------------------------------------.
/ 5. C<<1 string manipulation, updated 2008-01-26 xCh.
'----------------------------------------------------------------------- */
/* .----------------------------------------------------------------------.
/ 5. C<<1 string manipulation, updated 2008-01-26 xCh.
'----------------------------------------------------------------------- */
#define eq(A,B) !_cll1_strcmp(A,B)
#define eqi(A,B) !_cll1_strcmpi(A,B)
#define in_str(A,B) _cll1_strstr(A,B)
#define eq(A,B) !_cll1_strcmp(A,B)
#define eqi(A,B) !_cll1_strcmpi(A,B)
#define in_str(A,B) _cll1_strstr(A,B)
-#define if_exists(A,B,C) for_search(A,B,C) break; if(A)
+#define if_exists(NODE,HEAD,EXPR) for_search(NODE,HEAD,EXPR) break; if(NODE)
#define if_args if(argc>1)
#define switch_for_args for_args switch_str(this_arg)
#define switch_str(STR) _NEW(S,STR)
#define if_args if(argc>1)
#define switch_for_args for_args switch_str(this_arg)
#define switch_str(STR) _NEW(S,STR)