-#define loop while(1)
-#define iterate(VAR,FROM,TO) for(VAR=FROM; VAR <= TO; VAR++)
-#define repeat(N) iterate(_i,1,N)
-
-/* Dynamic list macros & sequences, updated 2003-05-29 by xCh. */
-
-#define list(T) struct T *_next
-#define create(A,T) (A=(struct T *)malloc(sizeof(struct T)),A->_next=NULL)
-#define push(A,B) { if(A && A!=B) A->_next=B; B=A; }
-#define append(A,B) { if(B) { void *N=A; A->_next=NULL; search(A,B,!A->_next) {A->_next=N; break;}} else push(A,B); }
-#define remove(A,B,C) { void **_D=NULL; search(A,B,C) { if(_D)*_D=A->_next; else B=A->_next; free(A); } else _D=(void *)&(A->_next); }
-#define drop(A,B) { for( A=B; A ; B=A, A=A->_next, free(B)); B=NULL; }
-
-/* Dynamic list iterations and sequences, updated 2003-05-29 by xCh. */
-
-#define every(A,B) for( A=B; A; A=A->_next)
-#define search(A,B,C) every(A,B) if(C)
-#define find(A,B,C) search(A,B,C) break; if(A)
-
-/* EXP macros for Dummysort sequences, updated 2003-05-29 by xCh. */
+#define bool_str(I) (I?"TRUE":"FALSE")
+#define boolean int
+#define mem struct
+#define construct struct
+/* ------------------------------------------------------------------- */
+/* 2. C<<1 basic data types - updated 2008-01-07 by xCh. */
+/* ------------------------------------------------------------------- */
+#define Create_str(ID,INIT) char *ID=INIT
+#define Define_str(ID) char *ID=NULL
+#define Create_mem(ID,TYPE) struct TYPE *ID=get_mem(TYPE)
+#define Create_mem_in_context(ID,TYPE,CONTEXT) struct TYPE *ID=get_mem_in_context(TYPE,CONTEXT)
+#define Define_mem(ID,TYPE) struct TYPE *ID=NULL
+#define Define_mems(ID1,I2,TYPE) Define_mem(ID1,TYPE);Define_mem(ID2,TYPE)
+
+/* .... well....ehm...not very useful... :-) */
+#define Create_var(ID,TYPE,INIT) TYPE ID=INIT
+#define Define_var(ID,TYPE) TYPE ID
+/* ------------------------------------------------------------------- */
+#define list(T) struct T *_next
+#define tree(T) struct T *_next;struct T *_seek
+#define create(A,T) (A=(struct T *)malloc(sizeof(struct T)),A->_next=NULL,A)
+#define push(A,B) ((A && A!=B)?A->_next=B:0,B=A)
+#define pop(A,B) (B?((A?free(A):0),A=B=B->_next):(A=NULL))
+#define append(A,B) if(B) { void *N=A; A->_next=NULL; for_search(A,B,!A->_next) {A->_next=N; break;}} else push(A,B);
+#define remove(A,B,C) { void **_D=NULL; for_search(A,B,C) { if(_D)*_D=A->_next; else B=A->_next; free(A); } else _D=(void *)&(A->_next); }
+#define drop(A,B) for( A=B; A || (B=NULL); B=A, A=A->_next, free(B) )
+/* ------------------------------------------------------------------- */
+/* 3. C<<1 general iterators - updated 2008-01-07 by xCh. */
+/* ------------------------------------------------------------------- */
+#define loop while(TRUE)
+#define repeat(N) if(N>0) _NEW_I for_range(_I,1,N)
+#define for_range(VAR,FROM,TO) for( VAR=FROM ; FROM<=TO?VAR<=TO:VAR>=TO ; FROM<=TO?VAR++:VAR--)
+#define for_each(A,B) for(A=B; A; A=A->_next)
+#define for_search(A,B,C) for_each(A,B) if(C)
+#define for_file_lines(STR,F) /* _NEW_F for() */
+#define for_ints(VAR,...) _NEW_I while(_iterate_ints(&VAR,_I,__VA_LIST) )
+#define for_strs(VAR,...) _NEW_S
+/* 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_args _NEW_I for(_I=1;_I<argc;_I++)
+#define if_args if(argc>1)
+#define if_arg(VAL) if(eq(argv[_I],VAL))
+#define this_arg argv[_I]
+#define next_arg ((_I+1<argc)?argv[_I]:NULL)
+/* ------------------------------------------------------------------- */
+/* 6. C<<1 va_list based library functions, updated 2008-01-22 by xCh. */
+/* ------------------------------------------------------------------- */
+#define _ECHO void _cll1_print(int p,char *s, ... ) { int p2=0; va_list ap; for(va_start(ap,s);s!=(void *)&_cll1_print;s=va_arg(ap,char *)) { if(p) {if(p2) putchar(' '); else p2=1;} fputs(s?s:"",stdout); } va_end(ap); if(p) putchar('\n');}
+#define print(...) _cll1_print(1,__VA_ARGS__,(void *)&_cll1_print)
+#define echo(...) _cll1_print(0,__VA_ARGS__,(void *)&_cll1_print)
+/* ------------------------------------------------------------------- */
+/* 8. C<<1 CGI and FASTCGI handling, updated 2008-01-16 by xCh. */
+/* ------------------------------------------------------------------- */
+#ifdef USE_LIBRARY_FASTCGI
+#define while_fastcgi_accept while(FCGI_Accept()>=0)
+#define USE_MODULE_CGI
+#endif
+#ifdef USE_MODULE_CGI
+#define cgi(MIME) /* _init_cgi */ if(MIME) printf("Content-type: %s\r\n\r\n",MIME);
+//todo getcgi(VAR)
+//todo define_init_cgi
+//todo #define _QSTACK struct _QStack { char *Q; int _23; list(_QStack); } *_Qatom,*_Qstack=NULL;
+#endif
+/* ------------------------------------------------------------------- */
+/* 9. MySQL infrastructure and wrappers - updated 2007-12-19 by xCh. */
+/* ------------------------------------------------------------------- */
+#ifdef USE_LIBRARY_MYSQL
+#define mysql_connect(S,U,P,D) (create(_Matom,_MStack) && push(_Matom,_Mstack) && (_Matom->M=mysql_init(NULL)),(_Matom->M && mysql_real_connect(_Matom->M,S,U,P,D,0,NULL,0)?_Matom->M:NULL))
+#define for_mysql_query_results(ROW,QUERY) _NEW_(_Ratom,_Rstack,_RStack)for(_Ratom->R=(mysql_query(_Matom->M,QUERY)?NULL:mysql_use_result(_Matom->M)),ROW=(_Ratom->R?mysql_fetch_row(_Ratom->R):NULL);ROW;ROW=mysql_fetch_row(_Ratom->R))
+#define _MSTACK struct _MStack { MYSQL *M; int _23; list(_MStack); } *_Matom,*_Mstack=NULL;
+#define _RSTACK struct _RStack { MYSQL_RES *R; int _23; list(_RStack); } *_Ratom,*_Rstack=NULL;
+#else
+#define _MSTACK
+#define _RSTACK
+#endif
+/* ------------------------------------------------------------------- */
+/* old - from version 0.6 */
+/* ------------------------------------------------------------------- */