CXTranslationUnit.h revision 153221717e39ce41323d5bc6b8b8bf130923c1bd
1//===- 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  void *Diagnostics;
22};
23}
24
25namespace clang {
26  class ASTUnit;
27
28namespace cxtu {
29
30CXTranslationUnitImpl *MakeCXTranslationUnit(ASTUnit *TU);
31
32class CXTUOwner {
33  CXTranslationUnitImpl *TU;
34
35public:
36  CXTUOwner(CXTranslationUnitImpl *tu) : TU(tu) { }
37  ~CXTUOwner();
38
39  CXTranslationUnitImpl *getTU() const { return TU; }
40
41  CXTranslationUnitImpl *takeTU() {
42    CXTranslationUnitImpl *retTU = TU;
43    TU = 0;
44    return retTU;
45  }
46};
47
48
49}} // end namespace clang::cxtu
50
51#endif
52