gwenhywfar  5.4.1
Macros | Functions
stringlist.c File Reference
#include <gwenhywfar/gwenhywfarapi.h>
#include <gwenhywfar/misc.h>
#include "stringlist_p.h"
#include "debug.h"
#include <stdlib.h>
#include <assert.h>
#include <string.h>
Include dependency graph for stringlist.c:

Go to the source code of this file.

Macros

#define DISABLE_DEBUGLOG
 

Functions

static int GWEN_StringList__compar_asc_case (const void *a, const void *b)
 
static int GWEN_StringList__compar_asc_int (const void *a, const void *b)
 
static int GWEN_StringList__compar_asc_nocase (const void *a, const void *b)
 
static int GWEN_StringList__compar_desc_case (const void *a, const void *b)
 
static int GWEN_StringList__compar_desc_int (const void *a, const void *b)
 
static int GWEN_StringList__compar_desc_nocase (const void *a, const void *b)
 
void GWEN_StringList_AppendEntry (GWEN_STRINGLIST *sl, GWEN_STRINGLISTENTRY *se)
 
int GWEN_StringList_AppendString (GWEN_STRINGLIST *sl, const char *s, int take, int checkDouble)
 
void GWEN_StringList_Clear (GWEN_STRINGLIST *sl)
 
unsigned int GWEN_StringList_Count (const GWEN_STRINGLIST *sl)
 
GWEN_STRINGLISTGWEN_StringList_dup (const GWEN_STRINGLIST *sl)
 
GWEN_STRINGLISTENTRYGWEN_StringList_FindStringEntry (const GWEN_STRINGLIST *sl, const char *s)
 
GWEN_STRINGLISTENTRYGWEN_StringList_FirstEntry (const GWEN_STRINGLIST *sl)
 
const char * GWEN_StringList_FirstString (const GWEN_STRINGLIST *l)
 
void * GWEN_StringList_ForEach (const GWEN_STRINGLIST *l, void *(*func)(const char *s, void *u), void *user_data)
 
void GWEN_StringList_free (GWEN_STRINGLIST *sl)
 
GWEN_STRINGLISTGWEN_StringList_fromString (const char *str, const char *delimiters, int checkDouble)
 
GWEN_STRINGLISTGWEN_StringList_fromTabString (const char *s, int checkDup)
 
int GWEN_StringList_GetStringPos (const GWEN_STRINGLIST *sl, const char *s)
 
int GWEN_StringList_HasString (const GWEN_STRINGLIST *sl, const char *s)
 
int GWEN_StringList_InsertString (GWEN_STRINGLIST *sl, const char *s, int take, int checkDouble)
 
GWEN_STRINGLISTGWEN_StringList_new (void)
 
void GWEN_StringList_RemoveEntry (GWEN_STRINGLIST *sl, GWEN_STRINGLISTENTRY *se)
 
void GWEN_StringList_RemoveFirstString (GWEN_STRINGLIST *sl)
 
int GWEN_StringList_RemoveString (GWEN_STRINGLIST *sl, const char *s)
 
void GWEN_StringList_SetIgnoreRefCount (GWEN_STRINGLIST *sl, int i)
 
void GWEN_StringList_SetSenseCase (GWEN_STRINGLIST *sl, int i)
 
void GWEN_StringList_Sort (GWEN_STRINGLIST *l, int ascending, GWEN_STRINGLIST_SORT_MODE sortMode)
 
const char * GWEN_StringList_StringAt (const GWEN_STRINGLIST *sl, int idx)
 
const char * GWEN_StringListEntry_Data (const GWEN_STRINGLISTENTRY *se)
 
void GWEN_StringListEntry_free (GWEN_STRINGLISTENTRY *sl)
 
GWEN_STRINGLISTENTRYGWEN_StringListEntry_new (const char *s, int take)
 
GWEN_STRINGLISTENTRYGWEN_StringListEntry_Next (const GWEN_STRINGLISTENTRY *se)
 
void GWEN_StringListEntry_ReplaceString (GWEN_STRINGLISTENTRY *e, const char *s, int take)
 
void GWEN_StringListEntry_SetData (GWEN_STRINGLISTENTRY *se, const char *s)
 

Macro Definition Documentation

◆ DISABLE_DEBUGLOG

#define DISABLE_DEBUGLOG

Definition at line 30 of file stringlist.c.

Function Documentation

◆ GWEN_StringList__compar_asc_case()

static int GWEN_StringList__compar_asc_case ( const void *  a,
const void *  b 
)
static

Definition at line 600 of file stringlist.c.

Referenced by GWEN_StringList_Sort().

