summaryrefslogtreecommitdiffhomepage
path: root/Kernel/CFKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-09 00:42:44 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-09 00:42:44 +0200
commitaf8a516fc22865abd80d6e26f1541fa3d6bebfdc (patch)
tree96d42a10945fc03df022389aef54708383c1d616 /Kernel/CFKit
parenta874e9cc98df994178d55996943fe81799c61d2f (diff)
MHR-23: :boom:, refactors.
- Move NewBoot to /Boot, thus making Kernel directory only containing the kernel. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Kernel/CFKit')
-rw-r--r--Kernel/CFKit/GUIDWizard.hpp22
-rw-r--r--Kernel/CFKit/GUIDWrapper.hpp58
-rw-r--r--Kernel/CFKit/Property.hpp46
-rw-r--r--Kernel/CFKit/URL.hpp33
-rw-r--r--Kernel/CFKit/compile_flags.txt5
5 files changed, 164 insertions, 0 deletions
diff --git a/Kernel/CFKit/GUIDWizard.hpp b/Kernel/CFKit/GUIDWizard.hpp
new file mode 100644
index 00000000..17c878f5
--- /dev/null
+++ b/Kernel/CFKit/GUIDWizard.hpp
@@ -0,0 +1,22 @@
+/* -------------------------------------------
+
+ Copyright SoftwareLabs
+
+------------------------------------------- */
+
+#pragma once
+
+#include <CFKit/GUIDWrapper.hpp>
+#include <NewKit/Array.hpp>
+#include <NewKit/ArrayList.hpp>
+#include <NewKit/Defines.hpp>
+#include <NewKit/ErrorOr.hpp>
+#include <NewKit/Ref.hpp>
+#include <NewKit/Stream.hpp>
+#include <NewKit/String.hpp>
+
+namespace NewOS::XRN::Version1
+{
+ Ref<GUIDSequence*> make_sequence(const ArrayList<UShort>& seq);
+ ErrorOr<Ref<NewOS::StringView>> try_guid_to_string(Ref<GUIDSequence*>& guid);
+} // namespace NewOS::XRN::Version1
diff --git a/Kernel/CFKit/GUIDWrapper.hpp b/Kernel/CFKit/GUIDWrapper.hpp
new file mode 100644
index 00000000..0a1e4144
--- /dev/null
+++ b/Kernel/CFKit/GUIDWrapper.hpp
@@ -0,0 +1,58 @@
+/* -------------------------------------------
+
+ Copyright SoftwareLabs
+
+------------------------------------------- */
+
+#pragma once
+
+#include <NewKit/Defines.hpp>
+#include <NewKit/Ref.hpp>
+#include <NewKit/Stream.hpp>
+
+/* GUID for C++ Components */
+
+#define kXRNNil "@{........-....-M...-N...-............}"
+
+// eXtensible Resource Information
+namespace NewOS::XRN
+{
+ union GUIDSequence {
+ alignas(8) UShort u8[16];
+ alignas(8) UShort u16[8];
+ alignas(8) UInt u32[4];
+ alignas(8) ULong u64[2];
+
+ struct
+ {
+ alignas(8) UInt fMs1;
+ UShort fMs2;
+ UShort fMs3;
+ UChar fMs4[8];
+ };
+ };
+
+ class GUID final
+ {
+ public:
+ explicit GUID() = default;
+ ~GUID() = default;
+
+ public:
+ GUID& operator=(const GUID&) = default;
+ GUID(const GUID&) = default;
+
+ public:
+ GUIDSequence& operator->() noexcept
+ {
+ return fUUID;
+ }
+ GUIDSequence& Leak() noexcept
+ {
+ return fUUID;
+ }
+
+ private:
+ GUIDSequence fUUID;
+ };
+} // namespace NewOS::XRN
diff --git a/Kernel/CFKit/Property.hpp b/Kernel/CFKit/Property.hpp
new file mode 100644
index 00000000..5900d0b3
--- /dev/null
+++ b/Kernel/CFKit/Property.hpp
@@ -0,0 +1,46 @@
+/* -------------------------------------------
+
+ Copyright SoftwareLabs
+
+------------------------------------------- */
+
+#ifndef _INC_PLIST_HPP__
+#define _INC_PLIST_HPP__
+
+#include <NewKit/Array.hpp>
+#include <NewKit/Defines.hpp>
+#include <NewKit/Function.hpp>
+#include <NewKit/String.hpp>
+
+namespace NewOS
+{
+ using PropertyId = Int;
+
+ /// @brief Kernel property class.
+ class Property
+ {
+ public:
+ explicit Property(const StringView& sw)
+ : fName(sw)
+ {
+ }
+
+ virtual ~Property() = default;
+
+ public:
+ Property& operator=(const Property&) = default;
+ Property(const Property&) = default;
+
+ bool StringEquals(StringView& name);
+ const PropertyId& GetPropertyById();
+
+ private:
+ Ref<StringView> fName;
+ PropertyId fAction;
+ };
+
+ template <SSizeT N>
+ using PropertyArray = Array<Property, N>;
+} // namespace NewOS
+
+#endif // !_INC_PLIST_HPP__
diff --git a/Kernel/CFKit/URL.hpp b/Kernel/CFKit/URL.hpp
new file mode 100644
index 00000000..93a078a0
--- /dev/null
+++ b/Kernel/CFKit/URL.hpp
@@ -0,0 +1,33 @@
+/* -------------------------------------------
+
+ Copyright SoftwareLabs
+
+------------------------------------------- */
+
+#ifndef _INC_URL_HPP_
+#define _INC_URL_HPP_
+
+#include <NewKit/Defines.hpp>
+#include <NewKit/String.hpp>
+
+namespace NewOS
+{
+ class URL final
+ {
+ public:
+ explicit URL(StringView& strUrl);
+ ~URL();
+
+ public:
+ Ref<ErrorOr<StringView>> Location() noexcept;
+ Ref<ErrorOr<StringView>> Protocol() noexcept;
+
+ private:
+ Ref<StringView> fUrlView;
+ };
+
+ ErrorOr<StringView> url_extract_location(const char* url);
+ ErrorOr<StringView> url_extract_protocol(const char* url);
+} // namespace NewOS
+
+#endif /* ifndef _INC_URL_HPP_ */
diff --git a/Kernel/CFKit/compile_flags.txt b/Kernel/CFKit/compile_flags.txt
new file mode 100644
index 00000000..a37ae6bf
--- /dev/null
+++ b/Kernel/CFKit/compile_flags.txt
@@ -0,0 +1,5 @@
+-nostdlib
+-ffreestanding
+-std=c++20
+-I./
+-I../