Asterisk - The Open Source Telephony Project
18.5.0
|
The descriptor of a dynamic string XXX storage will be optimized later if needed We use the ts field to indicate the type of storage. Three special constants indicate malloc, ast_alloca() or static variables, all other values indicate a struct ast_threadstorage pointer. More...
#include <strings.h>
Data Fields | |
size_t | __AST_STR_LEN |
char | __AST_STR_STR [0] |
struct ast_threadstorage * | __AST_STR_TS |
size_t | __AST_STR_USED |
The descriptor of a dynamic string XXX storage will be optimized later if needed We use the ts field to indicate the type of storage. Three special constants indicate malloc, ast_alloca() or static variables, all other values indicate a struct ast_threadstorage pointer.
Support for dynamic strings.
A dynamic string is just a C string prefixed by a few control fields that help setting/appending/extending it using a printf-like syntax.
One should never declare a variable with this type, but only a pointer to it, e.g.
struct ast_str *ds;
The pointer can be initialized with the following:
ds = ast_str_create(init_len); creates a malloc()'ed dynamic string;
ds = ast_str_alloca(init_len); creates a string on the stack (not very dynamic!).
ds = ast_str_thread_get(ts, init_len) creates a malloc()'ed dynamic string associated to the thread-local storage key ts
Finally, the string can be manipulated with the following:
ast_str_set(&buf, max_len, fmt, ...) ast_str_append(&buf, max_len, fmt, ...)
and their varargs variant
ast_str_set_va(&buf, max_len, ap) ast_str_append_va(&buf, max_len, ap)
max_len | The maximum allowed capacity of the ast_str. Note that if the value of max_len is less than the current capacity of the ast_str (as returned by ast_str_size), then the parameter is effectively ignored. 0 means unlimited, -1 means "at most the available space" |
size_t __AST_STR_LEN |
The current maximum length of the string
Definition at line 585 of file strings.h.
Referenced by __ast_str_helper2(), and ast_str_thread_get().
char __AST_STR_STR[0] |
The string buffer
struct ast_threadstorage* __AST_STR_TS |
What kind of storage is this ?
Definition at line 587 of file strings.h.
Referenced by ast_str_thread_get().
size_t __AST_STR_USED |