blob: 47d7146116a9d76f899e9fe86767045b00126e69 [file] [log] [blame]
Ted Kremenek0a90d322010-11-17 23:24:11 +00001//===- CXTranslationUnit.h - Routines for manipulating CXTranslationUnits -===//
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 CXTranslationUnits.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CLANG_CXTRANSLATIONUNIT_H
15#define LLVM_CLANG_CXTRANSLATIONUNIT_H
16
17extern "C" {
18struct CXTranslationUnitImpl {
19 void *TUData;
20 void *StringPool;
21};
22}
23
Argyrios Kyrtzidis9049cf62011-10-12 07:07:33 +000024namespace clang {
25 class ASTUnit;
26
27namespace cxtu {
28
29CXTranslationUnitImpl *MakeCXTranslationUnit(ASTUnit *TU);
30
Argyrios Kyrtzidis4e7064f2011-10-17 19:48:19 +000031class CXTUOwner {
32 CXTranslationUnitImpl *TU;
33
34public:
35 CXTUOwner(CXTranslationUnitImpl *tu) : TU(tu) { }
36 ~CXTUOwner();
37
38 CXTranslationUnitImpl *getTU() const { return TU; }
39
40 CXTranslationUnitImpl *takeTU() {
41 CXTranslationUnitImpl *retTU = TU;
42 TU = 0;
43 return retTU;
44 }
45};
46
47
Argyrios Kyrtzidis9049cf62011-10-12 07:07:33 +000048}} // end namespace clang::cxtu
49
Ted Kremenek0a90d322010-11-17 23:24:11 +000050#endif