1 /*===-- clang-c/CXString.h - C Index strings  --------------------*- C -*-===*\
2 |*                                                                            *|
3 |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
4 |* Exceptions.                                                                *|
5 |* See https://llvm.org/LICENSE.txt for license information.                  *|
6 |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
7 |*                                                                            *|
8 |*===----------------------------------------------------------------------===*|
9 |*                                                                            *|
10 |* This header provides the interface to C Index strings.                     *|
11 |*                                                                            *|
12 \*===----------------------------------------------------------------------===*/
13 
14 #ifndef LLVM_CLANG_C_CXSTRING_H
15 #define LLVM_CLANG_C_CXSTRING_H
16 
17 #include "clang-c/Platform.h"
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 /**
24  * \defgroup CINDEX_STRING String manipulation routines
25  * \ingroup CINDEX
26  *
27  * @{
28  */
29 
30 /**
31  * A character string.
32  *
33  * The \c CXString type is used to return strings from the interface when
34  * the ownership of that string might differ from one call to the next.
35  * Use \c clang_getCString() to retrieve the string data and, once finished
36  * with the string data, call \c clang_disposeString() to free the string.
37  */
38 typedef struct {
39   const void *data;
40   unsigned private_flags;
41 } CXString;
42 
43 typedef struct {
44   CXString *Strings;
45   unsigned Count;
46 } CXStringSet;
47 
48 /**
49  * Retrieve the character data associated with the given string.
50  */
51 CINDEX_LINKAGE const char *clang_getCString(CXString string);
52 
53 /**
54  * Free the given string.
55  */
56 CINDEX_LINKAGE void clang_disposeString(CXString string);
57 
58 /**
59  * Free the given string set.
60  */
61 CINDEX_LINKAGE void clang_disposeStringSet(CXStringSet *set);
62 
63 /**
64  * @}
65  */
66 
67 #ifdef __cplusplus
68 }
69 #endif
70 #endif
71 
72