123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #ifndef EVERY_H_INCLUDED
- #define EVERY_H_INCLUDED
- struct Every_;
- typedef struct Every_ Every;
- struct EveryActs_;
- typedef struct EveryActs_ EveryActs;
- typedef Every * (EveryNext(Every * every));
- typedef void * (EveryPut(Every * every, void * element));
- typedef void * (EveryDone(Every * every));
- typedef Every * (EveryInit(Every * every));
- struct EveryActs_ {
- EveryDone * done;
- EveryInit * init;
- EveryNext * next;
- EveryPut * put;
- };
- struct Every_ {
- void * now;
- void * on;
- int index;
- void * extra;
- EveryActs * acts;
- };
- struct Each_;
- typedef struct Each_ Each;
- struct Each_ {
- void * on;
- void * now;
- void * extra;
- int index;
- };
- typedef void * (EachDo(Each * element));
- typedef void * (AllData)(void * data, void * extra);
- typedef int (AllCompare)(void * one, void * two);
- Every * every_alloc (void);
- Every * every_done (Every * self );
- Every * every_free (Every * self );
- Every * every_init (Every * self , EveryActs * acts );
- Every * every_new (EveryActs * acts );
- void * every_get (Every * self );
- void * every_put (Every * self , void * data );
- Every * every_next (Every * self , void * data );
- Each * each_init (Each * self , void * on , void * data );
- Each * each_next (Each * self , void * now );
- void * each_now (Each * self );
- void * each_on (Each * self );
- void * each_extra (Each * self );
- int each_index (Each * self);
- typedef void * (Walker)(void * element, void * extra);
- #define EACH_NOW(EACH, TYPE) ((TYPE *) each_now(EACH))
- #endif
|