diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-05 21:18:35 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-05 21:18:35 +0100 |
| commit | 41d4c1f2158be039ad94c09800885aafdafc5f24 (patch) | |
| tree | 57eb44165e6008a3561970f5f5d86cb686fc2cbe | |
| parent | 8939837390193e86c52299048caec9c7722178e6 (diff) | |
| parent | 964f0d8ca36d9333efcfd3136a5cae77dc5dded4 (diff) | |
Merge pull request #3 from snu-systems-corp/develop
Develop: New URL API.
| -rw-r--r-- | dev/lib/core/allocator_system.hpp | 1 | ||||
| -rw-r--r-- | dev/lib/core/error_handler.hpp | 1 | ||||
| -rw-r--r-- | dev/lib/fix/fix.hpp | 1 | ||||
| -rw-r--r-- | dev/lib/net/modem.hpp | 2 | ||||
| -rw-r--r-- | dev/lib/net/url.hpp | 60 | ||||
| -rw-r--r-- | dev/lib/simd/basic_simd.hpp | 5 | ||||
| -rw-r--r-- | dev/lib/tests/gtest.hpp | 2 | ||||
| -rw-r--r-- | dev/lib/tests/hpptest.hpp | 6 | ||||
| -rw-r--r-- | dev/lib/utility/chunk_string.hpp | 6 | ||||
| -rw-r--r-- | dev/lib/utility/embfs.hpp | 3 | ||||
| -rwxr-xr-x | tools/hpptest.py | 2 |
11 files changed, 54 insertions, 35 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; diff --git a/tools/hpptest.py b/tools/hpptest.py index dbed143..5bb09bd 100755 --- a/tools/hpptest.py +++ b/tools/hpptest.py @@ -5,7 +5,7 @@ import sys, os if __name__ == '__main__': if len(sys.argv) == 3: - ret = os.system(f"clang++ -I./dev/ -I{sys.argv[2]} -std=c++20 -DOCL_HPPTEST '-DOCL_HPPTEST_ASSERT(x)=static_assert(x, #x)' {sys.argv[1]}") + ret = os.system(f"clang++ -I./dev/ -I{sys.argv[2]} -std=c++20 -DSCL_HPPTEST '-DSCL_HPPTEST_ASSERT(x)=static_assert(x, #x)' {sys.argv[1]}") if ret == 0: print("[TEST] HEADER COMPILATION PASSES") |
