1 //== ProgramState_Fwd.h - Incomplete declarations of ProgramState -*- C++ -*--=/ 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 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_PROGRAMSTATE_FWD_H 11 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_PROGRAMSTATE_FWD_H 12 13 #include "clang/Basic/LLVM.h" 14 #include "llvm/ADT/IntrusiveRefCntPtr.h" 15 16 namespace clang { 17 namespace ento { 18 class ProgramState; 19 class ProgramStateManager; 20 void ProgramStateRetain(const ProgramState *state); 21 void ProgramStateRelease(const ProgramState *state); 22 } 23 } 24 25 namespace llvm { 26 template <> struct IntrusiveRefCntPtrInfo<const clang::ento::ProgramState> { 27 static void retain(const clang::ento::ProgramState *state) { 28 clang::ento::ProgramStateRetain(state); 29 } 30 static void release(const clang::ento::ProgramState *state) { 31 clang::ento::ProgramStateRelease(state); 32 } 33 }; 34 } 35 36 namespace clang { 37 namespace ento { 38 typedef IntrusiveRefCntPtr<const ProgramState> ProgramStateRef; 39 } 40 } 41 42 #endif 43 44