order_by_int, order_by_str, order_by_ascii + some examples
[svn/Cll1h/.git] / cll1.h
diff --git a/cll1.h b/cll1.h
index 7192150d45d26a8656cd714f21dc08cb71a95fa9..711b951a3213b901ed44c0bb43f13cf950e4ab26 100644 (file)
--- a/cll1.h
+++ b/cll1.h
@@ -61,7 +61,7 @@ typedef FILE * file;
 typedef int bool;
 extern  str NIL,EOL,OFS,IFS;
 extern  unsigned RANDOM_SEED;
-#define _EXPORT_GLOBALS str NIL="NULL", EOL="\n", OFS=" ", IFS=" \t\n"; unsigned RANDOM_SEED=0;
+#define _EXPORT_GLOBALS str NIL="(null)", EOL="\n", OFS=" ", IFS=" \t\n"; unsigned RANDOM_SEED=0;
 /* .----------------------------------------------------------------------.
   /  1. C<<1 then buddhist section, updated 2008-02-04 xCh.
  '----------------------------------------------------------------------- */
@@ -109,11 +109,13 @@ extern  unsigned RANDOM_SEED;
 #define get_str(...) _cll1_get_str(__VA_ARGS__,NIL)
 #define eq(A,B) (!_cll1_str_cmp(A,B))
 #define eqi(A,B) (!_cll1_str_cmpi(A,B))
+//#define str_eq(A,B) eq(A,B) ?
+//#define str_eqi(A,B) eqi(A,B)
 #define str_order(A,B) _cll1_str_coll(A,B)
 #define str_ascii(A,B) _cll1_str_cmp(A,B)
 #define str_len(...) _cll1__strlen(__VA_ARGS__,NIL)
 #define str_in(A,B) _cll1_str_str(A,B)
-#define word_in_str(A,B) _cll1_wordinstr(A,B,0)
+#define word_in(A,B) _cll1_wordinstr(A,B,0)
 #define print(...) _cll1_print(__VA_ARGS__,NIL)
 #define fprint(...) _cll1_fprint(__VA_ARGS__,NIL)
 #define file_print(...) _cll1_fprint(_F,__VA_ARGS__,NIL)
@@ -134,14 +136,14 @@ extern  unsigned RANDOM_SEED;
 //to do: seek
 //to do: store
 #define count(NODE,HEAD,VAR) { _NEW(I,0) for(NODE=HEAD; NODE || ((VAR=_I),0) ; (NODE=NODE->__next)?(_I++):0 ); }
-#define order_by(K1,K2) (K1>K2)
-#define desc_order_by(K1,K2) (K1<K2)
-#define sort_by(K1,K2) (str_order(K1,K2)>0)
-#define desc_sort_by(K1,K2) (str_order(K1,K2)<0)
-#define ascii_by(K1,K2) (str_ascii(K1,K2)>0)
-#define desc_ascii_by(K1,K2) (str_ascii(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 order_by_int(K1,K2) (K1>K2)
+#define order_by_int_desc(K1,K2) (K1<K2)
+#define order_by_str(K1,K2) (str_order(K1,K2)>0)
+#define order_by_str_desc(K1,K2) (str_order(K1,K2)<0)
+#define order_by_ascii(K1,K2) (str_ascii(K1,K2)>0)
+#define order_by_ascii_desc(K1,K2) (str_ascii(K1,K2)<0)
+#define insert(NODE,HEAD,ORDERBY,KEY) { if(HEAD) { void **_L=NULL, *H=HEAD; /* <-' */ for_search(HEAD,H,ORDERBY(HEAD->KEY,NODE->KEY)) { 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,ORDERBY,KEY) { void *_NEXT; /* <-' */ NODE=HEAD; HEAD=NULL; do { _NEXT=NODE->__next; NODE->__next=NULL; insert(NODE,HEAD,ORDERBY,KEY); NODE=_NEXT; } while(_NEXT); }
 /* .----------------------------------------------------------------------.
   /  7. C<<1 builtin iterators and conditionals, updated 2008-01-26 xCh.
  '----------------------------------------------------------------------- */
@@ -347,15 +349,19 @@ obsolete
 //#define _ASSERT(EXPR) assert(EXPR)
 
 /* .----------------------------------------------------------------------.
-  /  99. We have have done our homework - now let's have some fun:          
+  /  98. We have have done our homework - now let's have some fun:          
  '----------------------------------------------------------------------- */
 #define _INIT_VARIABLES _EXPORT_GLOBALS _EXPORT_YES _EXPORT_STACKS _SQL_GLOBALS _CGI_GLOBALS
 #define _IMPL_FUNCTIONS _MALLOC _EXPORT_OUTS _EXPORT_ARGS _EXPORT_STRS
 #define _IMPL_INTERFACE //_SQL_IFC _CAKE_IFC _STD_IFC _X_IFC
 #define _IMPLEMENT_CLL1_LIBRARY _INIT_VARIABLES _IMPL_FUNCTIONS _IMPL_INTERFACE
+#define _PROGRAM _cll1_program
+#define _DECLARE_PROGRAM void _PROGRAM(int argc, char **argv)
+#define program _IMPLEMENT_CLL1_LIBRARY _DECLARE_PROGRAM; int main(int argc, char **argv) { setlocale(LC_ALL, ""); _PROGRAM(argc,argv); return 0; } _DECLARE_PROGRAM
 #ifdef USE_PREPROCESSOR
 #include "_include.c"
 #endif
-
-#define program _IMPLEMENT_CLL1_LIBRARY void _program(int argc, char **argv); int main(int argc, char **argv) { setlocale(LC_ALL, ""); _program(argc,argv); return 0; } void _program(int argc, char **argv)
+/* .----------------------------------------------------------------------.
+  /  99. C<<1 is up and running. It's your turn now to show something new.
+ '----------------------------------------------------------------------- */
 #endif
This page took 0.17348 seconds and 4 git commands to generate.