CXString.h revision 686775deca8b8685eb90801495880e3abdd844c2
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  llvm::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}
51}
52
53#endif
54
55