30 #define DISABLE_DEBUGLOG
33 #include <gwenhywfar/gwenhywfarapi.h>
34 #include <gwenhywfar/misc.h>
35 #include "stringlist_p.h"
109 free((
void*)(e->data));
121 free((
void*)(sl->data));
164 tmpStr=(
char*) malloc(len+1);
166 memmove(tmpStr, s, len);
195 sl->first=curr->next;
200 while(curr->next!=se) {
240 if (strcmp(se->data, s)==0) {
251 if (strcasecmp(se->data, s)==0) {
279 if (strcmp(se->data, s)==0) {
290 if (strcasecmp(se->data, s)==0) {
316 if (strcmp(se->data, s)==0) {
317 assert(se->refCount);
319 if (sl->ignoreRefCount)
333 if (strcasecmp(se->data, s)==0) {
334 assert(se->refCount);
336 if (sl->ignoreRefCount)
375 if (se->data) free((
void*)(se->data));
376 if (s) se->data=strdup(s);
397 if (strcmp(se->data, s)==0) {
406 if (strcasecmp(se->data, s)==0) {
426 if (strcmp(se->data, s)==0) {
437 if (strcasecmp(se->data, s)==0) {
458 if (strcmp(se->data, s)==0) {
469 if (strcasecmp(se->data, s)==0) {
502 void *(*func)(
const char *s,
void *u),
514 result = func(el, user_data);
529 return l->first->data;
537 if (se1 && se2 && se1->data && se2->data)
538 return strcmp(se1->data, se2->data);
545 if (se1 && se2 && se1->data && se2->data)
546 return strcmp(se2->data, se1->data);
553 if (se1 && se2 && se1->data && se2->data)
554 return strcasecmp(se1->data, se2->data);
561 if (se1 && se2 && se1->data && se2->data)
562 return strcasecmp(se2->data, se1->data);
570 if (se1 && se2 && se1->data && se2->data) {
575 return (i1>i2) - (i1<i2);
584 if (se1 && se2 && se1->data && se2->data) {
589 return (i2>i1) - (i2<i1);
657 sentry->next=*psentry;
689 const unsigned char *s;
692 s=(
const unsigned char*)str;
700 const unsigned char *pStart;
706 while(*s && strchr(delimiters, *s)==
NULL)
713 toAdd=(
char*) malloc(len+1);
716 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)