CXString.h revision a60ed47da13393796d8552b9fdca12abbb3eea42
1//===- CXString.h - Routines for manipulating CXStrings -------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines routines for manipulating CXStrings. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef LLVM_CLANG_CXSTRING_H 15#define LLVM_CLANG_CXSTRING_H 16 17#include "clang-c/Index.h" 18#include "llvm/ADT/StringRef.h" 19#include "llvm/ADT/SmallString.h" 20 21namespace clang { 22namespace cxstring { 23 24struct CXStringBuf { 25 llvm::SmallString<128> Data; 26 CXTranslationUnit TU; 27 CXStringBuf(CXTranslationUnit tu) : TU(tu) {} 28}; 29 30/// \brief Create a CXString object from a C string. 31CXString createCXString(const char *String, bool DupString = false); 32 33/// \brief Create a CXString object from a StringRef. 34CXString createCXString(llvm::StringRef String, bool DupString = true); 35 36/// \brief Create a CXString object that is backed by a string buffer. 37CXString createCXString(CXStringBuf *buf); 38 39/// \brief Create an opaque string pool used for fast geneneration of strings. 40void *createCXStringPool(); 41 42/// \brief Dispose of a string pool. 43void disposeCXStringPool(void *pool); 44 45CXStringBuf *getCXStringBuf(CXTranslationUnit TU); 46 47void disposeCXStringBuf(CXStringBuf *buf); 48 49} 50} 51 52#endif 53 54