00001 #ifndef STR_ITER__H__
00002 #define STR_ITER__H__
00003
00004 #include "str.h"
00005
00015 typedef struct
00016 {
00018 const 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 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
00045
00046
00047 #endif