1234287Sdim//== ProgramState_Fwd.h - Incomplete declarations of ProgramState -*- C++ -*--=/ 2234287Sdim// 3234287Sdim// The LLVM Compiler Infrastructure 4234287Sdim// 5234287Sdim// This file is distributed under the University of Illinois Open Source 6234287Sdim// License. See LICENSE.TXT for details. 7234287Sdim// 8234287Sdim//===----------------------------------------------------------------------===// 9234287Sdim 10234287Sdim#ifndef LLVM_CLANG_PROGRAMSTATE_FWD_H 11234287Sdim#define LLVM_CLANG_PROGRAMSTATE_FWD_H 12234287Sdim 13234287Sdim#include "clang/Basic/LLVM.h" 14234287Sdim#include "llvm/ADT/IntrusiveRefCntPtr.h" 15234287Sdim 16234287Sdimnamespace clang { 17234287Sdimnamespace ento { 18234287Sdim class ProgramState; 19234287Sdim class ProgramStateManager; 20234287Sdim void ProgramStateRetain(const ProgramState *state); 21234287Sdim void ProgramStateRelease(const ProgramState *state); 22234287Sdim} 23234287Sdim} 24234287Sdim 25234287Sdimnamespace llvm { 26234287Sdim template <> struct IntrusiveRefCntPtrInfo<const clang::ento::ProgramState> { 27234287Sdim static void retain(const clang::ento::ProgramState *state) { 28234287Sdim clang::ento::ProgramStateRetain(state); 29234287Sdim } 30234287Sdim static void release(const clang::ento::ProgramState *state) { 31234287Sdim clang::ento::ProgramStateRelease(state); 32234287Sdim } 33234287Sdim }; 34234287Sdim} 35234287Sdim 36234287Sdimnamespace clang { 37234287Sdimnamespace ento { 38234287Sdim typedef IntrusiveRefCntPtr<const ProgramState> ProgramStateRef; 39234287Sdim} 40234287Sdim} 41234287Sdim 42234287Sdim#endif 43234287Sdim 44