Synesis Software

cstring/cstring.h File Reference


Detailed Description

Definition of the cstring API.

#include <stddef.h>
#include <stdio.h>

Go to the source code of this file.

Namespaces

namespace  stlsoft

Classes

struct  cstring_t
 The cstring structure. More...

Defines

#define CSTRING_VER   0x030602ff
 The current composite version number of cstring.
#define CSTRING_VER_MAJOR   3
 The major version number of cstring.
#define CSTRING_VER_MINOR   6
 The minor version number of cstring.
#define CSTRING_VER_REVISION   2
 The revision version number of cstring.
#define CSTRING_EXTERN_C   extern "C"
#define cstring_t_DEFAULT   { 0, NULL, 0, 0 }
 Default initialised value for a cstring_t instance.
#define CSTRING_FROM_END(x)   (-1 - (int)(x))
 Defines a reverse offset for use with the insert and replace functions.
#define CSTRING_F_TYPE_MASK   (0x003f)
#define CSTRING_F_MEMORY_IS_INTERNAL_HEAP   (0x0000)
#define CSTRING_F_MEMORY_IS_BORROWED   (0x0001)
#define CSTRING_F_MEMORY_IS_FIXED   (0x0002)
#define CSTRING_F_MEMORY_IS_READONLY   (0x0004)
#define CSTRING_F_MEMORY_IS_CONST   CSTRING_F_MEMORY_IS_READONLY
#define CSTRING_F_MEMORY_IS_OFFSET   (0x0040)
#define CSTRING_F_MEMORY_CAN_GROW_TO_HEAP   (0x0080)
#define CSTRING_F_ARENA_MASK   (0xff00)
#define CSTRING_F_USE_REALLOC   (0x0000)
#define CSTRING_F_USE_WINDOWS_GLOBAL_MEMORY   (0x0100)
#define CSTRING_F_USE_WINDOWS_PROCESSHEAP_MEMORY   (0x0200)
#define CSTRING_F_USE_WINDOWS_COM_TASK_MEMORY   (0x0400)
#define CSTRING_F_USE_CUSTOMARENAFUNCTIONS   (0x2000)
#define CSTRING_F_CUSTOMARENA_CC_CDECL   (0x0000)
#define CSTRING_F_CUSTOMARENA_CC_STDCALL   (0x0040)
#define CSTRING_F_USE_WIN32_GLOBAL_MEMORY   CSTRING_F_USE_WINDOWS_GLOBAL_MEMORY
#define CSTRING_F_USE_WIN32_PROCESSHEAP_MEMORY   CSTRING_F_USE_WINDOWS_PROCESSHEAP_MEMORY
#define CSTRING_F_USE_WIN32_COM_TASK_MEMORY   CSTRING_F_USE_WINDOWS_COM_TASK_MEMORY

Typedefs

typedef int cstring_flags_t
 Flags type.

Enumerations

enum  CSTRING_RC {
  CSTRING_RC_SUCCESS = 0,
  CSTRING_RC_OUTOFMEMORY,
  CSTRING_RC_FIXED,
  CSTRING_RC_BORROWED,
  CSTRING_RC_READONLY,
  CSTRING_RC_INVALIDARENA,
  CSTRING_RC_CUSTOMARENANOTSUPPORTED,
  CSTRING_RC_EXCEEDFIXEDCAPACITY,
  CSTRING_RC_EXCEEDBORROWEDCAPACITY,
  CSTRING_RC_CANNOTYIELDFROMSO,
  CSTRING_RC_ARENAOVERLOADED,
  CSTRING_RC_INVALIDSTREAM,
  CSTRING_RC_EOF,
  CSTRING_RC_INVALIDSECTION,
  CSTRING_RC_IOERROR,
  CSTRING_RC_SYSTEMSPECIFICFAILURE
}
 The return code type of the cstring API. More...

Functions

CSTRING_EXTERN_C char const * cstring_getStatusCodeString (CSTRING_RC rc)
 Returns a non-NULL nul-terminated character string describing the given error code.
CSTRING_EXTERN_C size_t cstring_getStatusCodeStringLength (CSTRING_RC rc)
 Returns the length of the string returned by cstring_getStatusCodeString() for the given error code.
