blob: f03a6b2903847bcc57517db0db45e5117cba59e2 [file] [log] [blame]
Ted Kremenekea834df2010-11-16 02:03:55 +00001//===- 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"
Ted Kremeneka60ed472010-11-16 08:15:36 +000019#include "llvm/ADT/SmallString.h"
Ted Kremenekea834df2010-11-16 02:03:55 +000020
21namespace clang {
22namespace cxstring {
Ted Kremeneka60ed472010-11-16 08:15:36 +000023
24struct CXStringBuf {
25 llvm::SmallString<128> Data;
26 CXTranslationUnit TU;
27 CXStringBuf(CXTranslationUnit tu) : TU(tu) {}
28};
Ted Kremenekea834df2010-11-16 02:03:55 +000029
30/// \brief Create a CXString object from a C string.
31CXString createCXString(const char *String, bool DupString = false);
32
Ted Kremeneka60ed472010-11-16 08:15:36 +000033/// \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);
Ted Kremenekea834df2010-11-16 02:03:55 +000048
49}
50}
51
52#endif
53