blob: 516371924d0b8bea73229b63c7176d7bd538a4cf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
/*
* ========================================================
*
* hCore
* Copyright Mahrouss Logic, all rights reserved.
*
* ========================================================
*/
#ifndef __SUPPORTKIT_SHARED_OBJECT_CORE_HXX__
#define __SUPPORTKIT_SHARED_OBJECT_CORE_HXX__
#include <NewKit/Defines.hpp>
#include <KernelKit/Loader.hpp>
namespace hCore
{
class SharedObject final
{
public:
struct SharedObjectTraits final
{
VoidPtr fImageObject;
VoidPtr fImageEntrypointOffset;
};
public:
explicit SharedObject() = default;
~SharedObject() = default;
public:
HCORE_COPY_DEFAULT(SharedObject);
private:
SharedObjectTraits* fMounted{ nullptr };
public:
SharedObjectTraits** GetAddressOf() { return &fMounted; }
SharedObjectTraits* Get() { return fMounted; }
public:
void Mount(SharedObjectTraits* to_mount) { fMounted = to_mount; }
void Unmount() { if (fMounted) fMounted = nullptr; };
template <typename SymbolType>
SymbolType Load(const char* symbol_name);
};
inline void hcore_pure_call(void)
{
// virtual placeholder.
return;
}
}
#endif /* ifndef __SUPPORTKIT_SHARED_OBJECT_CORE_HXX__ */
|