remotemono
RMonoHandle_FwdDef.h
1 /*
2  Copyright 2020 David "Alemarius Nexus" Lerch
3 
4  This file is part of RemoteMono.
5 
6  RemoteMono is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  RemoteMono is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with RemoteMono. If not, see <https://www.gnu.org/licenses/>.
18  */
19 
20 #pragma once
21 
22 #include "../config.h"
23 
24 
25 
26 namespace remotemono
27 {
28 
29 
30 class RMonoAPIBase;
31 
32 
33 template <typename HandleT>
34 void RMonoHandleDeleteNull(HandleT, RMonoAPIBase*) {}
35 
36 template <typename PtrT>
37 void RMonoHandleAssemblyNamePtrDelete(PtrT p, RMonoAPIBase* mono);
38 
39 template <typename PtrT>
40 void RMonoHandleMethodDescPtrDelete(PtrT p, RMonoAPIBase* mono);
41 
42 
43 template<typename HandleT, void (*deleter)(HandleT, RMonoAPIBase*) = &RMonoHandleDeleteNull<HandleT>, HandleT invalidHandle = 0>
44 class RMonoHandle;
45 
46 template <typename RawPtrT>
47 class RMonoObjectHandle;
48 
49 
50 }