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