diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-08 01:57:30 -0500 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-08 01:57:30 -0500 |
| commit | 2ddaf86857828500235e8b8a65c11bb2dd91b8be (patch) | |
| tree | 46899c14955bf356be2331e63c181afd4089d982 /include/CompilerKit/Utilities | |
| parent | 9f7c44f1577f194cb76b03ac45a2af542a86c8b9 (diff) | |
chore! breaking API changes and new APIs introduced.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'include/CompilerKit/Utilities')
| -rw-r--r-- | include/CompilerKit/Utilities/Assembler.h | 16 | ||||
| -rw-r--r-- | include/CompilerKit/Utilities/DLL.h | 30 |
2 files changed, 23 insertions, 23 deletions
diff --git a/include/CompilerKit/Utilities/Assembler.h b/include/CompilerKit/Utilities/Assembler.h index afe95d1..ef1cf18 100644 --- a/include/CompilerKit/Utilities/Assembler.h +++ b/include/CompilerKit/Utilities/Assembler.h @@ -17,18 +17,20 @@ namespace CompilerKit { /// @return A numbercast of 32-bit width. inline NumberCast32 GetNumber32(STLString lineBuffer, STLString numberKey) { if (lineBuffer.empty()) return {}; + if (lineBuffer.find(numberKey) == STLString::npos) return {}; auto pos = lineBuffer.find(numberKey) + numberKey.size(); - while (lineBuffer[pos] == ' ') { - ++pos; - } + if (pos > lineBuffer.size()) return {}; + if ((pos + 1) > lineBuffer.size()) return {}; + + while (lineBuffer[pos] == ' ') ++pos; switch (lineBuffer[pos + 1]) { case 'x': { if (auto res = strtol(lineBuffer.substr(pos).c_str(), nullptr, 16); !res) { if (errno != 0) { - CompilerKit::Detail::print_error("invalid hex number: " + lineBuffer, "CompilerKit"); + Detail::print_error("invalid hex number: " + lineBuffer, "CompilerKit"); throw std::runtime_error("invalid_hex"); } } @@ -44,7 +46,7 @@ inline NumberCast32 GetNumber32(STLString lineBuffer, STLString numberKey) { case 'b': { if (auto res = strtol(lineBuffer.substr(pos).c_str(), nullptr, 2); !res) { if (errno != 0) { - CompilerKit::Detail::print_error("invalid binary number:" + lineBuffer, "CompilerKit"); + Detail::print_error("invalid binary number:" + lineBuffer, "CompilerKit"); throw std::runtime_error("invalid_bin"); } } @@ -60,7 +62,7 @@ inline NumberCast32 GetNumber32(STLString lineBuffer, STLString numberKey) { case 'o': { if (auto res = strtol(lineBuffer.substr(pos).c_str(), nullptr, 7); !res) { if (errno != 0) { - CompilerKit::Detail::print_error("invalid octal number: " + lineBuffer, "CompilerKit"); + Detail::print_error("invalid octal number: " + lineBuffer, "CompilerKit"); throw std::runtime_error("invalid_octal"); } } @@ -76,7 +78,7 @@ inline NumberCast32 GetNumber32(STLString lineBuffer, STLString numberKey) { default: { if (auto res = strtol(lineBuffer.substr(pos).c_str(), nullptr, 10); !res) { if (errno != 0) { - CompilerKit::Detail::print_error("invalid hex number: " + lineBuffer, "CompilerKit"); + Detail::print_error("invalid hex number: " + lineBuffer, "CompilerKit"); throw std::runtime_error("invalid_hex"); } } diff --git a/include/CompilerKit/Utilities/DLL.h b/include/CompilerKit/Utilities/DLL.h index 5bfe032..490017e 100644 --- a/include/CompilerKit/Utilities/DLL.h +++ b/include/CompilerKit/Utilities/DLL.h @@ -10,21 +10,18 @@ #include <dlfcn.h> #include <mutex> -struct CompilerKitDylibTraits; +namespace CompilerKit { +struct DLLTraits final { + typedef Int32 (*Entrypoint)(Int32 argc, Char const* argv[]); + using DLL = VoidPtr; -typedef Int32 (*CompilerKitEntrypoint)(Int32 argc, Char const* argv[]); -typedef VoidPtr CompilerKitDylib; + DLL fDylib{nullptr}; + Entrypoint fEntrypoint{nullptr}; + std::mutex fMutex; -struct CompilerKitDylibTraits final { - CompilerKitDylib fDylib{nullptr}; - CompilerKitEntrypoint fEntrypoint{nullptr}; - std::mutex fMutex; + explicit operator bool() { return fDylib && fEntrypoint; } - explicit operator bool() { - return fDylib && fEntrypoint; - } - - CompilerKitDylibTraits& operator()(const Char* path, const Char* fEntrypoint) { + DLLTraits& operator()(const Char* path, const Char* fEntrypoint) { std::lock_guard<std::mutex> lock(this->fMutex); if (!path || !fEntrypoint) return *this; @@ -40,7 +37,7 @@ struct CompilerKitDylibTraits final { return *this; } - this->fEntrypoint = (CompilerKitEntrypoint) dlsym(this->fDylib, fEntrypoint); + this->fEntrypoint = (Entrypoint) dlsym(this->fDylib, fEntrypoint); if (!this->fEntrypoint) { dlclose(this->fDylib); @@ -52,11 +49,11 @@ struct CompilerKitDylibTraits final { return *this; } - NECTI_COPY_DELETE(CompilerKitDylibTraits); + NECTI_COPY_DELETE(DLLTraits) - CompilerKitDylibTraits() = default; + explicit DLLTraits() = default; - ~CompilerKitDylibTraits() { + ~DLLTraits() { if (this->fDylib) { dlclose(this->fDylib); this->fDylib = nullptr; @@ -65,3 +62,4 @@ struct CompilerKitDylibTraits final { this->fEntrypoint = nullptr; } }; +} // namespace CompilerKit
\ No newline at end of file |
