summaryrefslogtreecommitdiffhomepage
path: root/CompilerKit/StdKit
diff options
context:
space:
mode:
Diffstat (limited to 'CompilerKit/StdKit')
-rw-r--r--CompilerKit/StdKit/AE.hpp44
-rw-r--r--CompilerKit/StdKit/PEF.hpp12
2 files changed, 56 insertions, 0 deletions
diff --git a/CompilerKit/StdKit/AE.hpp b/CompilerKit/StdKit/AE.hpp
index f06c785..cc2144f 100644
--- a/CompilerKit/StdKit/AE.hpp
+++ b/CompilerKit/StdKit/AE.hpp
@@ -76,3 +76,47 @@ std::ofstream &operator<<(std::ofstream &fp, CompilerKit::AERecordHeader &contai
return fp;
}
+
+std::ifstream &operator>>(std::ifstream& fp, CompilerKit::AEHeader& container)
+{
+ fp.read((char*)&container, sizeof(CompilerKit::AEHeader));
+ return fp;
+}
+
+std::ifstream &operator>>(std::ifstream& fp, CompilerKit::AERecordHeader& container)
+{
+ fp.read((char*)&container, sizeof(CompilerKit::AERecordHeader));
+ return fp;
+}
+
+namespace CompilerKit::Utils
+{
+ class AEReadableProtocol final
+ {
+ public:
+ std::ifstream USED_FP;
+
+ public:
+ explicit AEReadableProtocol() = default;
+ ~AEReadableProtocol() = default;
+
+ CXXKIT_COPY_DEFAULT(AEReadableProtocol);
+
+ AERecordHeaderPtr Read(char* raw, std::size_t sz)
+ {
+ if (!raw)
+ return nullptr;
+
+ return this->_Read<AERecordHeader>(raw, sz * sizeof(AERecordHeader));
+ }
+
+ private:
+ template <typename TypeClass>
+ TypeClass* _Read(char* raw, std::size_t sz)
+ {
+ USED_FP.read(raw, std::streamsize(sz));
+ return reinterpret_cast<TypeClass*>(raw);
+ }
+
+ };
+} \ No newline at end of file
diff --git a/CompilerKit/StdKit/PEF.hpp b/CompilerKit/StdKit/PEF.hpp
index b8c5190..a6c1ffe 100644
--- a/CompilerKit/StdKit/PEF.hpp
+++ b/CompilerKit/StdKit/PEF.hpp
@@ -98,3 +98,15 @@ inline std::ofstream& operator<<(std::ofstream& fp, CompilerKit::PEFCommandHeade
fp.write((char*)&container, sizeof(CompilerKit::PEFCommandHeader));
return fp;
}
+
+std::ifstream &operator>>(std::ifstream& fp, CompilerKit::PEFContainer& container)
+{
+ fp.read((char*)&container, sizeof(CompilerKit::PEFContainer));
+ return fp;
+}
+
+std::ifstream &operator>>(std::ifstream& fp, CompilerKit::PEFCommandHeader& container)
+{
+ fp.read((char*)&container, sizeof(CompilerKit::PEFCommandHeader));
+ return fp;
+}