Here is the caller graph for this function:

◆ GWEN_StringList__compar_asc_int()

static int GWEN_StringList__compar_asc_int ( const void *  a,
const void *  b 
)
static

Definition at line 619 of file stringlist.c.

Referenced by GWEN_StringList_Sort().

Here is the caller graph for this function:

◆ GWEN_StringList__compar_asc_nocase()

static int GWEN_StringList__compar_asc_nocase ( const void *  a,
const void *  b 
)
static

Definition at line 582 of file stringlist.c.

Referenced by GWEN_StringList_Sort().

Here is the caller graph for this function:

◆ GWEN_StringList__compar_desc_case()

static int GWEN_StringList__compar_desc_case ( const void *  a,
const void *  b 
)
static

Definition at line 609 of file stringlist.c.

Referenced by GWEN_StringList_Sort().

Here is the caller graph for this function:

◆ GWEN_StringList__compar_desc_int()

static int GWEN_StringList__compar_desc_int ( const void *  a,
const void *  b 
)
static

Definition at line 634 of file stringlist.c.

Referenced by GWEN_StringList_Sort().

Here is the caller graph for this function:

◆ GWEN_StringList__compar_desc_nocase()

static int GWEN_StringList__compar_desc_nocase ( const void *  a,
const void *  b 
)
static

Definition at line 591 of file stringlist.c.

Referenced by GWEN_StringList_Sort().

Here is the caller graph for this function:

◆ GWEN_StringList_AppendEntry()

void GWEN_StringList_AppendEntry ( GWEN_STRINGLIST sl,
GWEN_STRINGLISTENTRY se 
)

Definition at line 135 of file stringlist.c.

Referenced by GWEN_StringList_AppendString(), and GWEN_StringList_dup().

Here is the caller graph for this function:

◆ GWEN_StringList_AppendString()

int GWEN_StringList_AppendString ( GWEN_STRINGLIST sl,
const char *  s,
int  take,
int  checkDouble 
)

Appends a string.

Returns
0 if not appended, !=0 if appended
Parameters
takeif true then the StringList takes over ownership of the string
checkDoubleif true the the string will only be appended if it does not already exist

Definition at line 241 of file stringlist.c.

References GWEN_StringList_AppendEntry(), and GWEN_StringListEntry_new().

Referenced by _addLogLineToList(), FOX16_HtmlLabel::addMediaPath(), addToList(), Gtk2Gui_WComboBox_SetCharProperty(), Gtk3Gui_WComboBox_SetCharProperty(), GWEN_ConfigMgrDir_ListSubGroups(), GWEN_DBIO_CSV__ReadLine(), GWEN_DBIO_CSV_Import(), GWEN_Dialog_AddMediaPath(), GWEN_Dialog_AddMediaPathsFromPathManager(), GWEN_Directory_GetAllEntries(), GWEN_Directory_GetDirEntries(), GWEN_Directory_GetFileEntries(), GWEN_Directory_GetFileEntriesWithType(), GWEN_Directory_GetMatchingFilesRecursively(), GWEN_Gui_Internal_SetPasswordStatus(), GWEN_I18N_SetLocale(), GWEN_MDigest__HashFileTree(), GWEN_MsgEngine__ListGroup(), GWEN_MsgEngine__ShowGroup(), GWEN_PasswordStore_GetTokenList(), GWEN_PathManager_GetPaths(), GWEN_StringList_fromString(), GWEN_StringList_fromTabString(), GWEN_SyncIo_Buffered_ReadLinesToStringList(), GWEN_SyncIo_Tls_Prepare(), HtmlCtx_AddMediaPath(), Typemaker2_Builder_AddCode(), Typemaker2_Builder_AddLibraryDeclaration(), Typemaker2_Builder_AddPrivateDeclaration(), Typemaker2_Builder_AddProtectedDeclaration(), Typemaker2_Builder_AddPublicDeclaration(), and Typemaker2_TypeManager_AddFolder().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_StringList_Clear()

void GWEN_StringList_Clear ( GWEN_STRINGLIST sl)

Definition at line 224 of file stringlist.c.

References GWEN_StringListEntry_free().

Referenced by Gtk2Gui_WComboBox_SetCharProperty(), Gtk2Gui_WComboBox_SetIntProperty(), Gtk3Gui_WComboBox_SetCharProperty(), Gtk3Gui_WComboBox_SetIntProperty(), GWEN_DBIO_CSV_Import(), GWEN_I18N_SetLocale(), and Test_Gui_FlushLogs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_StringList_Count()

