summaryrefslogtreecommitdiffhomepage
path: root/include/CompilerKit/Utilities
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-08 01:57:30 -0500
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-08 01:57:30 -0500
commit2ddaf86857828500235e8b8a65c11bb2dd91b8be (patch)
tree46899c14955bf356be2331e63c181afd4089d982 /include/CompilerKit/Utilities
parent9f7c44f1577f194cb76b03ac45a2af542a86c8b9 (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.h16
-rw-r--r--include/CompilerKit/Utilities/DLL.h30
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