# Memory allocation
[LibTDS API]

Allocate or free resources. More...

## Defines

#define | SQLS_ENTRY(number, state) case number: p = state; break

## Functions

static void | _tds_param_free (TDSCOLUMN *col)
static void | _tds_row_free (TDSRESULTINFO *res_info, unsigned char *row)
BCPCOLDATA * | tds_alloc_bcp_column_data (int column_size)
char * | tds_alloc_client_sqlstate (int msgno)
static TDSCOMPUTEINFO * | tds_alloc_compute_result (int num_cols, int by_cols)
| Allocate memory for storing compute info return NULL on out of memory.
TDSCOMPUTEINFO ** | tds_alloc_compute_results (TDSSOCKET *tds, int num_cols, int by_cols)
int | tds_alloc_compute_row (TDSCOMPUTEINFO *res_info)
TDSCONNECTION * | tds_alloc_connection (TDSLOCALE *locale)
| Allocate space for configure structure and initialize with default values.
TDSCONTEXT * | tds_alloc_context (void *parent)
TDSCURSOR * | tds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen)
TDSDYNAMIC * | tds_alloc_dynamic (TDSSOCKET *tds, const char *id)
| Allocate a dynamic statement.
TDSLOCALE * | tds_alloc_locale (void)
TDSLOGIN * | tds_alloc_login (void)
char * | tds_alloc_lookup_sqlstate (TDSSOCKET *tds, int msgno)
void * | tds_alloc_param_data (TDSCOLUMN *curparam)
| Allocate data for a parameter.
TDSPARAMINFO * | tds_alloc_param_result (TDSPARAMINFO *old_param)
| Adds a output parameter to TDSPARAMINFO.
TDSRESULTINFO * | tds_alloc_results (int num_cols)
int | tds_alloc_row (TDSRESULTINFO *res_info)
| Allocate space for row store return NULL on out of memory.
TDSSOCKET * | tds_alloc_socket (TDSCONTEXT *context, int bufsize)
void | tds_cursor_deallocated (TDSSOCKET *tds, TDSCURSOR *cursor)
void | tds_free_all_results (TDSSOCKET *tds)
void | tds_free_bcp_column_data (BCPCOLDATA *coldata)
static void | tds_free_compute_result (TDSCOMPUTEINFO *comp_info)
static void | tds_free_compute_results (TDSSOCKET *tds)
void | tds_free_connection (TDSCONNECTION *connection)
void | tds_free_context (TDSCONTEXT *context)
void | tds_free_dynamic (TDSSOCKET *tds, TDSDYNAMIC *dyn)
| Frees dynamic statement and remove from TDS.
static void | tds_free_env (TDSSOCKET *tds)
void | tds_free_input_params (TDSDYNAMIC *dyn)
| Frees all allocated input parameters of a dynamic statement.
void | tds_free_locale (TDSLOCALE *locale)
void | tds_free_login (TDSLOGIN *login)
void | tds_free_msg (TDSMESSAGE *message)
void | tds_free_param_result (TDSPARAMINFO *param_info)
| Delete latest parameter.
void | tds_free_param_results (TDSPARAMINFO *param_info)
void | tds_free_results (TDSRESULTINFO *res_info)
void | tds_free_row (TDSRESULTINFO *res_info, unsigned char *row)
void | tds_free_socket (TDSSOCKET *tds)
TDSSOCKET * | tds_realloc_socket (TDSSOCKET *tds, int bufsize)
void | tds_release_cursor (TDSSOCKET *tds, TDSCURSOR *cursor)

## Variables

static const unsigned char | defaultcaps []

## Detailed Description

Allocate or free resources.

Allocation can fail only on out of memory. In such case they return NULL and leave the state as before call. Mainly function names are in the form tds_alloc_XX or tds_free_XXX. tds_alloc_XXX functions allocate structures and return pointer to allocated data while tds_free_XXX take structure pointers and free them. Some functions require additional parameters to initialize structure correctly. The main exception are structures that use reference counting. These structures have tds_alloc_XXX functions but instead of tds_free_XXX use tds_release_XXX.

## Function Documentation

TDSCONNECTION* tds_alloc_connection | ( | TDSLOCALE * | locale | ) |

Allocate space for configure structure and initialize with default values.

Parameters:

  | locale | locale information (copied to configuration information)

Returns:
  allocated structure or NULL if out of memory

TDSDYNAMIC * tds_alloc_dynamic | ( | TDSSOCKET * | tds,
|  | const char * | id
| ) |

Allocate a dynamic statement.

Parameters:

  | tds | the connection within which to allocate the statement.
  | id | a character label identifying the statement.

Returns:
  a pointer to the allocated structure (NULL on failure).

tds_alloc_dynamic is used to implement placeholder code under TDS 5.0

void* tds_alloc_param_data | ( | TDSCOLUMN * | curparam | ) |

Allocate data for a parameter.

Parameters:

  | curparam | parameter to retrieve size information

Returns:
  NULL on failure or new data

TDSPARAMINFO * tds_alloc_param_result | ( | TDSPARAMINFO * | old_param | ) |

Adds a output parameter to TDSPARAMINFO.

Parameters:

  | old_param | a pointer to the TDSPARAMINFO structure containing the current set of output parameter, or NULL if none exists.

Returns:
  a pointer to the new TDSPARAMINFO structure.

tds_alloc_param_result() works a bit differently than the other alloc result functions. Output parameters come in individually with no total number given in advance, so we simply call this func every time with get a TDS_PARAM_TOKEN and let it realloc the columns struct one bigger. tds_free_all_results() usually cleans up after us.

void tds_free_dynamic | ( | TDSSOCKET * | tds,
|  | TDSDYNAMIC * | dyn
| ) |

Frees dynamic statement and remove from TDS.

Parameters:

  | tds | state information for the socket and the TDS protocol
  | dyn | dynamic statement to be freed.

void tds_free_input_params | ( | TDSDYNAMIC * | dyn | ) |

Frees all allocated input parameters of a dynamic statement.

Parameters:

  | dyn | the dynamic statement whose input parameter are to be freed

tds_free_input_params frees all parameters for the give dynamic statement

## Variable Documentation

const unsigned char defaultcaps[]`[static]`

Initial value:

     {

            0x01, 0x09, 0x00, 0x08, 0x0E, 0x6D, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE,
            0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x02, 0x68, 0x00, 0x00, 0x00
    }