blob: ad3f35e5260a5ded4b82c94dd52991392b0d5329 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001/******************************************************************************
2*(C) Copyright 2008 Marvell International Ltd.
3* All Rights Reserved
4******************************************************************************/
5/*****************************************************************************
6* Utility Library
7*
8* Variable-length string utilities header file
9*
10*****************************************************************************/
11
12#ifndef _UTL_VSTRING_INCLUDED
13#define _UTL_VSTRING_INCLUDED
14
15#include <stdarg.h>
16#include <stdlib.h>
17
18#include "utlTypes.h"
19
20
21/*--- Data Types ------------------------------------------------------------*/
22
23typedef struct utlVString_S {
24 char *s_p;
25 size_t length; /* length of string in characters */
26 size_t size; /* size of buffer in characters */
27} utlVString_T, *utlVString_P;
28typedef const utlVString_T *utlVString_P2c;
29
30#define utlEMPTY_VSTRING { NULL, 0, 0 }
31
32#define utlVString(v_string_p) ((v_string_p)->s_p)
33#define utlVStringLength(v_string_p) ((v_string_p)->length)
34#define utlVStringEnd(v_string_p) ((v_string_p)->s_p + (v_string_p)->length)
35
36#define utlVStringTruncate(v_string_p, c_p) { *(c_p) = '\0'; (v_string_p)->length = (c_p) - (v_string_p)->s_p; }
37
38#define utlInitVString(v_string_p) { \
39 (v_string_p)->s_p = NULL; \
40 (v_string_p)->length = 0; \
41 (v_string_p)->size = 0; \
42}
43
44
45/*--- Prototypes ------------------------------------------------------------*/
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51extern utlReturnCode_T utlVStringReserve(const utlVString_P v_string_p,
52 const size_t n);
53extern utlReturnCode_T utlVStringCat(const utlVString_P v_string_p,
54 const char *s_p);
55extern utlReturnCode_T utlVStringFree(const utlVString_P v_string_p);
56extern int utlVStringVPrintF(const utlVString_P v_string_p,
57 const char *format_p,
58 va_list va_arg_p);
59extern int utlVStringPrintF(const utlVString_P v_string_p,
60 const char *format_p,
61 ...);
62extern int utlVStringPuts(const utlVString_P2c v_string_p,
63 FILE *file_p);
64
65#ifdef __cplusplus
66}
67#endif
68
69#endif /* _UTL_VSTRING_INCLUDED */
70