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