Home | History | Annotate | Line # | Download | only in clang-c
      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/ExternC.h"
     18 #include "clang-c/Platform.h"
     19 
     20 LLVM_CLANG_C_EXTERN_C_BEGIN
     21 
     22 /**
     23  * \defgroup CINDEX_STRING String manipulation routines
     24  * \ingroup CINDEX
     25  *
     26  * @{
     27  */
     28 
     29 /**
     30  * A character string.
     31  *
     32  * The \c CXString type is used to return strings from the interface when
     33  * the ownership of that string might differ from one call to the next.
     34  * Use \c clang_getCString() to retrieve the string data and, once finished
     35  * with the string data, call \c clang_disposeString() to free the string.
     36  */
     37 typedef struct {
     38   const void *data;
     39   unsigned private_flags;
     40 } CXString;
     41 
     42 typedef struct {
     43   CXString *Strings;
     44   unsigned Count;
     45 } CXStringSet;
     46 
     47 /**
     48  * Retrieve the character data associated with the given string.
     49  */
     50 CINDEX_LINKAGE const char *clang_getCString(CXString string);
     51 
     52 /**
     53  * Free the given string.
     54  */
     55 CINDEX_LINKAGE void clang_disposeString(CXString string);
     56 
     57 /**
     58  * Free the given string set.
     59  */
     60 CINDEX_LINKAGE void clang_disposeStringSet(CXStringSet *set);
     61 
     62 /**
     63  * @}
     64  */
     65 
     66 LLVM_CLANG_C_EXTERN_C_END
     67 
     68 #endif
     69 
     70