X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=cll1.h;h=cb66f6fda918bfbc6616a772c6df17e1d58b6d63;hb=956a4c051a02b9c65d81e644c848e4e2f098da7e;hp=597a76adcbb260f32fbe04ddf127ae84fb3904f4;hpb=04a13a6fec5593523e15bd3567c573b7749b2609;p=svn%2FCll1h%2F.git diff --git a/cll1.h b/cll1.h index 597a76a..cb66f6f 100644 --- a/cll1.h +++ b/cll1.h @@ -52,14 +52,14 @@ #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); A=NULL;} else _D=(void *)&(A->_next); } +#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 iterators - updated 2008-01-07 by xCh. */ /* ------------------------------------------------------------------- */ #define loop while(TRUE) -#define repeat(N) _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 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) /*to do: #define for_file_lines(STR,F) _NEW_F for() */