-#define for_each(A,B) for(A=B; A; A=A->_next)
-#define for_search(A,B,C) for_each(A,B) if(C)
-/* to do: #define for_file_lines(STR,F) _NEW_F for() */
-/* obsolete #define every(A,B) for( A=B; A; A=A->_next) */
-/* obsolete #define search(A,B,C) every(A,B) if(C) */
-/* obsolete #define find(A,B,C) search(A,B,C) break; if(A) */
-/* ------------------------------------------------------------------- */
-/* 4.C<<1 conditionals - updated 2008-01-07 by xCh. */
-/* ------------------------------------------------------------------- */
-#define if_exists(A,B,C) for_search(A,B,C) break; if(A)
-/* ------------------------------------------------------------------- */
-/* 5. C<<1 argument handling, updated 2008-01-16 by xCh. */
-/* ------------------------------------------------------------------- */
-#define for_arguments _NEW_I if(argc>1) for(_I=1;_I<argc;_I++)
-#define if_argument(VAL) if(eq(argv[_I],VAL))
-#define this_argument argv[_I]
-#define next_argument ((_I+1<argc)?argv[++_I]:NULL)
-/* ------------------------------------------------------------------- */
-/* 6. C<<1 CGI and FASTCGI handling, updated 2008-01-16 by xCh. */
-/* ------------------------------------------------------------------- */
+#define for_each(NODE,HEAD) for(NODE=HEAD; NODE; NODE=NODE->__next)
+#define for_search(NODE,HEAD,EXPR) for_each(NODE,HEAD) if(EXPR)
+#define for_file_lines(STR,FNAME) /* _NEW(CTX,get_context()) file_read(FNAME) for(use_context(_CTX),STR=file_line(_F);release_context(_M),(*S && !feof(_F));STR=file_line(_F),end_context()) _CATCH */
+#define for_input_lines(S,L) /* _NEW(CTX,get_context()) for(use_context(_CTX),STR=file_get_line(stdin);release_context(_M),(*S && !feof(stdin));STR=file_get_line(stdin)) _CATCH */
+#define for_ints(VAR,...) _NEW(I,0) while( (VAR=_cll1_for_ints(_I++,__VA_ARGS__,WEIRDINT))!=WEIRDINT )
+#define for_strs(VAR,...) _NEW(I,0) while( (VAR=(char *)_cll1_for_ptrs(_I++,__VA_ARGS__,NIL))!=NIL )
+#define for_args _NEW(I,1) while(_I++<argc)
+#define this_arg argv[_I]
+#define next_arg ((_I+1<argc)?argv[_I]:NULL)
+#define skip_next _I++
+#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_case(VAL) if(eq(argv[_I],VAL))
+#define for_fields(FIELD,STR) for_valid_split(FIELD,STR,*OFS)
+#define for_split_str(A,B,C) for(prefix(A,B,C);A;(A!=B)&&prefix(A,B,C)||(A=NULL))
+#define for_valid_split(A,B,C) for_split_str(A,B,C) if(*A)
+#define switch_for_columns(A,B,C) _FOR_COLUMNS(A,B,C) switch(__I)
+#define switch_for_valid_columns(A,B,C) _FOR_VALID_COLUMNS(A,B,C) switch (_I)
+#define if_column_number(A,B,C,V) _FOR_COLUMNS(A,B,C) if(_I==V)
+#define if_valid_column_number(A,B,C,V) _FOR_VALID_COLUMNS(A,B,C) if(_I==V)
+/* .----------------------------------------------------------------------.
+ / 8. C<<1 object oriented infrastructure, updated 2008-01-31
+ '----------------------------------------------------------------------- */
+#define my_self(TYPE) struct *TYPE self, void *_method
+#define we_are(TYPE) struct *TYPE _self, void *_method
+#define anonymous void *_self, void *_method
+#define I_am(TYPE) struct TYPE *self=(struct TYPE *)_self
+#define def_community(METATYPE,ITYPE) struct METATYPE { struct ITYPE *__interface; };
+#define construct_interface(MTYPE,ITYPE) struct ITYPE *_interface_##MTYPE##ITYPE(void *dummy, ...) { def_mem(_FACE,ITYPE); va_list(ap); _bind_##MTYPE##ITYPE(_FACE); return _FACE; } void _bind_##MTYPE##ITYPE(struct IFACE *_FACE)
+#define bind_method(METHOD,FUNCTION) _FACE->METHOD=FUNCTION
+#define new_interface(ID,MTYPE,...) struct _ARG1(__VA_ARGS__,) *ID=_interface_##MTYPE##_ARG1(__VA_ARGS__,) ((void *)__get_##TYPE##__VA_ARGS__,)
+#define init_interface(TYPE,...)
+#define construct_object(TYPE,...) (struct _ARG2(__VA_ARGS__,TYPE,) *)_object_##TYPE##_()
+#define init_object(TYPE,...) (struct TYPE *)_object_##TYPE##_(__VA_ARGS__)
+#define init_polymorph(TYPE,...) _object_##TYPE##_(__VA_ARGS__)
+#define _(OBJECT,...) ( _ASSERT(OBJECT), (*( OBJECT->interface->_ARG1(__VA_ARGS__,) )) ( OBJECT,OBJECT->interface->__VA_ARGS__ ) )
+#define __(OBJECT,...) ( _ASSERT(OBJECT), (*( __cll1_seekmethod(OBJECT->interface,_ARG1(__VA_ARGS__,)) )) ( OBJECT,OBJECT->interface->__VA_ARGS__ ) )
+#define call(OBJTYPE,METHOD,...) { int _N=0; struct OBJTYPE *_OBJ; /* <-' */ while( (_OBJ=(struct OBJTYPE *)_cll1_for_ptrs(_N++,__VA_ARGS__,NIL))!=(struct OBJTYPE *)NIL ) _(_OBJ,METHOD); }
+/* .----------------------------------------------------------------------.
+ / 9. implementation of C<<1 library functions, updated 2008-01-26 xCh.
+ '----------------------------------------------------------------------- */
+#define _MALLOC void *_cll1_malloc(size_t size,...) { /*temporary solution*/ return malloc(size); }
+#define _CLL1_FPRINT(IOSTREAM) { int ofs=0; va_list ap; /* <-' */ for(va_start(ap,s);s!=NIL;s=va_arg(ap,char *)) { if(ofs)fputs(OFS,IOSTREAM);else ofs=1;/**/fputs(coalesce(s,NIL),IOSTREAM); } va_end(ap); fputs(EOL,IOSTREAM); }
+#define _PRINT void _cll1_print(char *s,...) _CLL1_FPRINT(stdout)
+#define _FPRINT void _cll1_fprint(FILE *f,char *s,...) _CLL1_FPRINT(f)
+#define _CLL1_FECHO(IOSTREAM) { va_list ap; /* <-' */ for(va_start(ap,s);s!=NIL;s=va_arg(ap,char *)) fputs(coalesce(s,NIL),IOSTREAM); va_end(ap); }
+#define _ECHO void _cll1_echo(char *s,...) _CLL1_FECHO(stdout)
+#define _FECHO void _cll1_fecho(FILE *f,char *s,...) _CLL1_FECHO(f)
+#define _CLL1_OUT _PRINT _FPRINT _ECHO _FECHO
+#define _FOR_INTS int _cll1_for_ints(int i, int n, ...) { int j=0;va_list ap; /* <-' */ va_start(ap,n); while(n!=WEIRDINT && j++<i) n=va_arg(ap,int); return n; }
+#define _FOR_PTRS void *_cll1_for_ptrs(int i, void *v, ...) { int j=0;va_list ap; /* <-' */ va_start(ap,v); while(v!=(void *)NIL && j++<i) v=va_arg(ap,void *); return v; }
+#define _CLL1_ARGS _FOR_INTS _FOR_PTRS
+#define _STRCMP int _cll1_strcmp(char *a,char *b) { if(a && b) return strcmp(a,b); else return (int)(a-b); }
+#define _STRCMPI int _cll1_strcmpi(char *a,char *b) { if(a && b) return strcasecmp(a,b); else return (int)(a-b); }
+#define _STRSTR char *_cll1_strstr(char *h,char *n) { if(h && n) return strstr(h,n); else return NULL; }
+//#define _WORDINSTR char *_cll1_wordinstr(char *a,char *b,int ign) { char *IFS=a; for(;a&&*a;a++) for(;*ifs||ifs=IFS;ifs++) if(*a=b);) for return strcasestr(a,b); else return NULL; }
+#define _CLL1_STRS _STRCMP _STRCMPI _STRSTR //_WORDINSTR
+/* .----------------------------------------------------------------------.
+ / 10. C<<1 globals and private macros, updated 2008-01-27 by xCh.
+ '----------------------------------------------------------------------- */
+#define _ARG1(ARG1,...) ARG1
+#define _ARG2(ARG1,ARG2,...) ARG2
+#define _ANYSTACK(TYPE,NAME) struct _##NAME##Atom { TYPE NAME; int C; list(_##NAME##Atom); } *_##NAME##atom,*_##NAME##stack=NULL;
+#define _CLL1_STACKS _ANYSTACK(int,I) _ANYSTACK(char *,S) _ANYSTACK(FILE *,F) _ANYSTACK(void *,CTX)
+#define _NEW(NAME,VALUE) for(_##NAME##atom=get_mem(_##NAME##Atom),_##NAME##atom->NAME=(VALUE),_##NAME##atom->C=1,push(_##NAME##atom,_##NAME##stack);_##NAME##atom->C||(pop(_##NAME##atom,_##NAME##stack),0);_##NAME##atom->C--)
+#define _I (_Iatom->I)
+#define _S (_Satom->S)
+#define _F (_Satom->F)
+#define _CTX (_CTXatom->CTX)
+#define _FOR_COLUMNS(A,B,C) _NEW(I,0) for( prefix(A,B,C) ; A ; ((A!=B)&&prefix(A,B,C)||(A=NULL) ),_I++ )
+#define _FOR_VALID_COLUMNS(A,B,C) _NEW(I,0) for( prefix(A,B,C) ; A ; ((A!=B)&&prefix(A,B,C))||(A=NULL) ) if(*A&&++_I)
+/* .----------------------------------------------------------------------.
+ / 11. C<<1 CGI and FASTCGI handling, updated 2008-01-16 by xCh.
+ '----------------------------------------------------------------------- */