# Dynamic string functions
[LibTDS API]

Handle dynamic string. More...

## Defines

#define | tds_dstr_buf(s) ((s)->dstr_s)
#define | tds_dstr_cstr(s) ((const char* ) tds_dstr_buf(s))
#define | tds_dstr_init(s) do { DSTR *_tds_s = (s); _tds_s->dstr_size = 0; _tds_s->dstr_s = (char*) tds_str_empty; } while(0)
| init a string with empty
#define | tds_dstr_isempty(s) ((s)->dstr_size == 0)
| test if string is empty
#define | tds_dstr_len(s) ((s)->dstr_size)

## Functions

DSTR * | tds_dstr_alloc (DSTR *s, unsigned int length)
| allocate space for length char
DSTR * | tds_dstr_copy (DSTR *s, const char *src)
| copy a string from another
DSTR * | tds_dstr_copyn (DSTR *s, const char *src, unsigned int length)
| Set string to a given buffer of characters.
DSTR * | tds_dstr_dup (DSTR *s, const DSTR *src)
void | tds_dstr_free (DSTR *s)
| free string
DSTR * | tds_dstr_set (DSTR *s, char *src)
| set a string from another buffer.
DSTR * | tds_dstr_setlen (DSTR *s, unsigned int length)
| limit length of string, MUST be <= current length
void | tds_dstr_zero (DSTR *s)
| clear all string filling with zeroes (mainly for security reason)

## Detailed Description

Handle dynamic string.

In this string are always valid (you don't have NULL pointer, only empty string)

## Function Documentation

DSTR * tds_dstr_alloc | ( | DSTR * | s,
|  | unsigned int | length
| ) |

allocate space for length char

Parameters:

  | s | dynamic string
  | length | new length

Returns:
  string allocated or NULL on memory error

DSTR * tds_dstr_copy | ( | DSTR * | s,
|  | const char * | src
| ) |

copy a string from another

Parameters:

  | s | dynamic string
  | src | source buffer

Returns:
  string copied or NULL on memory error

DSTR * tds_dstr_copyn | ( | DSTR * | s,
|  | const char * | src,
|  | unsigned int | length
| ) |

Set string to a given buffer of characters.

Parameters:

  | s | dynamic string
  | src | source buffer
  | length | length of source buffer

Returns:
  string copied or NULL on memory error

DSTR * tds_dstr_set | ( | DSTR * | s,
|  | char * | src
| ) |

set a string from another buffer.

The string will use the supplied buffer (it not copy the string), so it should be a pointer returned by malloc.

Parameters:

  | s | dynamic string
  | src | source buffer

Returns:
  string copied or NULL on memory error

DSTR * tds_dstr_setlen | ( | DSTR * | s,
|  | unsigned int | length
| ) |

limit length of string, MUST be <= current length

Parameters:

  | s | dynamic string
  | length | new length