CrystalSpace

Public API Reference

CS::Utility::StringArray< Allocator, CapacityHandler > Class Template Reference

An array of strings. More...

#include <csutil/stringarray.h>

Inheritance diagram for CS::Utility::StringArray< Allocator, CapacityHandler >:

List of all members.

Public Types

enum  ConsecutiveDelimiterMode { delimSplitEach, delimIgnore, delimIgnoreDifferent }
 

Mode how SplitString() treats consecutive occurance of delimiters.

More...

Public Member Functions

size_t Contains (const char *str, bool case_sensitive=true) const
 Alias for Find() and FindCaseInsensitive().
bool Delete (const char *item)
 Delete the given element from the array.
size_t Find (const char *str) const
 Find a string, case-sensitive.
size_t FindCaseInsensitive (const char *str) const
 Find a string, case-insensitive.
size_t FindSortedKey (char const *key, bool case_sensitive=true, size_t *candidate=0) const
 Find an element.
size_t FindSortedKey (csArrayCmp< char const *, char const * > comparekey, size_t *candidate=0) const
 Find an element based on some key, using a comparison function.
size_t InsertSorted (const char *item, bool case_sensitive=true, size_t *equal_index=0)
 Insert an element at a sorted position.
csString Join (const char *separator="")
 Join all strings in the array into a single string, insert separator between them.
char * Pop ()
 Pop an element from tail end of array.
void Sort (bool case_sensitive=true)
 Sort array.
void Sort (int(*compare)(char const *const &, char const *const &))
 Sort array based on comparison function.
size_t SplitString (const char *str, const char *delimiters, ConsecutiveDelimiterMode delimMode=delimSplitEach)
 Add a number of strings to this array by splitting str at characters from delimiters.
 StringArray (const char *str, const char *delimiters, ConsecutiveDelimiterMode delimMode=delimSplitEach, size_t limit=0, const CapacityHandler &ch=CapacityHandler())
 Initialize object to hold initially limit elements, and increase storage by threshold each time the upper bound is exceeded.
 StringArray (size_t limit=0, const CapacityHandler &ch=CapacityHandler())
 Initialize object to hold initially limit elements, and increase storage by CapacityHandler each time the upper bound is exceeded.

Static Public Member Functions

static int CaseInsensitiveCompare (const char *const &item1, const char *const &item2)
 Case-insensitive comparision function for strings.
static int CaseSensitiveCompare (const char *const &item1, const char *const &item2)
 Case-sensitive comparision function for strings.

Detailed Description

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
class CS::Utility::StringArray< Allocator, CapacityHandler >

An array of strings.

This array will properly make copies of the strings and later delete those copies via delete[].

Definition at line 63 of file stringarray.h.


Member Enumeration Documentation

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
enum CS::Utility::StringArray::ConsecutiveDelimiterMode

Mode how SplitString() treats consecutive occurance of delimiters.

Enumerator:
delimSplitEach 

Split at each different delimiter.

delimIgnore 

Ignore consecutive delimiters (except the first).

In other words, any number of consecutive delimiters is treated like there was only one delimiter.

delimIgnoreDifferent 

Only ignore consecutive delimiters if they're different.

Definition at line 229 of file stringarray.h.


Constructor & Destructor Documentation

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
CS::Utility::StringArray< Allocator, CapacityHandler >::StringArray ( size_t  limit = 0,
const CapacityHandler &  ch = CapacityHandler() 
) [inline]

Initialize object to hold initially limit elements, and increase storage by CapacityHandler each time the upper bound is exceeded.

Definition at line 76 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
CS::Utility::StringArray< Allocator, CapacityHandler >::StringArray ( const char *  str,
const char *  delimiters,
ConsecutiveDelimiterMode  delimMode = delimSplitEach,
size_t  limit = 0,
const CapacityHandler &  ch = CapacityHandler() 
) [inline]

Initialize object to hold initially limit elements, and increase storage by threshold each time the upper bound is exceeded.

Additionally load in this array the splitted string provided.

Parameters:
str The string to split and place in this array.
delimiters The delimiters to use to split the string.
delimMode The way to split this array

Definition at line 253 of file stringarray.h.


Member Function Documentation

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
static int CS::Utility::StringArray< Allocator, CapacityHandler >::CaseInsensitiveCompare ( const char *const &  item1,
const char *const &  item2 
) [inline, static]

Case-insensitive comparision function for strings.

Definition at line 89 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
static int CS::Utility::StringArray< Allocator, CapacityHandler >::CaseSensitiveCompare ( const char *const &  item1,
const char *const &  item2 
) [inline, static]