CSTRING_EXTERN_C char const * cstring_error (CSTRING_RC rc)
 [DEPRECATED] This function is deprecated, and may be removed in a future version: instead use cstring_getStatusCodeString().
CSTRING_EXTERN_C CSTRING_RC cstring_init (struct cstring_t *pcs)
 Initialises a cstring instance to a default form.
CSTRING_EXTERN_C CSTRING_RC cstring_create (struct cstring_t *pcs, char const *s)
 Creates a cstring instance from a C-style string.
CSTRING_EXTERN_C CSTRING_RC cstring_createLen (struct cstring_t *pcs, char const *s, size_t cch)
 Creates a cstring instance from a fixed number of characters.
CSTRING_EXTERN_C CSTRING_RC cstring_createN (struct cstring_t *pcs, char ch, size_t n)
 Creates a cstring instance consisting of a number of repetitions of a character.
CSTRING_EXTERN_C CSTRING_RC cstring_createEx (struct cstring_t *pcs, char const *s, cstring_flags_t flags, void *arena, size_t capacity)
 Creates a cstring instance with special characteristics from a C-style string.
CSTRING_EXTERN_C CSTRING_RC cstring_createLenEx (struct cstring_t *pcs, char const *s, size_t cch, cstring_flags_t flags, void *arena, size_t capacity)
 Creates a cstring instance with special characteristics from a fixed number of characters.
CSTRING_EXTERN_C CSTRING_RC cstring_destroy (struct cstring_t *pcs)
 Releases resources and resets the attributes of the cstring instance.
CSTRING_EXTERN_C CSTRING_RC cstring_yield2 (struct cstring_t *pcs, char **pPayload, void **pRaw)
 Removes the allocated buffer from the cstring instance into a caller supplied pointer.
CSTRING_EXTERN_C CSTRING_RC cstring_setCapacity (struct cstring_t *pcs, size_t capacity)
 Sets the capacity of the cstring instance.
CSTRING_EXTERN_C CSTRING_RC cstring_assign (struct cstring_t *pcs, char const *s)
 Assigns a C-style string to the cstring instance.
CSTRING_EXTERN_C CSTRING_RC cstring_assignLen (struct cstring_t *pcs, char const *s, size_t cch)
 Assigns a fixed number of characters to the cstring instance.
CSTRING_EXTERN_C CSTRING_RC cstring_copy (struct cstring_t *pcs, struct cstring_t const *pcsSrc)
 Copies the contents of one cstring instance to another.
CSTRING_EXTERN_C CSTRING_RC cstring_append (struct cstring_t *pcs, char const *s)
 Appends a C-style string to the cstring instance.
CSTRING_EXTERN_C CSTRING_RC cstring_appendLen (struct cstring_t *pcs, char const *s, size_t cch)
 Appends a fixed number of characters to the cstring instance.
CSTRING_EXTERN_C CSTRING_RC cstring_truncate (struct cstring_t *pcs, size_t len)
 Truncates the cstring instance.
CSTRING_EXTERN_C CSTRING_RC cstring_swap (struct cstring_t *pcs1, struct cstring_t *pcs2)
 Swaps the contents of the two cstring instances.
CSTRING_EXTERN_C CSTRING_RC cstring_readline (FILE *stm, struct cstring_t *pcs, size_t *numRead)
 Reads in a line of text from the given text stream.
CSTRING_EXTERN_C CSTRING_RC cstring_writeline (FILE *stm, struct cstring_t const *pcs, size_t *numWritten)
 Writes a line of text to the given text stream.
CSTRING_EXTERN_C CSTRING_RC cstring_insert (struct cstring_t *pcs, int index, char const *s)
 Inserts the given string at the given index.
CSTRING_EXTERN_C CSTRING_RC cstring_insertLen (struct cstring_t *pcs, int index, char const *s, size_t cch)
 Inserts the given string at the given index.
CSTRING_EXTERN_C CSTRING_RC cstring_replace (struct cstring_t *pcs, int index, size_t len, char const *s)
 Replaces a specified section of the string with another.
