table of contents
DS(3) | DACS Library Functions Manual | DS(3) |
NAME¶
ds - Dynamic strings and vectorsSYNOPSIS¶
#include "dsslib.h"
Ds
*ds_init(Ds *ods);
Ds
*ds_init_size(Ds *ods,
size_t nbytes);
Ds
*ds_alloc(void);
Ds
*ds_alloc_size(size_t nbytes);
Ds
*ds_reinit(Ds *ds);
Ds
*ds_reinit_size(Ds *ods,
size_t nbytes);
Ds
*ds_reset(Ds *ds);
Ds
*ds_reset_buf(Ds *ds);
Ds
*ds_trim(Ds *ds);
Ds
*ds_grow(Ds *ds);
void
ds_free(Ds *ds);
int
ds_appendc(Ds *ds, int ch);
int
ds_copyb(Ds *ds, void *src,
size_t len,
unsigned int offset);
int
ds_insertb(Ds *ds, void *src,
size_t len,
unsigned int offset);
int
ds_append(Ds *ds, char *str);
int
ds_concat(Ds *ds, char *str);
int
ds_concatc(Ds *ds, int ch);
int
ds_concatn(Ds *ds, char *str,
size_t len);
Ds
*ds_set(Ds *ds, char *str);
Ds
*ds_setn(Ds *ds, unsigned char *s,
size_t slen);
Ds
*ds_range(Ds *ds, char *str,
char *range_spec,
Range_syntax *ors);
int
ds_getc(Ds *ds, FILE *fp,
int *ch_ptr);
Dsio
*dsio_set(Ds *ds, FILE *fp,
char *buf, unsigned long len,
int have_length);
int
dsio_free(Ds *ds);
int
dsio_eof(Ds *ds);
int
dsio_nextc(Ds *ds,
int *ch_ptr);
int
dsio_peekc(Ds *ds,
int *ch_ptr);
char
*dsio_agets(Ds *ds);
char
*dsio_gets(Ds *ds);
int
dsio_load(Ds *ds);
char
*dsio_load_str(Ds *ds);
char
*ds_gets(Ds *ds, FILE *fp);
char
*ds_agets(Ds *ds, FILE *fp);
char
*ds_agets_buf(Ds *ds,
char *buf);
char
*ds_prompt(Ds *ds, char *prompt,
unsigned int flag);
char
*ds_readline(Ds *ds, char *prompt,
char *cprompt);
Ds
*ds_load_file(Ds *ds,
char *pathname);
Ds
*ds_agetf(Ds *ds, FILE *fp);
Ds
*ds_getf(FILE *fp);
int
ds_sprintf(Ds *ds,
unsigned int offset, char *fmt,
...);
int
ds_asprintf(Ds *ds, char *fmt,
...);
int
ds_vasprintf(Ds *ds, char *fmt,
va_list ap);
char
*ds_xprintf(char *fmt, ...);
char
*ds_vxprintf(char *fmt,
va_list ap);
FILE
*ds_fopen_secure(const char *path,
const char *mode,
size_t size);
int
ds_fclose(FILE *fp);
int
ds_fclean(FILE *fp);
Dsvec
*dsvec_init(Dsvec *dsv,
size_t size);
Dsvec
*dsvec_alloc(size_t size);
Dsvec
*dsvec_init_size(Dsvec *dsv,
size_t size, int n);
Dsvec
*dsvec_alloc_size(size_t size,
int n);
void
dsvec_free(Dsvec *dsv);
Dsvec
*dsvec_grow(Dsvec *dsv,
unsigned int new_nelements);
Dsvec
*dsvec_subset(Dsvec *dsv,
Dsvec *old_dsv, unsigned int start,
int len);
Dsvec
*dsvec_copy(Dsvec *dsv,
Dsvec *old_dsv);
void
*dsvec_ptr_index(Dsvec *dsv,
unsigned int ind);
int
dsvec_delete_ptr_index(Dsvec *dsv,
unsigned int ind);
int
dsvec_delete_ptr(Dsvec *dsv,
void *ptr);
int
dsvec_replace_ptr(Dsvec *dsv, void *ptr,
unsigned int ind);
int
dsvec_streq(Dsvec *dsv1,
Dsvec *dsv2);
int
dsvec_strneq(Dsvec *dsv1, Dsvec *dsv2,
size_t len);
int
dsvec_rotate(Dsvec *dsv,
int npos);
Dsvec
*dsvec_strlist(Dsvec *dsv,
char *str_spec);
Dsvec
*dsvec_slice(Dsvec *dsv, Dsvec *primary,
unsigned int ind,
unsigned int len);
Dsvec
*dsvec_range(Dsvec *dsv, Dsvec *primary,
char *range_spec,
Range_syntax *ors);
int
dsvec_replace(Dsvec *primary,
unsigned int ind,
unsigned int delete_len,
Dsvec *secondary);
int
dsvec_append(Dsvec *primary,
Dsvec *secondary);
int
dsvec_insert_ptr(Dsvec *dsv,
unsigned int ind,
void *ptr);
int
dsvec_add_ptr(Dsvec *dsv,
void *ptr);
int
dsvec_insert(Dsvec *primary,
unsigned int ind,
Dsvec *secondary);
int
dsvec_delete(Dsvec *dsv,
unsigned int ind,
unsigned int ndelete);
int
dsvec_add_obj(Dsvec *dsv);
void
dsvec_sort(Dsvec *dsv,
int (*compar)(const void *, const void *));
Dsvec
*dsvec_load(Ds *ds,
Dsvec *dsv);
Dsvec
*ds_mkargv_add(Dsvec *dsv,
char *el);
Dsvec
*ds_mkargv_addv(Dsvec *dsv, int argc,
char **argv);
typedef struct Mkargv { int keepq; int keepws; char * ifs; char * startq; char * endq; } Mkargv;
Dsvec
*ds_mkargv(Dsvec *dsv, char *str,
Mkargv *conf);
char
*ds_buf(Ds *ds);
size_t
ds_len(Ds *ds);
size_t
ds_size(Ds *ds);
int
ds_eq(Ds *ds1, Ds *ds2);
(TYPE)
dsvec_ptr(Ds *DSV,
unsigned int IND, TYPE);
(TYPE)
dsvec_obj(Ds *DSV,
unsigned int IND, TYPE);
(TYPE)
dsvec_new_obj(Ds *DSV, TYPE);
(TYPE)
dsvec_base_type(Ds *DSV, TYPE);
void
**dsvec_base(Dsvec *dsv);
unsigned
int dsvec_len(Dsvec *dsv);
extern int ds_default_clear_flag; extern int ds_default_delnl_flag; extern size_t ds_default_len_limit; extern void *(*ds_default_malloc_func)(size_t size); extern void *(*ds_default_free_func)(void *ptr);
DESCRIPTION¶
The DS library is a collection of functions for creating, manipulating, and formatting strings of bytes. The memory used by these strings is dynamically allocated and released as necessary. When used correctly, bugs caused by buffer overruns and other programming errors can be avoided. There are also functions for creating and manipulating dynamic vectors of pointers and objects.Byte Strings¶
A Ds data structure represents a dynamic string. It must be initialized before it can be used. A Ds variable contains several fields that may be set after initialization but before it is first used. Default values for some of these fields are copied from global variables exported by the library.Vectors¶
10/22/2012 | DACS 1.4.27b |