performance test - write, fwrite and cll1 single arugment echo added
[svn/Cll1h/.git] / cll1.h
diff --git a/cll1.h b/cll1.h
index a12fdfffae86f8a30fdcda710d6e6d7e812ac957..0a4b0eaa28eddc29f674fb3435e9d2200bee3d71 100644 (file)
--- a/cll1.h
+++ b/cll1.h
@@ -20,7 +20,6 @@
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
 */
-
 #ifndef _CLL1_H
 #define _CLL1_H
 #define CLL1H_VERSION "0.7.1"
@@ -89,8 +88,8 @@
 #define dictionary(TYPE) tree(TYPE); char *__key
 #define array(TYPE) tree(TYPE); int __key
 #define interface(TYPE) struct TYPE *__interface
-#define get_mem(...) (struct _ARG1(__VA_ARGS__,)*)_cll1_malloc(sizeof(struct _ARG1(__VA_ARGS__,)), _ARG2(__VA_ARGS__,,) - 0 )
 #define get_str(...) (char *)_cll1_get_str(__VA_ARGS__,(void *)&_cll1_get_str)
+#define get_mem(...) (struct _ARG1(__VA_ARGS__,)*)_cll1_malloc(sizeof(struct _ARG1(__VA_ARGS__,)), _ARG2(__VA_ARGS__,,) - 0 )
 /* .----------------------------------------------------------------------.
   /  5. C<<1 string manipulation, updated 2008-01-26 xCh.
  '----------------------------------------------------------------------- */
  '----------------------------------------------------------------------- */
 #define push(NODE,HEAD) ( NODE ? ((NODE->__next=HEAD),(HEAD=NODE)) : NULL )
 #define pop(NODE,HEAD) ( HEAD ? ((NODE=HEAD->__next),free(HEAD),(HEAD=NODE)) : (NODE=NULL) )
-#define append(NODE,HEAD) { void *N=NODE; /**/ NODE->__next=NULL; for_search(NODE,HEAD,!NODE->__next) { NODE->__next=N; break; } }
-#define remove(NODE,HEAD,EXPR) { void **_D=NULL; /**/ for_search(NODE,HEAD,EXPR) { if(_D)*_D=NODE->__next; else HEAD=NODE->__next; free(NODE); } else _D=(void *)&(NODE->__next); }
+#define append(NODE,HEAD) { void *N=NODE; /* <-' */ NODE->__next=NULL; for_search(NODE,HEAD,!NODE->__next) { NODE->__next=N; break; } }
+#define remove(NODE,HEAD,EXPR) { void **_D=NULL; /* <-' */ for_search(NODE,HEAD,EXPR) { if(_D)*_D=NODE->__next; else HEAD=NODE->__next; free(NODE); } else _D=(void *)&(NODE->__next); }
 #define drop(NODE,HEAD) for( NODE=HEAD; NODE || (HEAD=NULL); HEAD=NODE, NODE=NODE->__next, free(HEAD) )
 //to do: seek
 //to do: store
 #define desc_sort_by(K1,K2) (strcasecmp(K1, K2)<0)
 #define ascii_by(K1,K2) (strcmp(K1, K2)>0)
 #define desc_ascii_by(K1,K2) (strcmp(K1, K2)<0)
-#define insert(NODE,HEAD,EXP,K) { if(HEAD) { void **_L=NULL, *H=HEAD; /**/ for_search(HEAD,H,EXP(HEAD->K,NODE->K)) { if(_L) {*_L=NODE; NODE->__next=HEAD; } else push(NODE,H); break; } else _L=(void *)&(HEAD->__next); if(!HEAD)*_L=NODE; HEAD=H; } else if (NODE) { push(NODE,HEAD); HEAD->__next=NULL; } }
-#define sort(NODE,HEAD,EXP,K) { void *_NEXT; /**/ NODE=HEAD; HEAD=NULL; do { _NEXT=NODE->__next; NODE->__next=NULL; insert(NODE,HEAD,EXP,K); NODE=_NEXT; } while(_NEXT); }
+#define insert(NODE,HEAD,EXP,K) { if(HEAD) { void **_L=NULL, *H=HEAD; /* <-' */ for_search(HEAD,H,EXP(HEAD->K,NODE->K)) { if(_L) {*_L=NODE; NODE->__next=HEAD; } else push(NODE,H); break; } else _L=(void *)&(HEAD->__next); if(!HEAD)*_L=NODE; HEAD=H; } else if (NODE) { push(NODE,HEAD); HEAD->__next=NULL; } }
+#define sort(NODE,HEAD,EXP,K) { void *_NEXT; /* <-' */ NODE=HEAD; HEAD=NULL; do { _NEXT=NODE->__next; NODE->__next=NULL; insert(NODE,HEAD,EXP,K); NODE=_NEXT; } while(_NEXT); }
 /* .----------------------------------------------------------------------.
   /  7. C<<1 builtin iterators and conditionals, updated 2008-01-26 xCh.
  '----------------------------------------------------------------------- */
 #define construct_interface(MTYPE,...) _construct_##_##MTYPE##_##_ARG1(__VA_ARGS__)((void *)__get_##_##MTYPE##_##__VA_ARGS__)
 #define get_object(TYPE,...) (struct TYPE *)_cll1_allocate_object(sizeof(struct TYPE), __VA_ARGS__)
 #define construct_object(TYPE,...)
