summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-05 21:18:35 +0100
committerGitHub <noreply@github.com>2025-11-05 21:18:35 +0100
commit41d4c1f2158be039ad94c09800885aafdafc5f24 (patch)
tree57eb44165e6008a3561970f5f5d86cb686fc2cbe /dev
parent8939837390193e86c52299048caec9c7722178e6 (diff)
parent964f0d8ca36d9333efcfd3136a5cae77dc5dded4 (diff)
Merge pull request #3 from snu-systems-corp/develop
Develop: New URL API.
Diffstat (limited to 'dev')
-rw-r--r--dev/lib/core/allocator_system.hpp1
-rw-r--r--dev/lib/core/error_handler.hpp1
-rw-r--r--dev/lib/fix/fix.hpp1
-rw-r--r--dev/lib/net/modem.hpp2
-rw-r--r--dev/lib/net/url.hpp60
-rw-r--r--dev/lib/simd/basic_simd.hpp5
-rw-r--r--dev/lib/tests/gtest.hpp2
-rw-r--r--dev/lib/tests/hpptest.hpp6
-rw-r--r--dev/lib/utility/chunk_string.hpp6
-rw-r--r--dev/lib/utility/embfs.hpp3
10 files changed, 53 insertions, 34 deletions
diff --git a/dev/lib/core/allocator_system.hpp b/dev/lib/core/allocator_system.hpp
index 53cf095..3ffa02a 100644
--- a/dev/lib/core/allocator_system.hpp
+++ b/dev/lib/core/allocator_system.hpp
@@ -9,7 +9,6 @@
#define _SCL_ALLOCATOR_SYSTEM_HPP
#include <lib/core/includes.hpp>
-#include <stdexcept>
#include <memory>
namespace scl
diff --git a/dev/lib/core/error_handler.hpp b/dev/lib/core/error_handler.hpp
index 939a0ff..449e255 100644
--- a/dev/lib/core/error_handler.hpp
+++ b/dev/lib/core/error_handler.hpp
@@ -10,7 +10,6 @@
#include <lib/core/includes.hpp>
#include <lib/io/print.hpp>
-#include <stdexcept>
namespace scl
{
diff --git a/dev/lib/fix/fix.hpp b/dev/lib/fix/fix.hpp
index 4a5a3ae..672b8a1 100644
--- a/dev/lib/fix/fix.hpp
+++ b/dev/lib/fix/fix.hpp
@@ -16,7 +16,6 @@
#include <cstdint>
#include <sys/types.h>
#include <unistd.h>
-#include <signal.h>
namespace scl::fix
{
diff --git a/dev/lib/net/modem.hpp b/dev/lib/net/modem.hpp
index 69b1aef..6c63399 100644
--- a/dev/lib/net/modem.hpp
+++ b/dev/lib/net/modem.hpp
@@ -14,7 +14,7 @@
#include <string>
#include <cstddef>
-#define OCL_MODEM_INTERFACE : public scl::net::basic_modem
+#define SCL_MODEM_INTERFACE : public scl::net::basic_modem
namespace scl::net
{
diff --git a/dev/lib/net/url.hpp b/dev/lib/net/url.hpp
index 3ada418..52991f2 100644
--- a/dev/lib/net/url.hpp
+++ b/dev/lib/net/url.hpp
@@ -8,46 +8,70 @@
#pragma once
#include <string>
-#include <iostream>
#include <sstream>
/// @author Amlal El Mahrouss (amlal@nekernel.org)
+/// @brief Parse URLs (in a non-standard way).
namespace scl::net
{
template <typename char_type>
class basic_url;
- template <typename char_type>
- class basic_url_traits;
+ enum class url_protocol
+ {
+ invalid = 0,
+ http,
+ https,
+ mailto,
+ bad = 0xff,
+ };
/// @brief Basic URL parser container.
template <typename char_type>
class basic_url final
{
- friend basic_url_traits<char_type>;
-
- std::basic_stringstream<char_type> ss_{};
+ url_protocol m_protocol_{url_protocol::invalid};
+ std::basic_stringstream<char_type> m_ss_{};
public:
- explicit basic_url() = default;
- ~basic_url() = default;
+ explicit basic_url(const std::basic_string<char_type>& protocol)
+ {
+ if (protocol.starts_with("https://"))
+ {
+ m_protocol_ = url_protocol::https;
+ this->operator/=(protocol.substr(strlen("https://")));
+ }
+ else if (protocol.starts_with("http://"))
+ {
+ m_protocol_ = url_protocol::http;
+ this->operator/=(protocol.substr(strlen("http://")));
+ }
+ else if (protocol.starts_with("mailto:"))
+ {
+ m_protocol_ = url_protocol::mailto;
+ this->operator/=(protocol.substr(strlen("mailto:")));
+ }
+ }
+
+ ~basic_url() = default;
basic_url& operator=(const basic_url&) = default;
basic_url(const basic_url&) = default;
+ private:
basic_url& operator/=(const std::basic_string<char_type>& in)
{
if (in.empty())
return *this;
- ss_ += in;
+ m_ss_ += in;
return *this;
}
basic_url& operator/=(const char_type& in)
{
- ss_ += in;
+ m_ss_ += in;
return *this;
}
@@ -56,17 +80,15 @@ namespace scl::net
return this->is_valid();
}
- bool is_valid()
+ public:
+ bool protocol_exists()
{
- return ss_.size() > 0;
+ return this->m_protocol_ != url_protocol::bad || this->m_protocol_ != url_protocol::invalid;
}
- };
- enum class protocol
- {
- http,
- https,
- mailto,
- bad
+ bool is_valid()
+ {
+ return m_ss_.size() > 0 && this->protocol_exists();
+ }
};
} // namespace scl::net
diff --git a/dev/lib/simd/basic_simd.hpp b/dev/lib/simd/basic_simd.hpp
index 97d0399..b3087ff 100644
--- a/dev/lib/simd/basic_simd.hpp
+++ b/dev/lib/simd/basic_simd.hpp
@@ -8,17 +8,14 @@
#pragma once
#include <lib/core/includes.hpp>
-#include <cmath>
#ifdef __x86_64__
#include <immintrin.h>
-
using simd_type = __m256;
#endif
#ifdef __aarch64__
#include <arm_neon.h>
-
using simd_type = float32x4_t;
#endif
@@ -44,7 +41,7 @@ namespace scl::snu::simd
std::basic_string<char> isa()
{
- return "basic-backend";
+ return "basic_simd_backend";
}
};
} // namespace scl::snu::simd
diff --git a/dev/lib/tests/gtest.hpp b/dev/lib/tests/gtest.hpp
index deb2ddf..c333d2c 100644
--- a/dev/lib/tests/gtest.hpp
+++ b/dev/lib/tests/gtest.hpp
@@ -5,4 +5,6 @@
* Copyright 2025, Amlal El Mahrouss
*/
+#pragma once
+
#include <gtest/gtest.h>
diff --git a/dev/lib/tests/hpptest.hpp b/dev/lib/tests/hpptest.hpp
index 87d8f77..63fc962 100644
--- a/dev/lib/tests/hpptest.hpp
+++ b/dev/lib/tests/hpptest.hpp
@@ -7,7 +7,6 @@
#pragma once
-#ifdef OCL_HPPTEST
namespace scl::hpptest
{
typedef bool condition_type;
@@ -15,7 +14,8 @@ namespace scl::hpptest
template <condition_type expr = true>
consteval inline void must_pass()
{
- OCL_HPPTEST_ASSERT(expr);
+#ifdef SCL_HPPTEST
+ SCL_HPPTEST_ASSERT(expr);
+#endif
}
} // namespace scl::hpptest
-#endif
diff --git a/dev/lib/utility/chunk_string.hpp b/dev/lib/utility/chunk_string.hpp
index c5bf5c6..6778173 100644
--- a/dev/lib/utility/chunk_string.hpp
+++ b/dev/lib/utility/chunk_string.hpp
@@ -5,8 +5,8 @@
* Copyright 2025, Amlal El Mahrouss
*/
-#ifndef OCL_UTILITY_CHUNK_STRING_HPP
-#define OCL_UTILITY_CHUNK_STRING_HPP
+#ifndef SCL_UTILITY_CHUNK_STRING_HPP
+#define SCL_UTILITY_CHUNK_STRING_HPP
#include <lib/core/includes.hpp>
@@ -99,4 +99,4 @@ namespace scl
fmt.print();
}
} // namespace scl
-#endif // ifndef OCL_UTILITY_CHUNK_STRING_HPP
+#endif // ifndef SCL_UTILITY_CHUNK_STRING_HPP
diff --git a/dev/lib/utility/embfs.hpp b/dev/lib/utility/embfs.hpp
index 689082c..2738ae7 100644
--- a/dev/lib/utility/embfs.hpp
+++ b/dev/lib/utility/embfs.hpp
@@ -28,7 +28,7 @@ namespace scl::embfs
inline constexpr const size_t _inode_arr_len = 12;
inline constexpr const size_t _inode_lookup_len = 8;
-#ifdef EMBFS_28BIT_LBA
+#if defined(EMBFS_28BIT_LBA)
typedef std::uint32_t lba_t;
#elif defined(EMBFS_48BIT_LBA)
typedef std::uint64_t lba_t;
@@ -37,6 +37,7 @@ namespace scl::embfs
#endif
typedef std::int16_t sword_t;
+
typedef std::int32_t sdword_t;
typedef std::uint8_t utf8_char_t;