1db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison/*===-- clang-c/CXString.h - C Index strings --------------------*- C -*-===*\ 2db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* *| 3db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* The LLVM Compiler Infrastructure *| 4db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* *| 5db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* This file is distributed under the University of Illinois Open Source *| 6db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* License. See LICENSE.TXT for details. *| 7db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* *| 8db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|*===----------------------------------------------------------------------===*| 9db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* *| 10db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* This header provides the interface to C Index strings. *| 11db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison|* *| 12db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison\*===----------------------------------------------------------------------===*/ 13db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 14db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison#ifndef CLANG_CXSTRING_H 15db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison#define CLANG_CXSTRING_H 16db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 17db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison#include "clang-c/Platform.h" 18db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 19db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison#ifdef __cplusplus 20db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaisonextern "C" { 21db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison#endif 22db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 23db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison/** 24db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * \defgroup CINDEX_STRING String manipulation routines 25db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * \ingroup CINDEX 26db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * 27db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * @{ 28db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison */ 29db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 30db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison/** 31db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * \brief A character string. 32db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * 33db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * The \c CXString type is used to return strings from the interface when 34db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * the ownership of that string might different from one call to the next. 35db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * Use \c clang_getCString() to retrieve the string data and, once finished 36db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * with the string data, call \c clang_disposeString() to free the string. 37db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison */ 38db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaisontypedef struct { 39db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison void *data; 40db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison unsigned private_flags; 41db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison} CXString; 42db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 43db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison/** 44db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * \brief Retrieve the character data associated with the given string. 45db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison */ 46db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de GrandmaisonCINDEX_LINKAGE const char *clang_getCString(CXString string); 47db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 48db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison/** 49db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * \brief Free the given string, 50db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison */ 51db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de GrandmaisonCINDEX_LINKAGE void clang_disposeString(CXString string); 52db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 53db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison/** 54db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison * @} 55db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison */ 56db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 57db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison#ifdef __cplusplus 58db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison} 59db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison#endif 60db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison#endif 61db2a685287e57d9dfec09c867152c465af6fc6b0Arnaud A. de Grandmaison 62