-//#define _(OBJECT,...) (_ASSERT(OBJECT),/**/(*(OBJECT->interface->_ARG1(__VA_ARGS__,)))/**/(OBJECT,OBJECT->interface->__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__ )  )
 /* .----------------------------------------------------------------------.
   /  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,LASTARG) { int p2=0;char *ofs=coalesce(OFS,"\0");va_list ap; /**/ for(va_start(ap,s);s!=LASTARG;s=va_arg(ap,char *)) { if(p2 && *ofs) fputs(ofs,IOSTREAM); else p2=1; fputs(coalesce(s,NIL),IOSTREAM); } va_end(ap); if(EOL && *EOL) fputs(EOL,IOSTREAM); }
+#define _CLL1_FPRINT(IOSTREAM,LASTARG) { int ofs=0; va_list ap; /* <-' */ for(va_start(ap,s);s!=LASTARG;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,(void *)&_cll1_print)
 #define _FPRINT void _cll1_fprint(FILE *f,char *s,...) _CLL1_FPRINT(f,(void *)&_cll1_fprint)
-#define _CLL1_FECHO(IOSTREAM,LASTARG) { va_list ap; /**/ for(va_start(ap,s);s!=LASTARG;s=va_arg(ap,char *)) fputs(coalesce(s,NIL),IOSTREAM); va_end(ap); }
+#define _CLL1_FECHO(IOSTREAM,LASTARG) { va_list ap; /* <-' */ for(va_start(ap,s);s!=LASTARG;s=va_arg(ap,char *)) fputs(coalesce(s,NIL),IOSTREAM); va_end(ap); }
 #define _ECHO void _cll1_echo(char *s,...) _CLL1_FECHO(stdout,(void *)&_cll1_echo)
 #define _FECHO void _cll1_fecho(FILE *f,char *s,...) _CLL1_FECHO(f,(void *)&_cll1_fecho)
-#define _IT_INTS int _cll1_it_ints(int i, int n, ...) { int j=0;va_list ap; /**/ va_start(ap,n); while(n>=0 && j++<i) n=va_arg(ap,int); return n; }
-#define _IT_STRS char *_cll1_it_strs(int i, char *s, ...) { int j=0;va_list ap; /**/ va_start(ap,s); while(s!=(void *)&_cll1_it_strs && j++<i) s=va_arg(ap,char *); return s; }
+#define _IT_INTS int _cll1_it_ints(int i, int n, ...) { int j=0;va_list ap; /* <-' */ va_start(ap,n); while(n>=0 && j++<i) n=va_arg(ap,int); return n; }
+#define _IT_STRS char *_cll1_it_strs(int i, char *s, ...) { int j=0;va_list ap; /* <-' */ va_start(ap,s); while(s!=(void *)&_cll1_it_strs && j++<i) s=va_arg(ap,char *); return s; }
 /* .----------------------------------------------------------------------.
   /  10. C<<1 globals and private macros, updated 2008-01-27 by xCh.
  '----------------------------------------------------------------------- */
 #define _FOR_COLUMNS(A,B,C) _NEW_I for(_I=0,prefix(A,B,C);A;((A!=B)&&prefix(A,B,C)||(A=NULL)),_I++) 
 #define _FOR_VALID_COLUMNS(A,B,C) _NEW_I for(_I=0,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.  
+  /  11. 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 _CGIDICT
 #endif
 /* .----------------------------------------------------------------------.
-  /  12. MySQL infrastructure and wrappers  -  updated 2007-12-19 by xCh.
+  /  12. MySQL infrastructure and wrappers, updated 2007-12-19 by xCh.
  '----------------------------------------------------------------------- */
 #ifdef USE_LIBRARY_MYSQL
 #define mysql_connect(S,U,P,D) ((_SQLCatom=get_mem(_SQLCAtom)) && push(_SQLCatom,_SQLCstack) && (_SQLCatom->C=mysql_init(NULL)),(_SQLCatom->C && mysql_real_connect(_SQLCatom->C,S,U,P,D,0,NULL,0)?_SQLCatom->C:NULL))
This page took 0.145949 seconds and 4 git commands to generate.