Blame tools/dstring.h

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