unsigned int GWEN_StringList_Count ( const GWEN_STRINGLIST sl)

◆ GWEN_StringList_dup()

GWEN_STRINGLIST* GWEN_StringList_dup ( const GWEN_STRINGLIST sl)

Definition at line 526 of file stringlist.c.

References GWEN_StringList_AppendEntry(), GWEN_StringList_new(), and GWEN_StringListEntry_new().

Here is the call graph for this function:

◆ GWEN_StringList_FindStringEntry()

GWEN_STRINGLISTENTRY* GWEN_StringList_FindStringEntry ( const GWEN_STRINGLIST sl,
const char *  s 
)

Returns the first stringlist entry which contains the given string

Returns
string list entry containing the given string, NULL otherwise

Definition at line 493 of file stringlist.c.

References NULL.

◆ GWEN_StringList_FirstEntry()

GWEN_STRINGLISTENTRY* GWEN_StringList_FirstEntry ( const GWEN_STRINGLIST sl)

◆ GWEN_StringList_FirstString()

const char* GWEN_StringList_FirstString ( const GWEN_STRINGLIST l)

Returns the first string in this list.

Definition at line 572 of file stringlist.c.

Referenced by GWEN_I18N_ModuleInit(), and main().

Here is the caller graph for this function:

◆ GWEN_StringList_ForEach()

void* GWEN_StringList_ForEach ( const GWEN_STRINGLIST l,
void *(*)(const char *s, void *u)  func,
void *  user_data 
)

Traverses the list, calling the callback function 'func' on each list element. Traversal will stop when 'func' returns a non-NULL value, and the routine will return with that value. Otherwise the routine will return NULL.

Parameters
lThe list to traverse.
funcThe function to be called with each list element.
user_dataA pointer passed on to the function 'func'.
Returns
The non-NULL pointer returned by 'func' as soon as it returns one. Otherwise (i.e. 'func' always returns NULL) returns NULL.

Definition at line 547 of file stringlist.c.

References GWEN_StringList_FirstEntry(), GWEN_StringListEntry_Data(), and GWEN_StringListEntry_Next().

Referenced by print_paths().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_StringList_free()

void GWEN_StringList_free ( GWEN_STRINGLIST sl)

◆ GWEN_StringList_fromString()

GWEN_STRINGLIST* GWEN_StringList_fromString ( const char *  str,
const char *  delimiters,
int  checkDouble 
)

Definition at line 742 of file stringlist.c.

References GWEN_StringList_AppendString(), GWEN_StringList_Count(), GWEN_StringList_free(), GWEN_StringList_new(), and NULL.

Referenced by Typemaker2_FlagsFromString(), and Typemaker2_TypeFlagsFromString().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_StringList_fromTabString()

GWEN_STRINGLIST* GWEN_StringList_fromTabString ( const char *  s,
int  checkDup 
)

Definition at line 158 of file stringlist.c.

References GWEN_StringList_AppendString(), and GWEN_StringList_new().

Here is the call graph for this function:

◆ GWEN_StringList_GetStringPos()

int GWEN_StringList_GetStringPos ( const GWEN_STRINGLIST sl,
const char *  s 
)

Returns the position of the given string within the stringlist.

Returns
position, -1 if not found

Definition at line 460 of file stringlist.c.

◆ GWEN_StringList_HasString()

int GWEN_StringList_HasString ( const GWEN_STRINGLIST sl,
const char *  s 
)

Checks whether the given string already exists within in the string list.

Returns
!=0 if found, 0 otherwise

Definition at line 431 of file stringlist.c.

Referenced by GWEN_Gui_Internal_GetPassword().

Here is the caller graph for this function:

◆ GWEN_StringList_InsertString()

int GWEN_StringList_InsertString ( GWEN_STRINGLIST sl,
const char *  s,
int  take,
int  checkDouble 
)

Inserts a string.

Returns
0 if not inserted, !=0 if inserted
Parameters
takeif true then the StringList takes over ownership of the string
checkDoubleif true the the string will only be appended if it does not already exist

Definition at line 281 of file stringlist.c.

References GWEN_StringListEntry_new().

Here is the call graph for this function:

◆ GWEN_StringList_new()

GWEN_STRINGLIST* GWEN_StringList_new ( void  )

◆ GWEN_StringList_RemoveEntry()

void GWEN_StringList_RemoveEntry ( GWEN_STRINGLIST sl,
GWEN_STRINGLISTENTRY se 
)

Definition at line 194 of file stringlist.c.

Referenced by GWEN_StringList_RemoveFirstString(), and GWEN_StringList_RemoveString().

Here is the caller graph for this function:

