| //===- CXString.h - Routines for manipulating CXStrings -------------------===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file defines routines for manipulating CXStrings. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_CLANG_CXSTRING_H |
| #define LLVM_CLANG_CXSTRING_H |
| |
| #include "clang-c/Index.h" |
| #include "clang/Basic/LLVM.h" |
| #include "llvm/ADT/StringRef.h" |
| #include "llvm/ADT/SmallString.h" |
| |
| namespace clang { |
| namespace cxstring { |
| |
| struct CXStringBuf { |
| SmallString<128> Data; |
| CXTranslationUnit TU; |
| CXStringBuf(CXTranslationUnit tu) : TU(tu) {} |
| }; |
| |
| /// \brief Create a CXString object from a C string. |
| CXString createCXString(const char *String, bool DupString = false); |
| |
| /// \brief Create a CXString object from a StringRef. |
| CXString createCXString(StringRef String, bool DupString = true); |
| |
| /// \brief Create a CXString object that is backed by a string buffer. |
| CXString createCXString(CXStringBuf *buf); |
| |
| /// \brief Create an opaque string pool used for fast geneneration of strings. |
| void *createCXStringPool(); |
| |
| /// \brief Dispose of a string pool. |
| void disposeCXStringPool(void *pool); |
| |
| CXStringBuf *getCXStringBuf(CXTranslationUnit TU); |
| |
| void disposeCXStringBuf(CXStringBuf *buf); |
| |
| /// \brief Returns true if the CXString data is managed by a pool. |
| bool isManagedByPool(CXString str); |
| |
| } |
| } |
| |
| #endif |
| |