clang API Documentation
00001 //== ProgramState_Fwd.h - Incomplete declarations of ProgramState -*- C++ -*--=/ 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 00010 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_PROGRAMSTATE_FWD_H 00011 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_PROGRAMSTATE_FWD_H 00012 00013 #include "clang/Basic/LLVM.h" 00014 #include "llvm/ADT/IntrusiveRefCntPtr.h" 00015 00016 namespace clang { 00017 namespace ento { 00018 class ProgramState; 00019 class ProgramStateManager; 00020 void ProgramStateRetain(const ProgramState *state); 00021 void ProgramStateRelease(const ProgramState *state); 00022 } 00023 } 00024 00025 namespace llvm { 00026 template <> struct IntrusiveRefCntPtrInfo<const clang::ento::ProgramState> { 00027 static void retain(const clang::ento::ProgramState *state) { 00028 clang::ento::ProgramStateRetain(state); 00029 } 00030 static void release(const clang::ento::ProgramState *state) { 00031 clang::ento::ProgramStateRelease(state); 00032 } 00033 }; 00034 } 00035 00036 namespace clang { 00037 namespace ento { 00038 typedef IntrusiveRefCntPtr<const ProgramState> ProgramStateRef; 00039 } 00040 } 00041 00042 #endif 00043