THIS FILE IS UNFINISHED !!!! This file is called ABOUT, because it is, well... README, INSTALL, HOWTO, FAWQ, RTFM and maybe even manual, all in one file. So why not calling it ABOUT. ============================================================================== Your outside is in: ============================================================================== Well, if you are outside cll1.h... first, forget about all previouse versions of cll1.h. First of all: the source code should look familiar and readable to anyone, who have seen anything written in any sane programming language (which means basicaly anything like Bash, Basic, C, Java, Javascript, Pascal, Perl, PHP and Python and perhaps lot more). Let's see what we have and what you can use: 1. This Is The Program - forget int main(...)! ---------------------- #include "cll1.h" program {...} 2. This Is The String Pointer - just use it. ----------------------------- You don't have to declare "char *_;" - because we have done this for you automagicaly. In C<<1, this is generic temporary character pointer, which can be used to anything you need to do with strings. 3. This Is The Ouput Statement - no comment :-) ------------------------------ print(string1, string2, ...); 3. Dynamic lists - their declaration is complex, but their usage not. ---------------- struct ListType { ... list(ListType); } *listmemeber,*listhead=NULL; create(listmember,ListType); append(listmember,listhead); find(listmember,listhead,expression); remove(listmember,listhead,expression); sort(listmember,listhead,key,) 3. Iterations (cycles) without control variable - can be nested, of course ----------------------------------------------- do {...} loop; repeat (const int howmanytimes) {...} 4. New cool iterators (iteration expresions) for good old FOR cycle ------------------------------------------------------------------- for range (int controlvariable, const int from, const int to) {...} for each (ListType *controlvariable, ListType *listhead) {...} for chars (char controlvariable, const char *string) {...} for lines (char *controlvariable, char *filename) {...} for flines (char *controlvariable, FILE *filehandle) {...} 5. - 6. Undefined - reserved for future use ----------------- 7. Toys - everybody likes toys ------- spam (const int howmanytimes, const char *string); 8. Obsolete - but still backwards compatible with previous versions... ----------- every (A,B) {...} -> for each(A,B) {...} search (A,B,C) {...} -> for each(A,B) if (C) {...} 9. Then Buddhism - you can use then, and, or, not and TRUE/FALSE constants. ---------------- if (expression) then {...} else {...} if (not expression or expression and expression) then {...} else {...} ...if you wish, THEN you can. Forget about C, if you don't like it. if (expression) {...} else {...} if (! expression || expression && expression) {...} else {...} ...if you don't wish, you don't have to. Go back to the C, if you want. ============================================================================== Your inside is out: ============================================================================== If you are inside l1.h... first, forget about all previouse versions of cll1.h. I have changed lot of things dramaticaly. First of all, I found out, that I really have to learn C basics first, before I can attempt to write set of C language macros. C<<1 until version cca 0.6 seemed like a good idea, until I have encoutered Python. Then I become enlightened: we don't need thousand different iterators (eg. every,search,find, and so on). We already have one very nice iterator, called for. We can just stick with this meta-iterator like Python does, and we can have just different iteration macros for different data types and structers... so this is the way