summaryrefslogtreecommitdiffhomepage
path: root/dev/CompilerKit/AE.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:05:29 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:05:29 +0100
commitbbe2c77243c541ca7e0075149f5be3262eb89523 (patch)
treeae5d59d299344fd19584a2c3642bacd788e841d4 /dev/CompilerKit/AE.h
parentb5adf16a96b9cbb80c74cf30404ed5bcff03ac34 (diff)
feat! breaking changes on necti sources.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/CompilerKit/AE.h')
-rw-r--r--dev/CompilerKit/AE.h136
1 files changed, 0 insertions, 136 deletions
diff --git a/dev/CompilerKit/AE.h b/dev/CompilerKit/AE.h
deleted file mode 100644
index 7b6d9b4..0000000
--- a/dev/CompilerKit/AE.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * ========================================================
- *
- * CompilerKit
- * Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license.
- *
- * ========================================================
- */
-
-#ifndef _NECTI_AE_H_
-#define _NECTI_AE_H_
-
-#include <CompilerKit/Defines.h>
-
-#define kAEVer (0x0121)
-
-#define kAEMag0 'A'
-#define kAEMag1 'E'
-
-#define kAESymbolLen (255)
-#define kAEPad (8)
-#define kAEMagLen (2)
-#define kAENullType (0x00)
-
-/// @author Amlal El Mahrouss
-
-/// @brief
-// Advanced Executable File Format for ld64.
-// Reloctable by offset is the default strategy.
-// You can also relocate at runtime but that's up to the operating system loader.
-
-namespace CompilerKit {
-// @brief Advanced Executable Header
-// One thing to keep in mind.
-// This object format, is reloctable.
-typedef struct AEHeader final {
- Char fMagic[kAEMagLen] = {};
- UInt16 fVersion{kAEVer};
- Char fArch{};
- Char fSubArch{};
- SizeType fCount{};
- Char fSize{};
- SizeType fStartCode{};
- SizeType fCodeSize{};
- Char fPad[kAEPad] = {};
-} PACKED AEHeader, *AEHeaderPtr;
-
-// @brief Advanced Executable Record.
-// Could be data, code or bss.
-// fKind must be filled with PEF fields.
-
-typedef struct AERecordHeader final {
- Char fName[kAESymbolLen];
- SizeType fKind;
- SizeType fSize;
- SizeType fFlags;
- UIntPtr fOffset;
- Char fPad[kAEPad];
-} PACKED AERecordHeader, *AERecordHeaderPtr;
-
-enum {
- kKindRelocationByOffset = 0x23f,
- kKindRelocationAtRuntime = 0x34f,
-};
-} // namespace CompilerKit
-
-// provide operator<< for AE
-
-inline std::ofstream& operator<<(std::ofstream& fp, CompilerKit::AEHeader& container) {
- fp.write((char*) &container, sizeof(CompilerKit::AEHeader));
-
- return fp;
-}
-
-inline std::ofstream& operator<<(std::ofstream& fp, CompilerKit::AERecordHeader& container) {
- fp.write((char*) &container, sizeof(CompilerKit::AERecordHeader));
-
- return fp;
-}
-
-inline std::ifstream& operator>>(std::ifstream& fp, CompilerKit::AEHeader& container) {
- fp.read((char*) &container, sizeof(CompilerKit::AEHeader));
- return fp;
-}
-
-inline std::ifstream& operator>>(std::ifstream& fp, CompilerKit::AERecordHeader& container) {
- fp.read((char*) &container, sizeof(CompilerKit::AERecordHeader));
- return fp;
-}
-
-namespace CompilerKit::Utils {
-/**
- * @brief AE Reader protocol
- *
- */
-class AEReadableProtocol final {
- public:
- std::ifstream file_pointer_;
-
- public:
- explicit AEReadableProtocol() = default;
- ~AEReadableProtocol() = default;
-
- NECTI_COPY_DELETE(AEReadableProtocol);
-
- /**
- * @brief Read AE Record headers.
- *
- * @param raw the containing buffer
- * @param sz it's size (1 = one AERecordHeader, 2 two AERecordHeader(s))
- * @return AERecordHeaderPtr
- */
- AERecordHeaderPtr Read(char* raw, std::size_t sz) {
- if (!raw) return nullptr;
-
- return this->Read_<AERecordHeader>(raw, sz * sizeof(AERecordHeader));
- }
-
- private:
- /**
- * @brief Implementation of Read for raw classes.
- *
- * @tparam TypeClass The class to read.
- * @param raw the buffer
- * @param sz the size
- * @return TypeClass* the returning class.
- */
- template <typename TypeClass>
- TypeClass* Read_(char* raw, std::size_t sz) {
- file_pointer_.read(raw, std::streamsize(sz));
- return reinterpret_cast<TypeClass*>(raw);
- }
-};
-} // namespace CompilerKit::Utils
-
-#endif /* ifndef _NECTI_AE_H_ */ \ No newline at end of file