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 15namespace clang { 16namespace ento { 17 class ProgramState; 18 class ProgramStateManager; 19 void ProgramStateRetain(const ProgramState *state); 20 void ProgramStateRelease(const ProgramState *state); 21} 22} 23 24namespace 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 35namespace clang { 36namespace ento { 37 typedef IntrusiveRefCntPtr<const ProgramState> ProgramStateRef; 38} 39} 40 41#endif 42 43