1 //== ProgramState_Fwd.h - Incomplete declarations of ProgramState -*- C++ -*--=/ 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_PROGRAMSTATE_FWD_H 10 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_PROGRAMSTATE_FWD_H 11 12 #include "clang/Basic/LLVM.h" 13 #include "llvm/ADT/IntrusiveRefCntPtr.h" 14 15 namespace clang { 16 namespace ento { 17 class ProgramState; 18 class ProgramStateManager; 19 void ProgramStateRetain(const ProgramState *state); 20 void ProgramStateRelease(const ProgramState *state); 21 } 22 } 23 24 namespace llvm { 25 template <> struct IntrusiveRefCntPtrInfo<const clang::ento::ProgramState> { 26 static void retain(const clang::ento::ProgramState *state) { 27 clang::ento::ProgramStateRetain(state); 28 } 29 static void release(const clang::ento::ProgramState *state) { 30 clang::ento::ProgramStateRelease(state); 31 } 32 }; 33 } 34 35 namespace clang { 36 namespace ento { 37 typedef IntrusiveRefCntPtr<const ProgramState> ProgramStateRef; 38 } 39 } 40 41 #endif 42 43