CXString.h revision 36d592718ff342f762e32cbde73d1113f88cb275
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 "clang/Basic/LLVM.h" 19#include "llvm/ADT/StringRef.h" 20#include "llvm/ADT/SmallString.h" 21 22namespace clang { 23namespace cxstring { 24 25struct CXStringBuf { 26 SmallString<128> Data; 27 CXTranslationUnit TU; 28 CXStringBuf(CXTranslationUnit tu) : TU(tu) {} 29}; 30 31/// \brief Create a CXString object from a C string. 32CXString createCXString(const char *String, bool DupString = false); 33 34/// \brief Create a CXString object from a StringRef. 35CXString createCXString(StringRef String, bool DupString = true); 36 37/// \brief Create a CXString object that is backed by a string buffer. 38CXString createCXString(CXStringBuf *buf); 39 40/// \brief Create an opaque string pool used for fast geneneration of strings. 41void *createCXStringPool(); 42 43/// \brief Dispose of a string pool. 44void disposeCXStringPool(void *pool); 45 46CXStringBuf *getCXStringBuf(CXTranslationUnit TU); 47 48void disposeCXStringBuf(CXStringBuf *buf); 49 50/// \brief Returns true if the CXString data is managed by a pool. 51bool isManagedByPool(CXString str); 52 53} 54} 55 56#endif 57 58