From d5c7b583169b31d0059329d91f92a0d717404d73 Mon Sep 17 00:00:00 2001 From: M argoo <1683691371@qq.com> Date: Sat, 16 Sep 2023 09:57:57 +0800 Subject: [PATCH] :new: feat(DevelopingStatusUpdate) : Added developing status --- .gitmodules | 3 + README.md | 4 +- base-in-dev/vlib/CMakeLists.txt | 2 + .../vlib/inc/kernel/container/varray.h | 57 ++++++++++++++++-- .../vlib/inc/kernel/container/vdeque.h | 11 ++-- .../vlib/inc/kernel/container/viterator.h | 1 + .../vlib/inc/kernel/container/vqueue.h | 11 +++- .../vlib/inc/kernel/container/vstring.h | 36 +++++++++++ .../inc/kernel/container/vtypeextractor.h | 2 +- .../vlib/inc/kernel/thread/vthreadpool.h | 30 ++++++++- .../vlib/src/kernel/thread/vthreadpool.cpp | 33 +++++++++- base-in-dev/vlib/tester/mem/mem-test.cpp | 24 ++++++-- base-in-dev/vlib/tester/tester.cpp | 1 - new-gen-icon.svg | 34 +++++++++++ readme-resource/developing-image.png | Bin 0 -> 51012 bytes 15 files changed, 226 insertions(+), 23 deletions(-) create mode 100644 .gitmodules create mode 100644 base-in-dev/vlib/inc/kernel/container/vstring.h create mode 100644 new-gen-icon.svg create mode 100644 readme-resource/developing-image.png diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..a0ea2a4c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "base-in-dev/vlib/lib/iconv"] + path = base-in-dev/vlib/lib/iconv + url = https://github.com/vovythevov/libiconv-cmake.git diff --git a/README.md b/README.md index fe165edf..4e608312 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@
- +

VuiLib:一个开源,轻巧的 C++ 界面库

