Home | History | Annotate | Line # | Download | only in PathSensitive
      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