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