From: xchaos Date: Thu, 13 Dec 2007 02:10:22 +0000 (+0000) Subject: demo "lists" prepsano na for each(...) a prelozi se X-Git-Url: https://git.harvie.cz/?a=commitdiff_plain;h=18c2a04b619cbd71f7a9e103be47a7f15d206874;p=svn%2FCll1h%2F.git demo "lists" prepsano na for each(...) a prelozi se git-svn-id: https://dev.arachne.cz/repos/cll1h/trunk@3 4bb87942-c103-4e5a-b51c-0ebff58f8515 --- diff --git a/cll1.h b/cll1.h index 4e01a9f..3e09887 100644 --- a/cll1.h +++ b/cll1.h @@ -1,8 +1,8 @@ -/* C<<1 header file v0.6 - style sheet for ANSI C */ +/* C<<1 header file v0.7 - style sheet for ANSI C */ /* Please pronounce as "cee-shift-left-by-one" :) */ -/* Copyright (G) 2004 Michael xChaos Polak, x@n.cz +/* Copyright (G) 2004-2007 Michael xChaos Polak, x(at)n.cz The C<<1 header file is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -47,7 +47,7 @@ #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; 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); A=NULL;} else _D=(void *)&(A->_next); } +#define remove(A,B,C) { void **_D=NULL; for each(A,B) if(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) ) /* Dynamic list iterations and sequences, updated 2003-05-29 by xCh. */ @@ -59,7 +59,7 @@ /* Enlightened iterations usable in for() , updated 2007-12-11 by xCh. */ #define range(VAR,FROM,TO) (VAR=FROM; VAR <= TO; VAR++) -#define each ((A,B) A=B; A; A=A->_next) +#define each(A,B) ( A=B; A; A=A->_next) #define lines(STR,F) () /* EXP macros for Dummysort sequences, updated 2003-05-29 by xCh. */ diff --git a/demos/lists.c b/demos/lists.c index 2c4218d..33230c9 100644 --- a/demos/lists.c +++ b/demos/lists.c @@ -8,47 +8,56 @@ struct Zaznam list(Zaznam); } *zaznam,*zaznamy=NULL; -program +program2 { puts("4x insert(zaznam,zaznamy,order_by,i);"); create(zaznam, Zaznam); zaznam->i=1; zaznam->j="ddd"; insert(zaznam,zaznamy,order_by,i); + create(zaznam, Zaznam); zaznam->i=3; zaznam->j="bbbbb"; insert(zaznam,zaznamy,order_by,i); + create(zaznam, Zaznam); zaznam->i=0; zaznam->j="e"; insert(zaznam,zaznamy,order_by,i); + create(zaznam, Zaznam); zaznam->i=2; zaznam->j="cc"; insert(zaznam,zaznamy,order_by,i); - every(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); + + for each(zaznam,zaznamy) printf("i=%d, j=%s\n",zaznam->i,zaznam->j); puts("1x append(zaznam,zaznamy);"); create(zaznam, Zaznam); zaznam->i=4; zaznam->j="aaa"; append(zaznam,zaznamy); - every(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); + + for each(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); puts("sort(zaznam,zaznamy,desc_order_by,i);"); sort(zaznam,zaznamy,desc_order_by,i); - every(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); + + for each(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); puts("sort(zaznam,zaznamy,desc_sort_by,j);"); sort(zaznam,zaznamy,desc_sort_by,j); - every(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); + + for each(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); puts("remove(zaznam,zaznamy,zaznam->i==1);"); remove(zaznam,zaznamy,zaznam->i==1); - every(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); + + for each(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); puts("drop(zaznam,zaznamy);"); drop(zaznam,zaznamy); - every(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); + + for each(zaznam,zaznamy)printf("i=%d, j=%s\n",zaznam->i,zaznam->j); }