diff --git a/README.md b/README.md index 3d8e0df..a311918 100755 --- a/README.md +++ b/README.md @@ -9,15 +9,15 @@ Что тут: + audio - набор методов по работе со звуком: воспроизведение, запись, работа с массивом звуков и т.п. + concepts - набор разнообразных реализаций концептов ++ math - разные математические функции ++ range - работа с последовательностями ++ patterns - набор различных паттернов проектирования ++ security - что-то типа защиты от чего-то ++ utils - вспомогательные решения для библиотеки - exception - универсальный класс обработки ошибок - iterators - набор разнообразных реализаций итераторов - logger - реализация логирования -- math - разные математические функции -- patterns - набор различных паттернов проектирования -- range - работа с последовательностями -- security - что-то типа защиты от чего-то -- utils - вспомогательные решения для библиотеки + - задукоментированно с коментариями и примерами - - доки в раборте, нужно делать и разбирать diff --git a/bin/examples/math/main.cpp b/bin/examples/math/main.cpp new file mode 100644 index 0000000..e505681 --- /dev/null +++ b/bin/examples/math/main.cpp @@ -0,0 +1,13 @@ +#include "hack/math/max.hpp" +#include "hack/logger/logger.hpp" + +auto main(int argc, char *argv[]) -> int +{ + int a = 4, b = 5; + int& c = a; + hack::log()(hack::math::max(4, 5)); + hack::log()(hack::math::max(c, b)); + + return 0; +} + diff --git a/bin/examples/patterns/main.cpp b/bin/examples/patterns/main.cpp new file mode 100644 index 0000000..270008a --- /dev/null +++ b/bin/examples/patterns/main.cpp @@ -0,0 +1,29 @@ +#include "hack/patterns/ring_buffer.hpp" +#include "hack/patterns/identificator.hpp" +#include "hack/logger/logger.hpp" + +auto main(int argc, char *argv[]) -> int +{ + // ring_buffer + hack::patterns::ring_buffer rb; + rb.create(10); + for (int i = 0; i < 10; ++i) rb.put(i); + hack::log()(rb); + hack::log()(rb.size()); + rb.skip(3); + hack::log()(rb.get().value()); + hack::log()(rb.size()); + std::vector v(3); + rb.get(v, 3); + hack::log()(v); + + // identificator + struct id_struct : public hack::patterns::identificator<> {} aa; + id_struct bb; + id_struct cc; + id_struct dd; + hack::log()(aa.m_id, bb.m_id, cc.m_id, dd.m_id); + + return 0; +} + diff --git a/bin/examples/range/main.cpp b/bin/examples/range/main.cpp new file mode 100644 index 0000000..ca39009 --- /dev/null +++ b/bin/examples/range/main.cpp @@ -0,0 +1,21 @@ +#include "hack/range/save_to_file.hpp" +#include "hack/range/sort.hpp" +#include "hack/logger/logger.hpp" + +auto main(int argc, char *argv[]) -> int +{ + std::vector v { 4, 4, 6, 1, 4, 3, 2 }; + std::forward_list l { 8, 7, 5, 9, 0, 1, 3, 2, 6, 4 }; + + hack::range::sort(v); + hack::range::sort(l); + + hack::log()(v); + hack::log()(l); + + hack::range::save_to_file("/mnt/raid/projects/hack/hack/bin/examples/range/range.txt", v); + hack::range::save_to_file("/mnt/raid/projects/hack/hack/bin/examples/range/range.delemiter.txt", v, ":"); + + return 0; +} + diff --git a/bin/examples/range/range.delemiter.txt b/bin/examples/range/range.delemiter.txt new file mode 100644 index 0000000..d0578d3 --- /dev/null +++ b/bin/examples/range/range.delemiter.txt @@ -0,0 +1 @@ +1:2:3:4:4:4:6 \ No newline at end of file diff --git a/bin/examples/range/range.txt b/bin/examples/range/range.txt new file mode 100644 index 0000000..f7fa9aa --- /dev/null +++ b/bin/examples/range/range.txt @@ -0,0 +1 @@ +1, 2, 3, 4, 4, 4, 6 \ No newline at end of file diff --git a/bin/main.cpp b/bin/main.cpp deleted file mode 100644 index bf9279c..0000000 --- a/bin/main.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include - -#include "hack/logger/logger.hpp" - -#include "hack/range/sort.hpp" -#include "hack/range/save_to_file.hpp" -#include "hack/math/max.hpp" - -#include "hack/patterns/ring_buffer.hpp" -#include "hack/patterns/identificator.hpp" - -// #include "hack/security/uuid.hpp" - -auto main(int argc, char *argv[]) -> int -{ - // HERE - // concepts - { - - } - - - - - - // patterns::ring_buffer - { - hack::patterns::ring_buffer rb; - rb.create(10); - for (int i = 0; i < 10; ++i) rb.put(i); - hack::log()(rb); - hack::log()(rb.size()); - rb.skip(3); - hack::log()(rb.get().value()); - hack::log()(rb.size()); - std::vector v(3); - rb.get(v, 3); - hack::log()(v); - } - - // security - { - // hack::log()(hack::security::generate_uuid()); - } - - // patterns::identificator - { - struct a : public hack::patterns::identificator<> - {} aa; - a bb; - a cc; - a dd; - hack::log()(aa.m_id, bb.m_id, cc.m_id, dd.m_id); - } - - // range::sort - { - std::vector v { 4, 4, 6, 1, 4, 3, 2 }; - std::forward_list l { 8, 7, 5, 9, 0, 1, 3, 2, 6, 4 }; - - hack::range::sort(v); - hack::range::sort(l); - - hack::log()(v); - hack::log()(l); - - hack::range::save_to_file("/mnt/raid/projects/hack/hack/bin/test/range.txt", v); - hack::range::save_to_file("/mnt/raid/projects/hack/hack/bin/test/range.delemiter.txt", v, ":"); - } - - // math::max - { - int a = 4, b = 5; - int& c = a; - hack::log()(hack::math::max(4, 5)); - hack::log()(hack::math::max(c, b)); - } -} diff --git a/bin/meson.build b/bin/meson.build index 3ea4194..83df1e9 100755 --- a/bin/meson.build +++ b/bin/meson.build @@ -1,7 +1,10 @@ executable( meson.project_name(), # 'examples/audio/main.cpp', - 'examples/concepts/main.cpp', + # 'examples/concepts/main.cpp', + # 'examples/math/main.cpp', + # 'examples/range/main.cpp', + 'examples/patterns/main.cpp', dependencies : deps, cpp_args: args, include_directories : inc diff --git a/src/hack/patterns/identificator.hpp b/src/hack/patterns/identificator.hpp index c8271dd..3a7bc0c 100644 --- a/src/hack/patterns/identificator.hpp +++ b/src/hack/patterns/identificator.hpp @@ -4,6 +4,9 @@ namespace hack::patterns { + // Иногда нужно, чтобы был id но в виде какого-то числа. + // Например при выводе графики в массиве, типа как в VueJS + // вот этьо класс и пытается этим заниматься. template class identificator { diff --git a/src/hack/patterns/ring_buffer.hpp b/src/hack/patterns/ring_buffer.hpp index b02d467..7e9a4b9 100644 --- a/src/hack/patterns/ring_buffer.hpp +++ b/src/hack/patterns/ring_buffer.hpp @@ -9,6 +9,9 @@ namespace hack::patterns { + // Колцевой буфер. + // HERE + // сделать опсание каждой функции template class ring_buffer { diff --git a/src/hack/patterns/singleton.hpp b/src/hack/patterns/singleton.hpp index b15c6ae..97d2326 100644 --- a/src/hack/patterns/singleton.hpp +++ b/src/hack/patterns/singleton.hpp @@ -2,6 +2,7 @@ namespace hack::patterns { + // Синглетон, говорит сам за себя... struct no_copy { no_copy() = default;