CSTRING_EXTERN_C CSTRING_RC cstring_replaceLen (struct cstring_t *pcs, int index, size_t len, char const *s, size_t cch)
 Replaces a specified section of the string with another.
CSTRING_EXTERN_C CSTRING_RC cstring_replaceAll (struct cstring_t *pcs, char const *f, char const *t, size_t *numReplaced)
 Replaces all instances of one substring with another.
char const * c_str_data_a (struct cstring_t const *pcs)
char const * c_str_data (struct cstring_t const *pcs)
size_t c_str_len_a (struct cstring_t const *pcs)
size_t c_str_len (struct cstring_t const *pcs)
char const * c_str_ptr_a (struct cstring_t const *pcs)
char const * c_str_ptr (struct cstring_t const *pcs)
char const * c_str_data_a (struct cstring_t const &cs)
char const * c_str_data (struct cstring_t const &cs)
size_t c_str_len_a (struct cstring_t const &cs)
size_t c_str_len (struct cstring_t const &cs)
char const * c_str_ptr_a (struct cstring_t const &cs)
char const * c_str_ptr (struct cstring_t const &cs)
char const * c_str_data_a (CSTRING_RC rc)
char const * c_str_data (CSTRING_RC rc)
size_t c_str_len_a (CSTRING_RC rc)
size_t c_str_len (CSTRING_RC rc)
char const * c_str_ptr_a (CSTRING_RC rc)
char const * c_str_ptr (CSTRING_RC rc)


Define Documentation

#define CSTRING_EXTERN_C   extern "C"

#define CSTRING_F_USE_WIN32_COM_TASK_MEMORY   CSTRING_F_USE_WINDOWS_COM_TASK_MEMORY

#define CSTRING_F_USE_WIN32_GLOBAL_MEMORY   CSTRING_F_USE_WINDOWS_GLOBAL_MEMORY

#define CSTRING_F_USE_WIN32_PROCESSHEAP_MEMORY   CSTRING_F_USE_WINDOWS_PROCESSHEAP_MEMORY

#define CSTRING_FROM_END (  )     (-1 - (int)(x))

Defines a reverse offset for use with the insert and replace functions.

See also:
cstring_insert()

cstring_insertLen()

cstring_replace()

cstring_replaceLen()

#define CSTRING_VER   0x030602ff

The current composite version number of cstring.

#define CSTRING_VER_MAJOR   3

The major version number of cstring.

#define CSTRING_VER_MINOR   6

The minor version number of cstring.

#define CSTRING_VER_REVISION   2

The revision version number of cstring.


Function Documentation

char const* c_str_data ( CSTRING_RC  rc  )  [inline]

char const* c_str_data ( struct cstring_t const &  cs  )  [inline]

char const* c_str_data ( struct cstring_t const *  pcs  )  [inline]

char const* c_str_data_a ( CSTRING_RC  rc  )  [inline]

char const* c_str_data_a ( struct cstring_t const &  cs  )  [inline]

char const* c_str_data_a ( struct cstring_t const *  pcs  )  [inline]

size_t c_str_len ( CSTRING_RC  rc  )  [inline]

size_t c_str_len ( struct cstring_t const &  cs  )  [inline]

size_t c_str_len ( struct cstring_t const *  pcs  )  [inline]

size_t c_str_len_a ( CSTRING_RC  rc  )  [inline]

size_t c_str_len_a ( struct cstring_t const &  cs  )  [inline]

size_t c_str_len_a ( struct cstring_t const *  pcs  )  [inline]

char const* c_str_ptr ( CSTRING_RC  rc  )  [inline]

char const* c_str_ptr ( struct cstring_t const &  cs  )  [inline]

char const* c_str_ptr ( struct cstring_t const *  pcs  )  [inline]

char const* c_str_ptr_a ( CSTRING_RC  rc  )  [inline]

char const* c_str_ptr_a ( struct cstring_t const &  cs  )  [inline]

char const* c_str_ptr_a ( struct cstring_t const *  pcs  )  [inline]

CSTRING_EXTERN_C char const* cstring_error ( CSTRING_RC  rc  ) 

[DEPRECATED] This function is deprecated, and may be removed in a future version: instead use cstring_getStatusCodeString().

