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) {
330 if (strcmp(se->data, s)==0) {
331 assert(se->refCount);
333 if (sl->ignoreRefCount)
347 if (strcasecmp(se->data, s)==0) {
348 assert(se->refCount);
350 if (sl->ignoreRefCount)
394 free((
void *)(se->data));
420 if (strcmp(se->data, s)==0) {
429 if (strcasecmp(se->data, s)==0) {
450 if (strcmp(se->data, s)==0) {
461 if (strcasecmp(se->data, s)==0) {
483 if (strcmp(se->data, s)==0) {
494 if (strcasecmp(se->data, s)==0) {
528 void *(*func)(
const char *s,
void *u),
541 result = func(el, user_data);
557 return l->first->data;
566 if (se1 && se2 && se1->data && se2->data)
567 return strcmp(se1->data, se2->data);
575 if (se1 && se2 && se1->data && se2->data)
576 return strcmp(se2->data, se1->data);
584 if (se1 && se2 && se1->data && se2->data)
585 return strcasecmp(se1->data, se2->data);
593 if (se1 && se2 && se1->data && se2->data)
594 return strcasecmp(se2->data, se1->data);
603 if (se1 && se2 && se1->data && se2->data) {
608 return (i1>i2) - (i1<i2);
618 if (se1 && se2 && se1->data && se2->data) {
623 return (i2>i1) - (i2<i1);
692 sentry->next=*psentry;
726 const unsigned char *s;
729 s=(
const unsigned char *)str;
737 const unsigned char *pStart;
743 while (*s && strchr(delimiters, *s)==
NULL)
750 toAdd=(
char *) malloc(len+1);
753 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)
GWENHYWFAR_API int GWEN_StringList_RemoveString(GWEN_STRINGLIST *sl, const char *s)
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
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)
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)