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