30 #define DISABLE_DEBUGLOG 33 #include <gwenhywfar/gwenhywfarapi.h> 34 #include <gwenhywfar/misc.h> 35 #include "stringlist_p.h" 115 free((
void *)(e->data));
128 free((
void *)(sl->data));
173 tmpStr=(
char *) malloc(len+1);
175 memmove(tmpStr, s, len);
205 sl->first=curr->next;
210 while (curr->next!=se) {
252 if (strcmp(se->data, s)==0) {
263 if (strcasecmp(se->data, s)==0) {
292 if (strcmp(se->data, s)==0) {
303 if (strcasecmp(se->data, s)==0) {
329 if (strcmp(se->data, s)==0) {
330 assert(se->refCount);
332 if (sl->ignoreRefCount)
346 if (strcasecmp(se->data, s)==0) {
347 assert(se->refCount);
349 if (sl->ignoreRefCount)
372 assert(se->refCount);
375 if (sl->ignoreRefCount)
414 free((
void *)(se->data));
440 if (strcmp(se->data, s)==0) {
449 if (strcasecmp(se->data, s)==0) {
470 if (strcmp(se->data, s)==0) {
481 if (strcasecmp(se->data, s)==0) {
503 if (strcmp(se->data, s)==0) {
514 if (strcasecmp(se->data, s)==0) {
548 void *(*func)(
const char *s,
void *u),
561 result = func(el, user_data);
577 return l->first->data;
586 if (se1 && se2 && se1->data && se2->data)
587 return strcmp(se1->data, se2->data);
595 if (se1 && se2 && se1->data && se2->data)
596 return strcmp(se2->data, se1->data);
604 if (se1 && se2 && se1->data && se2->data)
605 return strcasecmp(se1->data, se2->data);
613 if (se1 && se2 && se1->data && se2->data)
614 return strcasecmp(se2->data, se1->data);
623 if (se1 && se2 && se1->data && se2->data) {
628 return (i1>i2) - (i1<i2);
638 if (se1 && se2 && se1->data && se2->data) {
643 return (i2>i1) - (i2<i1);
712 sentry->next=*psentry;
746 const unsigned char *s;
749 s=(
const unsigned char *)str;
757 const unsigned char *pStart;
763 while (*s && strchr(delimiters, *s)==
NULL)
770 toAdd=(
char *) malloc(len+1);
773 memmove(toAdd, pStart, len);
void * GWEN_StringList_ForEach(const GWEN_STRINGLIST *l, void *(*func)(const char *s, void *u), void *user_data)
GWEN_STRINGLIST * GWEN_StringList_fromTabString(const char *s, int checkDup)
struct GWEN_STRINGLISTENTRYSTRUCT GWEN_STRINGLISTENTRY
void GWEN_StringListEntry_ReplaceString(GWEN_STRINGLISTENTRY *e, const char *s, int take)
int GWEN_StringList_GetStringPos(const GWEN_STRINGLIST *sl, const char *s)
void GWEN_StringList_Clear(GWEN_STRINGLIST *sl)
GWEN_STRINGLISTENTRY * GWEN_StringList_FindStringEntry(const GWEN_STRINGLIST *sl, const char *s)
void GWEN_StringList_Sort(GWEN_STRINGLIST *l, int ascending, GWEN_STRINGLIST_SORT_MODE sortMode)
static int GWEN_StringList__compar_asc_int(const void *a, const void *b)
#define GWEN_FREE_OBJECT(varname)
GWEN_STRINGLIST_SORT_MODE
int GWEN_StringList_InsertString(GWEN_STRINGLIST *sl, const char *s, int take, int checkDouble)
static int GWEN_StringList__compar_asc_nocase(const void *a, const void *b)
void GWEN_StringList_SetSenseCase(GWEN_STRINGLIST *sl, int i)
void GWEN_StringList_RemoveEntry(GWEN_STRINGLIST *sl, GWEN_STRINGLISTENTRY *se)
const char * GWEN_StringList_StringAt(const GWEN_STRINGLIST *sl, int idx)
GWEN_STRINGLISTENTRY * GWEN_StringList_FirstEntry(const GWEN_STRINGLIST *sl)
const char * GWEN_StringListEntry_Data(const GWEN_STRINGLISTENTRY *se)
void GWEN_StringList_free(GWEN_STRINGLIST *sl)
static int GWEN_StringList__compar_asc_case(const void *a, const void *b)
#define GWEN_NEW_OBJECT(typ, varname)
int GWEN_StringList_AppendString(GWEN_STRINGLIST *sl, const char *s, int take, int checkDouble)
void GWEN_StringListEntry_free(GWEN_STRINGLISTENTRY *sl)
static int GWEN_StringList__compar_desc_nocase(const void *a, const void *b)
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
int GWEN_StringList_RemoveString(GWEN_STRINGLIST *sl, const char *s)
GWEN_STRINGLIST * GWEN_StringList_fromString(const char *str, const char *delimiters, int checkDouble)
GWEN_STRINGLISTENTRY * GWEN_StringListEntry_new(const char *s, int take)
GWEN_STRINGLIST * GWEN_StringList_dup(const GWEN_STRINGLIST *sl)
unsigned int GWEN_StringList_Count(const GWEN_STRINGLIST *sl)
static int GWEN_StringList__compar_desc_case(const void *a, const void *b)
#define DBG_ERROR(dbg_logger, format, args...)
const char * GWEN_StringList_FirstString(const GWEN_STRINGLIST *l)
int GWEN_StringList_HasString(const GWEN_STRINGLIST *sl, const char *s)
GWEN_STRINGLISTENTRY * GWEN_StringListEntry_Next(const GWEN_STRINGLISTENTRY *se)
void GWEN_StringList_AppendEntry(GWEN_STRINGLIST *sl, GWEN_STRINGLISTENTRY *se)
void GWEN_StringListEntry_SetData(GWEN_STRINGLISTENTRY *se, const char *s)
void GWEN_StringList_RemoveFirstString(GWEN_STRINGLIST *sl)
static int GWEN_StringList__compar_desc_int(const void *a, const void *b)
GWEN_STRINGLIST * GWEN_StringList_new(void)
void GWEN_StringList_SetIgnoreRefCount(GWEN_STRINGLIST *sl, int i)