◆ GWEN_StringList_RemoveFirstString()

void GWEN_StringList_RemoveFirstString ( GWEN_STRINGLIST sl)

Removes the first string from the stringlist (if any).

Definition at line 365 of file stringlist.c.

References GWEN_StringList_RemoveEntry().

Referenced by _addLogLineToList().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_StringList_RemoveString()

int GWEN_StringList_RemoveString ( GWEN_STRINGLIST sl,
const char *  s 
)

Removes a given string from the stringlist.

Returns
0 if not found, !=0 if found and removed

Definition at line 322 of file stringlist.c.

References GWEN_StringList_RemoveEntry().

Referenced by GWEN_Gui_Internal_GetPassword(), GWEN_Gui_Internal_SetPasswordStatus(), and GWEN_MDigest_CheckFileTree().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_StringList_SetIgnoreRefCount()

void GWEN_StringList_SetIgnoreRefCount ( GWEN_STRINGLIST sl,
int  i 
)

Normally this group of functions ignores reference counters on stringlist entries when removing a string via GWEN_StringList_RemoveString. You can change this behaviour here.

Parameters
slstring list
iif 0 then reference counters are honoured

Definition at line 83 of file stringlist.c.

◆ GWEN_StringList_SetSenseCase()

void GWEN_StringList_SetSenseCase ( GWEN_STRINGLIST sl,
int  i 
)

Normally this group of functions ignores cases when comparing two strings. You can change this behaviour here.

Parameters
slstring list
iif 0 then cases are ignored

Definition at line 75 of file stringlist.c.

◆ GWEN_StringList_Sort()

void GWEN_StringList_Sort ( GWEN_STRINGLIST l,
int  ascending,
GWEN_STRINGLIST_SORT_MODE  sortMode 
)

Sorts this list. Internally this uses qsort(3), so the sorting should be reasonably fast even for large lists.

Parameters
lThe list to sort.
ascendingIf non-zero, the list is sorted ascending, i.e. smallest string first, according to strcmp(3) rules. If zero, the list is sorted descending.
sortModeSee GWEN_StringList_SortModeNoCase and following

Definition at line 651 of file stringlist.c.

References DBG_ERROR, GWEN_LOGDOMAIN, GWEN_StringList__compar_asc_case(), GWEN_StringList__compar_asc_int(), GWEN_StringList__compar_asc_nocase(), GWEN_StringList__compar_desc_case(), GWEN_StringList__compar_desc_int(), GWEN_StringList__compar_desc_nocase(), GWEN_StringList_SortModeCase, GWEN_StringList_SortModeInt, GWEN_StringList_SortModeNoCase, and NULL.

Here is the call graph for this function:

◆ GWEN_StringList_StringAt()

const char* GWEN_StringList_StringAt ( const GWEN_STRINGLIST sl,
int  idx 
)

Definition at line 726 of file stringlist.c.

Referenced by Gtk2Gui_WComboBox_GetCharProperty(), and Gtk3Gui_WComboBox_GetCharProperty().

Here is the caller graph for this function:

◆ GWEN_StringListEntry_Data()

const char* GWEN_StringListEntry_Data ( const GWEN_STRINGLISTENTRY se)

◆ GWEN_StringListEntry_free()

void GWEN_StringListEntry_free ( GWEN_STRINGLISTENTRY sl)

Definition at line 124 of file stringlist.c.

References GWEN_FREE_OBJECT.

Referenced by GWEN_StringList_Clear(), and GWEN_StringList_free().

Here is the caller graph for this function:

◆ GWEN_StringListEntry_new()

GWEN_STRINGLISTENTRY* GWEN_StringListEntry_new ( const char *  s,
int  take 
)

Definition at line 91 of file stringlist.c.

References GWEN_NEW_OBJECT.

Referenced by GWEN_StringList_AppendString(), GWEN_StringList_dup(), and GWEN_StringList_InsertString().

Here is the caller graph for this function:

◆ GWEN_StringListEntry_Next()

GWEN_STRINGLISTENTRY* GWEN_StringListEntry_Next ( const GWEN_STRINGLISTENTRY se)

◆ GWEN_StringListEntry_ReplaceString()

void GWEN_StringListEntry_ReplaceString ( GWEN_STRINGLISTENTRY e,
const char *  s,
int  take 
)

Definition at line 109 of file stringlist.c.

◆ GWEN_StringListEntry_SetData()

void GWEN_StringListEntry_SetData ( GWEN_STRINGLISTENTRY se,
const char *  s 
)

Definition at line 410 of file stringlist.c.

References NULL.