|
Packit |
022b05 |
/*
|
|
Packit |
022b05 |
* dstring.h --
|
|
Packit |
022b05 |
*
|
|
Packit |
022b05 |
* This file implements an abstract data type for dynamic strings.
|
|
Packit |
022b05 |
*
|
|
Packit |
022b05 |
* Note: The behavior of the functions that modify the a dynamic
|
|
Packit |
022b05 |
* string is undefined if an argument strings points into the
|
|
Packit |
022b05 |
* dynamic string itself.
|
|
Packit |
022b05 |
*
|
|
Packit |
022b05 |
* Copyright (c) 2006 Juergen Schoenwaelder, International University Bremen.
|
|
Packit |
022b05 |
*
|
|
Packit |
022b05 |
* See the file "COPYING" for information on usage and redistribution
|
|
Packit |
022b05 |
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
|
Packit |
022b05 |
*
|
|
Packit |
022b05 |
* @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $
|
|
Packit |
022b05 |
*/
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
#ifndef _DSTRING_H_
|
|
Packit |
022b05 |
#define _DSTRING_H_
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
#include <stdarg.h>
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
#ifdef __GNUC__
|
|
Packit |
022b05 |
# define inline /* extern */ static inline
|
|
Packit |
022b05 |
#else
|
|
Packit |
022b05 |
#ifdef HAVE_WIN_H
|
|
Packit |
022b05 |
# define inline __inline
|
|
Packit |
022b05 |
#endif
|
|
Packit |
022b05 |
#endif
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
struct dstring {
|
|
Packit |
022b05 |
char *str;
|
|
Packit |
022b05 |
size_t len;
|
|
Packit |
022b05 |
};
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
typedef struct dstring dstring_t;
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
inline char*
|
|
Packit |
022b05 |
dstring_str(dstring_t *ds)
|
|
Packit |
022b05 |
{
|
|
Packit |
022b05 |
return ds ? ds->str : NULL;
|
|
Packit |
022b05 |
}
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
inline size_t
|
|
Packit |
022b05 |
dstring_len(dstring_t *ds)
|
|
Packit |
022b05 |
{
|
|
Packit |
022b05 |
return ds ? ds->len : 0;
|
|
Packit |
022b05 |
}
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_new(void);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_delete(dstring_t *ds);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_assign(dstring_t *ds, const char *s);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_concat(dstring_t *ds, ...);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_append(dstring_t *ds, const char *s);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_append_char(dstring_t *ds, const char c);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_append_printf(dstring_t *ds, const char *format, ...);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_append_vprintf(dstring_t *ds, const char *format, va_list ap);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_printf(dstring_t *ds, const char *format, ...);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_vprintf(dstring_t *ds, const char *format, va_list ap);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_truncate(dstring_t *ds, int len);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
extern dstring_t*
|
|
Packit |
022b05 |
dstring_expand(dstring_t *ds, int len, char fill);
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
#ifdef __GNUC__
|
|
Packit |
022b05 |
#undef inline
|
|
Packit |
022b05 |
#endif
|
|
Packit |
022b05 |
|
|
Packit |
022b05 |
#endif
|