18bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek//== ProgramState_Fwd.h - Incomplete declarations of ProgramState -*- C++ -*--=/ 28bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek// 38bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek// The LLVM Compiler Infrastructure 48bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek// 58bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek// This file is distributed under the University of Illinois Open Source 68bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek// License. See LICENSE.TXT for details. 78bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek// 88bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek//===----------------------------------------------------------------------===// 98bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek 108bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek#ifndef LLVM_CLANG_PROGRAMSTATE_FWD_H 118bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek#define LLVM_CLANG_PROGRAMSTATE_FWD_H 128bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek 13c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith#include "clang/Basic/LLVM.h" 14a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis#include "llvm/ADT/IntrusiveRefCntPtr.h" 15a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis 168bef8238181a30e52dea380789a7e2d760eac532Ted Kremeneknamespace clang { 178bef8238181a30e52dea380789a7e2d760eac532Ted Kremeneknamespace ento { 188bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek class ProgramState; 198bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek class ProgramStateManager; 20a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis void ProgramStateRetain(const ProgramState *state); 21a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis void ProgramStateRelease(const ProgramState *state); 22a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis} 23a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis} 24a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis 25a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidisnamespace llvm { 26a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis template <> struct IntrusiveRefCntPtrInfo<const clang::ento::ProgramState> { 27a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis static void retain(const clang::ento::ProgramState *state) { 28a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis clang::ento::ProgramStateRetain(state); 29a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis } 30a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis static void release(const clang::ento::ProgramState *state) { 31a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis clang::ento::ProgramStateRelease(state); 32a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis } 33a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis }; 34a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis} 35a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis 36a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidisnamespace clang { 37a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidisnamespace ento { 38c93dc7889644293e318e19d82830ea2acc45b678Dylan Noblesmith typedef IntrusiveRefCntPtr<const ProgramState> ProgramStateRef; 398bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek} 408bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek} 418bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek 428bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek#endif 438bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek 44