iter.h

00001 #ifndef STR_ITER__H__
00002 #define STR_ITER__H__
00003 
00004 struct str;
00005 
00015 typedef struct
00016 {
00018   const struct str* str;
00020   unsigned start;
00022   const char* startptr;
00024   unsigned len;
00026   char sep;
00027 } striter;
00028 
00029 void striter_start(striter* iter, const struct str* s, char sep);
00030 int striter_valid(striter*);
00031 int striter_advance(striter*);
00032 
00034 #define str_copyiter(STR,ITER) str_copyb(STR,(ITER)->startptr,(ITER)->len)
00035 
00037 #define str_catiter(STR,ITER) str_catb(STR,(ITER)->startptr,(ITER)->len)
00038 
00040 #define obuf_putiter(OBUF,ITER) obuf_write(OBUF,(ITER)->startptr,(ITER)->len)
00041 
00043 #define striter_loop(ITER,STR,SEP) for(striter_start(ITER,STR,SEP);striter_valid(ITER);striter_advance(ITER))
00044 
00047 #endif

Generated on Thu Feb 19 11:11:50 2009 for bglibs by  doxygen 1.5.4