Put all of the UI utility functions into the "git" namespace.
[anjuta-git-plugin.git] / tagmanager / vstring.h
blobd96ef3dca7c2ad62df4b86cceb3aa336a27449d8
1 /*
2 * $Id$
4 * Copyright (c) 1998-2002, Darren Hiebert
6 * This source code is released for free distribution under the terms of the
7 * GNU General Public License.
9 * Provides the external interface for resizeable strings.
11 #ifndef _VSTRING_H
12 #define _VSTRING_H
15 * INCLUDE FILES
17 #include "general.h" /* must always come first */
19 #if defined(HAVE_STDLIB_H)
20 # include <stdlib.h> /* to define size_t */
21 #endif
24 * MACROS
26 #define vStringValue(vs) ((vs)->buffer)
27 #define vStringItem(vs,i) ((vs)->buffer[i])
28 #define vStringLength(vs) ((vs)->length)
29 #define vStringSize(vs) ((vs)->size)
30 #define vStringCat(vs,s) vStringCatS((vs), vStringValue((s)))
31 #define vStringNCat(vs,s,l) vStringNCatS((vs), vStringValue((s)), (l))
32 #define vStringCopy(vs,s) vStringCopyS((vs), vStringValue((s)))
33 #define vStringNCopy(vs,s,l) vStringNCopyS((vs), vStringValue((s)), (l))
34 #define vStringChar(vs,i) ((vs)->buffer[i])
35 #define vStringTerminate(vs) vStringPut(vs, '\0')
36 #define vStringLower(vs) toLowerString((vs)->buffer)
37 #define vStringUpper(vs) toUpperString((vs)->buffer)
39 #ifndef DEBUG
40 # define VSTRING_PUTC_MACRO 1
41 #endif
42 #ifdef VSTRING_PUTC_MACRO
43 #define vStringPut(s,c) \
44 (void)(((s)->length == (s)->size ? vStringAutoResize (s) : 0), \
45 ((s)->buffer [(s)->length++] = (c)), \
46 ((c) == '\0' ? (s)->length-- : 0))
47 #endif
50 * DATA DECLARATIONS
53 typedef struct sVString {
54 size_t length; /* size of buffer used */
55 size_t size; /* allocated size of buffer */
56 char *buffer; /* location of buffer */
57 } vString;
60 * FUNCTION PROTOTYPES
62 extern boolean vStringAutoResize (vString *const string);
63 extern void vStringClear (vString *const string);
64 extern vString *vStringNew (void);
65 extern void vStringDelete (vString *const string);
66 #ifndef VSTRING_PUTC_MACRO
67 extern void vStringPut (vString *const string, const int c);
68 #endif
69 extern void vStringStripNewline (vString *const string);
70 extern void vStringStripLeading (vString *const string);
71 extern void vStringChop (vString *const string);
72 extern void vStringStripTrailing (vString *const string);
73 extern void vStringCatS (vString *const string, const char *const s);
74 extern void vStringNCatS (vString *const string, const char *const s, const size_t length);
75 extern vString *vStringNewCopy (vString *const string);
76 extern vString *vStringNewInit (const char *const s);
77 extern void vStringCopyS (vString *const string, const char *const s);
78 extern void vStringNCopyS (vString *const string, const char *const s, const size_t length);
79 extern void vStringCopyToLower (vString *const dest, const vString *const src);
80 extern void vStringSetLength (vString *const string);
82 #endif /* _VSTRING_H */
84 /* vi:set tabstop=4 shiftwidth=4: */