Case-sensitive comparision function for strings.

Definition at line 82 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
size_t CS::Utility::StringArray< Allocator, CapacityHandler >::Contains ( const char *  str,
bool  case_sensitive = true 
) const [inline]

Alias for Find() and FindCaseInsensitive().

Parameters:
str String to look for in array.
case_sensitive If true, consider case when performing comparison. (default: yes)
Returns:
csArrayItemNotFound if not found, else item index.
Remarks:
Works with sorted and unsorted arrays, but FindSortedKey() is faster on sorted arrays.
Some people find Contains() more idiomatic than Find().

Definition at line 221 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
bool CS::Utility::StringArray< Allocator, CapacityHandler >::Delete ( const char *  item  )  [inline]

Delete the given element from the array.

Returns:
True if the item has been found and deleted, false otherwise.
Remarks:
Performs a linear search of the array to locate item, thus it may be slow for large arrays.

Definition at line 188 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
size_t CS::Utility::StringArray< Allocator, CapacityHandler >::Find ( const char *  str  )  const [inline]

Find a string, case-sensitive.

Returns:
csArrayItemNotFound if not found, else item index.
Remarks:
Works with sorted and unsorted arrays, but FindSortedKey() is faster on sorted arrays.

Definition at line 174 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
size_t CS::Utility::StringArray< Allocator, CapacityHandler >::FindCaseInsensitive ( const char *  str  )  const [inline]

Find a string, case-insensitive.

Returns:
csArrayItemNotFound if not found, else item index.
Remarks:
Works with sorted and unsorted arrays, but FindSortedKey() is faster on sorted arrays.

Definition at line 202 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
size_t CS::Utility::StringArray< Allocator, CapacityHandler >::FindSortedKey ( char const *  key,
bool  case_sensitive = true,
size_t *  candidate = 0 
) const [inline]

Find an element.

Returns:
csArrayItemNotFound if not found, else item index.
Remarks:
The array must be sorted.

Definition at line 132 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
size_t CS::Utility::StringArray< Allocator, CapacityHandler >::FindSortedKey ( csArrayCmp< char const *, char const * >  comparekey,
size_t *  candidate = 0 
) const [inline]

Find an element based on some key, using a comparison function.

Returns:
csArrayItemNotFound if not found, else item index.
Remarks:
The array must be sorted.

Definition at line 121 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
size_t CS::Utility::StringArray< Allocator, CapacityHandler >::InsertSorted ( const char *  item,
bool  case_sensitive = true,
size_t *  equal_index = 0 
) [inline]

Insert an element at a sorted position.

Remarks:
Assumes array is already sorted.

Definition at line 145 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
csString CS::Utility::StringArray< Allocator, CapacityHandler >::Join ( const char *  separator = ""  )  [inline]

Join all strings in the array into a single string, insert separator between them.

Definition at line 312 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
char* CS::Utility::StringArray< Allocator, CapacityHandler >::Pop (  )  [inline]

Pop an element from tail end of array.

Remarks:
Caller is responsible for invoking delete[] on the returned string when no longer needed.

Reimplemented from csArray< const char *, csStringArrayElementHandler, Allocator, CapacityHandler >.

Definition at line 158 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
void CS::Utility::StringArray< Allocator, CapacityHandler >::Sort ( bool  case_sensitive = true  )  [inline]

Sort array.

Parameters:
case_sensitive If true, consider case when performing comparison. (default: yes)

Definition at line 108 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
void CS::Utility::StringArray< Allocator, CapacityHandler >::Sort ( int(*)(char const *const &, char const *const &)  compare  )  [inline]

Sort array based on comparison function.

Reimplemented from csArray< const char *, csStringArrayElementHandler, Allocator, CapacityHandler >.

Definition at line 98 of file stringarray.h.

template<class Allocator = CS::Memory::AllocatorMalloc, class CapacityHandler = csArrayCapacityFixedGrow<16>>
size_t CS::Utility::StringArray< Allocator, CapacityHandler >::SplitString ( const char *  str,
const char *  delimiters,
ConsecutiveDelimiterMode  delimMode = delimSplitEach 
) [inline]

Add a number of strings to this array by splitting str at characters from delimiters.

It will start from the first char and won't ignore delimiters before the first word (in other words even with delimIgnore you'll get at least an empty string if the string starts with delimiters).

Definition at line 267 of file stringarray.h.


The documentation for this class was generated from the following file:

Generated for Crystal Space 2.1 by doxygen 1.6.1