5 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
8 fstreams_new(int capacity, fn_finalize_t fn_finalize)
12 if(!(fstreams = (fstreams_t) calloc(1, sizeof(s_fstreams_t))))
15 if(!(fstreams->items = vector_new(capacity, fn_finalize)))
25 fstreams_exclude(fstreams_t fstreams, excludes_t excludes)
30 if(!fstreams || !excludes)
33 if(excludes_is_empty(excludes))
36 if(!(to_erase = vector_new(8, NULL)))
39 /* collecte the file streams to exclude */
40 vector_rewind(fstreams->items);
42 while((fstream = vector_get(fstreams->items)))
44 if(excludes_contains(excludes, fstream))
45 vector_push_back(to_erase, fstream);
48 vector_move_next(fstreams->items);
51 if(!vector_is_empty(to_erase))
54 /* erase the file streams to exclude from the vector of file streams to run */
55 vector_rewind(to_erase);
57 while((fstream = vector_get(to_erase)))
59 vector_erase(fstreams->items, fstream);
61 vector_move_next(to_erase);
65 return vector_free(&to_erase);
69 fstreams_contains(fstreams_t fstreams, fstream_t fstream)
71 register fstream_t cur;
73 if(!fstreams || !fstream)
79 vector_rewind(fstreams->items);
81 while((cur = vector_get(fstreams->items)))
83 if(!strcmp(cur->name, fstream->name) && !strcmp(cur->directory, fstream->directory))
86 vector_move_next(fstreams->items);
93 fstreams_load(fstreams_t fstreams)
95 register fstream_t fstream;
100 vector_rewind(fstreams->items);
102 while((fstream = vector_get(fstreams->items)))
104 fstream_open(fstream);
105 vector_move_next(fstreams->items);
113 fstreams_add(fstreams_t fstreams, fstream_t fstream)
118 if(vector_push_back(fstreams->items, fstream))
126 fstreams_free(void** fstreamsptr)
133 if(EAGAIN != (rv = vector_free(&((*((fstreams_t*)fstreamsptr))->items))))
143 fstreams_get_size(fstreams_t fstreams)
151 return vector_get_size(fstreams->items);
155 fstreams_is_empty(fstreams_t fstreams)
163 return vector_is_empty(fstreams->items);