Blame tools/dstring.h

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