ProgramState_Fwd.h revision a5888f61be9f8d76e9b48a453dbced50523bd2e0
1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync//== ProgramState_Fwd.h - Incomplete declarations of ProgramState -*- C++ -*--=/
2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync//
3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync//                     The LLVM Compiler Infrastructure
4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync//
5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// This file is distributed under the University of Illinois Open Source
6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// License. See LICENSE.TXT for details.
7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync//
8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync//===----------------------------------------------------------------------===//
9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef LLVM_CLANG_PROGRAMSTATE_FWD_H
11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define LLVM_CLANG_PROGRAMSTATE_FWD_H
12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
13baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "llvm/ADT/IntrusiveRefCntPtr.h"
14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
15baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace clang {
16baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace ento {
17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  class ProgramState;
18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  class ProgramStateManager;
19baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  void ProgramStateRetain(const ProgramState *state);
20baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  void ProgramStateRelease(const ProgramState *state);
21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}
22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}
23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
24baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace llvm {
25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  template <> struct IntrusiveRefCntPtrInfo<const clang::ento::ProgramState> {
26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    static void retain(const clang::ento::ProgramState *state) {
27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      clang::ento::ProgramStateRetain(state);
28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    }
29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    static void release(const clang::ento::ProgramState *state) {
30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      clang::ento::ProgramStateRelease(state);
31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    }
32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  };
33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}
34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
35baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace clang {
36baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace ento {
37baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  typedef llvm::IntrusiveRefCntPtr<const ProgramState> ProgramStateRef;
38baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}
39baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}
40baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
41baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif
42baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
43baa3858d3f5d128a5c8466b700098109edcad5f2repo sync