- +
## Installation - 安装 diff --git a/base-in-dev/vlib/CMakeLists.txt b/base-in-dev/vlib/CMakeLists.txt index 3c90a138..33943f7d 100644 --- a/base-in-dev/vlib/CMakeLists.txt +++ b/base-in-dev/vlib/CMakeLists.txt @@ -7,6 +7,7 @@ include_directories(inc) include_directories(inc/kernel) include_directories(inc/kernel/base) include_directories(inc/kernel/mem) +include_directories(lib) add_executable(vlib inc/kernel/base/vbase.h @@ -39,6 +40,7 @@ add_executable(vlib inc/kernel/thread/vthreadpool.h src/kernel/thread/vthreadpool.cpp inc/kernel/container/varray.h + inc/kernel/container/vstring.h ) target_include_directories(vlib PRIVATE inc) diff --git a/base-in-dev/vlib/inc/kernel/container/varray.h b/base-in-dev/vlib/inc/kernel/container/varray.h index 7bd05224..0897139f 100644 --- a/base-in-dev/vlib/inc/kernel/container/varray.h +++ b/base-in-dev/vlib/inc/kernel/container/varray.h @@ -135,7 +135,7 @@ class VArray { using ArrayType = VArray; using Pointer = TypeExtractor::Pointer; using ConstRefer = TypeExtractor::ConstRefer; - using CopyRefer = TypeExtractor::CopyRefer; + using MoveRefer = TypeExtractor::MoveRefer; using Iterator = VArrayIterator; public: @@ -168,6 +168,25 @@ class VArray { return *this; } + bool operator==(const ArrayType &Object) noexcept { + if (Object.GetSize() != GetSize()) { + return false; + } + size_t Count = 0; + bool Flag = true; + Object.Visit([this, &Count, &Flag](const Type &Value) { + if (Value != At(Count)) { + Flag = false; + } + + ++Count; + }); + + return Flag; + } + bool operator!=(const ArrayType &Object) noexcept { + return !operator==(Object); + } public: /** @@ -231,14 +250,14 @@ class VArray { * \brief Push value from back * \param Value The value that need to be pushed */ - void Push(const ConstRefer Value) { + void Push(ConstRefer Value) { _InsertFromBack(Value); } /** * \brief Push value from back * \param Value The value that need to be pushed */ - void Push(CopyRefer Value) { + void Push(MoveRefer Value) { _InsertFromBack(std::move(Value)); } /** @@ -249,6 +268,18 @@ class VArray { Push(Element); } } + /** + * \brief Push a element from constructor parameter + */ + template + void BuildPush(ArgType... Argument) { + if (_GetSize() >= Memory.Size) { + _ReallocateMemory(Memory.Size * 2); + } + Memory.Cursor = new (Memory.Cursor) Type(std::forward(Argument)...); + + ++Memory.Cursor; + } /** * \brief Insert an element at specified position */ @@ -258,7 +289,7 @@ class VArray { /** * \brief Insert an element at specified position */ - void Insert(CopyRefer Value, const size_t &Where) { + void Insert(MoveRefer Value, const size_t &Where) { _InsertByPosition(Value, Where); } /** @@ -281,6 +312,14 @@ class VArray { return std::initializer_list(Memory.Pointer, Memory.Cursor); } +public: + /** + * \brief Return whether the array is empty + */ + bool IsEmpty() { + return Memory.Pointer == Memory.Cursor; + } + public: /** * \brief Delete a element @@ -307,7 +346,15 @@ class VArray { /** * \brief Provide a function to do some operations of element (Do not operate the array object in the function) */ - void Range(const std::function &Function) { + void Range(const std::function &Function) { + for (size_t Count = 0; Count < _GetSize(); ++Count) { + Function(*(Memory.Pointer + Count)); + } + } + /** + * \brief Provide a visitor for array + */ + void Visit(const std::function &Function) const { for (size_t Count = 0; Count < _GetSize(); ++Count) { Function(*(Memory.Pointer + Count)); } diff --git a/base-in-dev/vlib/inc/kernel/container/vdeque.h b/base-in-dev/vlib/inc/kernel/container/vdeque.h index af84e6f7..2f818314 100644 --- a/base-in-dev/vlib/inc/kernel/container/vdeque.h +++ b/base-in-dev/vlib/inc/kernel/container/vdeque.h @@ -91,8 +91,9 @@ class VDequeArray { VDequeArray(const size_t &InitSize, AllocatorType &ArrayAllocator) noexcept : Allocator(ArrayAllocator), ExpandSize(InitSize) { Array = Allocator.template AllocateArray>(InitSize); - Head = Array + InitSize / 2; - Tail = Head; + + Head = Array + InitSize / 2; + Tail = Head; } /** @@ -121,7 +122,7 @@ class VDequeArray { void HeadInsert(NodeType &&Value) { _CheckFrontField(); - Head->Value = Value; + Head->Value = *(new (&(Head->Value)) NodeType(std::move(Value))); Head = Head - 1; } @@ -161,7 +162,7 @@ class VDequeArray { * \brief Delete the value at the tail of the array */ void TailDelete() { - if (Tail != Array + ExpandSize) { + if (Tail != Array + ExpandSize && Head != Tail) { Tail->Value.~NodeType(); Tail = Tail - 1; } @@ -212,7 +213,7 @@ class VDequeArray { DiffType PtrDiff = Tail - Head; DiffType HeadPosition = ExpandSize - (PtrDiff / 2); for (size_t Count = 0; Count < PtrDiff; ++Count) { - *(NewArea + Count + HeadPosition) = *(Head + Count); + *(NewArea + Count + HeadPosition) = std::move(*(Head + Count)); } Allocator.template DeleteArray>(Array, ExpandSize); diff --git a/base-in-dev/vlib/inc/kernel/container/viterator.h b/base-in-dev/vlib/inc/kernel/container/viterator.h index 4f9e7c4a..078e7e25 100644 --- a/base-in-dev/vlib/inc/kernel/container/viterator.h +++ b/base-in-dev/vlib/inc/kernel/container/viterator.h @@ -24,6 +24,7 @@ * \file viterator.h * \brief This file contains the definition of various iterator classes. */ +#pragma once #include diff --git a/base-in-dev/vlib/inc/kernel/container/vqueue.h b/base-in-dev/vlib/inc/kernel/container/vqueue.h index d39550c9..cf6efa2e 100644 --- a/base-in-dev/vlib/inc/kernel/container/vqueue.h +++ b/base-in-dev/vlib/inc/kernel/container/vqueue.h @@ -34,7 +34,7 @@ * \brief The VQueue class is a simple queue data structure. * It is implemented using the VDeque class. */ -template > +template > class VQueue { public: /** @@ -81,7 +81,7 @@ class VQueue { * Pops a value from the back of the queue. */ void Pop() { - NativeDeque.PopBack(); + NativeDeque.PopFront(); } /** @@ -111,6 +111,13 @@ class VQueue { return NativeDeque.GetSize(); } + /** + * \brief Check is whether the queue is empty + */ + [[nodiscard]] bool IsEmpty() { + return NativeDeque.IsEmpty(); + } + private: VDeque NativeDeque; ///< The underlying deque for the queue. }; \ No newline at end of file diff --git a/base-in-dev/vlib/inc/kernel/container/vstring.h b/base-in-dev/vlib/inc/kernel/container/vstring.h new file mode 100644 index 00000000..dd15d48c --- /dev/null +++ b/base-in-dev/vlib/inc/kernel/container/vstring.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2023~Now Margoo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/** + * \file vstring.h + * \brief Provide a string class for the vlib + */ + +#pragma once + +#include + +template +struct VStringPrivateData { + Type *Pointer; + size_t Length; +}; \ No newline at end of file diff --git a/base-in-dev/vlib/inc/kernel/container/vtypeextractor.h b/base-in-dev/vlib/inc/kernel/container/vtypeextractor.h index 1bb08f18..0cc091c6 100644 --- a/base-in-dev/vlib/inc/kernel/container/vtypeextractor.h +++ b/base-in-dev/vlib/inc/kernel/container/vtypeextractor.h @@ -38,7 +38,7 @@ template struct VTypeExtractor { using Pointer = typename Type *; ///< Pointer to Type using Refer = typename Type &; ///< Reference to Type - using CopyRefer = typename Type &&; ///< Copy reference (rvalue reference) to Type + using MoveRefer = typename Type &&; ///< Copy reference (rvalue reference) to Type using ConstType = const Type; ///< Const Type using ConstPointer = const Type *; ///< Pointer to const Type using ConstRefer = const Type &; ///< Reference to const Type diff --git a/base-in-dev/vlib/inc/kernel/thread/vthreadpool.h b/base-in-dev/vlib/inc/kernel/thread/vthreadpool.h index 7f03aa3f..022c0703 100644 --- a/base-in-dev/vlib/inc/kernel/thread/vthreadpool.h +++ b/base-in-dev/vlib/inc/kernel/thread/vthreadpool.h @@ -31,11 +31,39 @@ #include #include +#include #include +/** + * \brief VThread provide a thread pool which is used for VThread class + */ class VThreadPool { public: - explicit VThreadPool(const size_t &ThreadCount = std::thread::hardware_concurrency()); + explicit VThreadPool(VMemoryPool &Allocator, const size_t &ThreadCount = std::thread::hardware_concurrency()); + template + auto Summit(FunctionType &&Function, Args &&...Argument) { + using ReturnType = std::invoke_result_t; + std::shared_ptr> Task = std::make_shared>( + std::bind(std::forward(Function), std::forward(Argument)...)); + std::future Result = Task->get_future(); + { + std::unique_lock ThreadLock(QueueMutex); + if (StopFlag) { + _vdebug_handle().crash("Summit task on a stopped thread pool!"); + } + + Tasks.Push([Task = std::move(Task)]() { (*Task)(); }); + } + + Condition.notify_one(); + return Result; + } + ~VThreadPool(); private: + VArray Threads; + VQueue> Tasks; + std::mutex QueueMutex; + std::condition_variable Condition; + bool StopFlag; }; \ No newline at end of file diff --git a/base-in-dev/vlib/src/kernel/thread/vthreadpool.cpp b/base-in-dev/vlib/src/kernel/thread/vthreadpool.cpp index fff4aeff..91f97121 100644 --- a/base-in-dev/vlib/src/kernel/thread/vthreadpool.cpp +++ b/base-in-dev/vlib/src/kernel/thread/vthreadpool.cpp @@ -27,7 +27,38 @@ #include -VThreadPool::VThreadPool(const size_t &ThreadCount) { +VThreadPool::VThreadPool(VMemoryPool &Allocator, const size_t &ThreadCount) + : Tasks(Allocator), Threads(Allocator), StopFlag(false) { for (size_t Count = 0; Count < ThreadCount; ++Count) { + Threads.BuildPush([this]() { + while (true) { + std::function CurrentTask; + { + std::unique_lock ThreadLock(this->QueueMutex); + this->Condition.wait(ThreadLock, [this]() { return this->StopFlag || !this->Tasks.IsEmpty(); }); + + if (this->StopFlag && this->Tasks.IsEmpty()) { + return; + } + + CurrentTask = std::move(this->Tasks.GetFront()); + this->Tasks.Pop(); + } + + if (CurrentTask != nullptr) { + CurrentTask(); + } + } + }); + } +} +VThreadPool::~VThreadPool() { + { + std::unique_lock ThreadLock(QueueMutex); + StopFlag = true; + } + Condition.notify_all(); + for (auto &Thread : Threads) { + Thread.join(); } } \ No newline at end of file diff --git a/base-in-dev/vlib/tester/mem/mem-test.cpp b/base-in-dev/vlib/tester/mem/mem-test.cpp index d9fb301b..d32ef5ae 100644 --- a/base-in-dev/vlib/tester/mem/mem-test.cpp +++ b/base-in-dev/vlib/tester/mem/mem-test.cpp @@ -22,15 +22,29 @@ #pragma once +#include "../../lib/iconv/include/export.h" #include +#include int main() { VMemoryPool Pool; - VArray TestArray(Pool); - TestArray.Insert({1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0}, 0); - for (auto &Element : TestArray) { - printf("%d", Element); - } + VThreadPool ThreadPool(Pool); + ThreadPool.Summit([]() { + size_t Result = 1 + 1; + printf("%zu ", Result); + }); + ThreadPool.Summit([]() { + size_t Result = 2 + 2; + printf("%zu ", Result); + }); + ThreadPool.Summit([]() { + size_t Result = 3 + 3; + printf("%zu ", Result); + }); + ThreadPool.Summit([]() { + size_t Result = 4 + 4; + printf("%zu ", Result); + }); return 0; } \ No newline at end of file diff --git a/base-in-dev/vlib/tester/tester.cpp b/base-in-dev/vlib/tester/tester.cpp index 8b137891..e69de29b 100644 --- a/base-in-dev/vlib/tester/tester.cpp +++ b/base-in-dev/vlib/tester/tester.cpp @@ -1 +0,0 @@ - diff --git a/new-gen-icon.svg b/new-gen-icon.svg new file mode 100644 index 00000000..d175bdc8 --- /dev/null +++ b/new-gen-icon.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/readme-resource/developing-image.png b/readme-resource/developing-image.png new file mode 100644 index 0000000000000000000000000000000000000000..77b8f2d1197d008548310b9a331518e4780d7ee3 GIT binary patch literal 51012 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

Xh8lnUn1o^ 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 F{{gy0HIM)R literal 0 HcmV?d00001