Deprecated:
This function is deprecated, and may be removed in a future version: instead use cstring_getStatusCodeString().
See also:
cstring_getStatusCodeString

CSTRING_EXTERN_C size_t cstring_getStatusCodeStringLength ( CSTRING_RC  rc  ) 

Returns the length of the string returned by cstring_getStatusCodeString() for the given error code.

Parameters:
rc The error code. Must be one of the CSTRING_RC enumeration
Returns:
The length of the string returned by cstring_getStatusCodeString() for the the given error code, or 0 if the code is not recognised.

CSTRING_EXTERN_C CSTRING_RC cstring_insert ( struct cstring_t pcs,
int  index,
char const *  s 
)

Inserts the given string at the given index.

Precondition:
(NULL != pcs)

(NULL != s)

CSTRING_EXTERN_C CSTRING_RC cstring_insertLen ( struct cstring_t pcs,
int  index,
char const *  s,
size_t  cch 
)

Inserts the given string at the given index.

Precondition:
(NULL != pcs)

(NULL != s || 0 == cch)

CSTRING_EXTERN_C CSTRING_RC cstring_readline ( FILE *  stm,
struct cstring_t pcs,
size_t *  numRead 
)

Reads in a line of text from the given text stream.

Parameters:
stm The stream from which the line will be read
pcs The initialised string instance into which the line will be stored.
numRead An optional pointer to a variable to receive the number of characters appended to the string. May be NULL
Return values:
CSTRING_RC_INVALIDSTREAM The stream was not valid (as tested by ferror())
CSTRING_RC_SUCCESS A line terminated by a carriage return was read in
CSTRING_RC_EOF A line terminted by the end-of-file was read in
-other- any other value returned by cstring_appendLen()
Precondition:
(NULL != pcs)

CSTRING_EXTERN_C CSTRING_RC cstring_replace ( struct cstring_t pcs,
int  index,
size_t  len,
char const *  s 
)

Replaces a specified section of the string with another.

Parameters:
pcs The cstring instance whose contents will be modified
index The position of the replaced section. May be negative, in which case it represents the position from the end of the string
len The length of the replaced section
s The replacing string
Note:
If the identified section to be replaced is outside the bounds of the string,
Precondition:
(NULL != pcs)

(NULL != s)

CSTRING_EXTERN_C CSTRING_RC cstring_replaceAll ( struct cstring_t pcs,
char const *  f,
char const *  t,
size_t *  numReplaced 
)

Replaces all instances of one substring with another.

Parameters:
pcs The cstring instance whose contents will be modified
f The string to search for. If NULL or the empty string, the function returns immediately
t The string to replace with. If NULL or the empty string, all occurences of f will be removed
numReplaced An optional pointer to a variable to receive the number of replacements performed. May be NULL if caller does not require
Precondition:
(NULL != pcs)

CSTRING_EXTERN_C CSTRING_RC cstring_replaceLen ( struct cstring_t pcs,
int  index,
size_t  len,
char const *  s,
size_t  cch 
)

Replaces a specified section of the string with another.

Parameters:
pcs The cstring instance whose contents will be modified
index The position of the replaced section. May be negative, in which case it represents the position from the end of the string
len The length of the replaced section
s The replacing string
cch The replacing string length
Note:
If the identified section to be replaced is outside the bounds of the string,
Precondition:
(NULL != pcs)

(NULL != s || 0 == cch)

CSTRING_EXTERN_C CSTRING_RC cstring_writeline ( FILE *  stm,
struct cstring_t const *  pcs,
size_t *  numWritten 
)

Writes a line of text to the given text stream.

Parameters:
stm The stream to which the line will be written
pcs The initialised string instance containing the line to be written.
numWritten An optional pointer to a variable to receive the number of characters appended to the string. May be NULL
Return values:
CSTRING_RC_INVALIDSTREAM The stream was not valid (as tested by ferror())
CSTRING_RC_SUCCESS A line terminated by a carriage return was read in
CSTRING_RC_IOERROR Could not write to the stream
Precondition:
(NULL != pcs)


cstring Library documentation (c) Matthew Wilson and Synesis Software Pty Ltd, 1994-2009