diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-30 23:03:30 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-30 23:03:30 +0100 |
| commit | 71a35e96d5597fca8882e96976e9461dc3dd85e9 (patch) | |
| tree | 9b5964cad0edefd00cb2a4eb3842c6e1b428e6bd /Private/KernelKit/SharedObjectCore.hxx | |
| parent | df44a789fc90497325ba91be515c02145ae39142 (diff) | |
Bootloader: have been working on unifing the BTextWriter class.
Next commit will be about the BFileReader class. It's going to read files
from EFI.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/KernelKit/SharedObjectCore.hxx')
| -rw-r--r-- | Private/KernelKit/SharedObjectCore.hxx | 122 |
1 files changed, 56 insertions, 66 deletions
diff --git a/Private/KernelKit/SharedObjectCore.hxx b/Private/KernelKit/SharedObjectCore.hxx index afda0080..b896a9dc 100644 --- a/Private/KernelKit/SharedObjectCore.hxx +++ b/Private/KernelKit/SharedObjectCore.hxx @@ -11,85 +11,75 @@ #define __KERNELKIT_SHARED_OBJECT_CORE_HXX__ #include <KernelKit/CodeManager.hpp> -#include <KernelKit/PEF.hpp> #include <KernelKit/Loader.hpp> +#include <KernelKit/PEF.hpp> #include <NewKit/Defines.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; +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; + + if (fLoader && to_mount) { + delete fLoader; + fLoader = nullptr; } - public: - void Mount(SharedObjectTraits *to_mount) - { - fMounted = to_mount; - - if (fLoader && to_mount) - { - delete fLoader; - fLoader = nullptr; - } - - if (!fLoader) - { - fLoader = new PEFLoader(fMounted->fImageObject); - } + if (!fLoader) { + fLoader = new PEFLoader(fMounted->fImageObject); } - void Unmount() - { - if (fMounted) - fMounted = nullptr; - }; + } - template <typename SymbolType> SymbolType Load(const char *symbol_name) - { - auto ret = reinterpret_cast<SymbolType>(fLoader->FindSymbol(symbol_name, kPefCode)); + void Unmount() { + if (fMounted) fMounted = nullptr; + }; - if (!ret) - ret = reinterpret_cast<SymbolType>(fLoader->FindSymbol(symbol_name, kPefData)); + template <typename SymbolType> + SymbolType Load(const char *symbol_name) { + auto ret = reinterpret_cast<SymbolType>( + fLoader->FindSymbol(symbol_name, kPefCode)); - if (!ret) - ret = reinterpret_cast<SymbolType>(fLoader->FindSymbol(symbol_name, kPefZero)); + if (!ret) + ret = reinterpret_cast<SymbolType>( + fLoader->FindSymbol(symbol_name, kPefData)); - return ret; - } + if (!ret) + ret = reinterpret_cast<SymbolType>( + fLoader->FindSymbol(symbol_name, kPefZero)); + + return ret; + } - private: - PEFLoader *fLoader{nullptr}; + private: + PEFLoader *fLoader{nullptr}; }; -inline void hcore_pure_call(void) -{ - // virtual placeholder. - return; +inline void hcore_pure_call(void) { + // virtual placeholder. + return; } -} // namespace HCore +} // namespace HCore #endif /* ifndef __KERNELKIT_SHARED_OBJECT_CORE_HXX__ */ |
