From 59b432abc7aba33110daab75daeee29bc38117f4 Mon Sep 17 00:00:00 2001 From: karl Date: Sat, 20 Mar 2021 14:51:45 +0100 Subject: [PATCH] Name to 'Gedeng', restructure + namespaces --- SConstruct | 7 +++--- cpp/Application.cpp | 11 +++++++++ cpp/Logger.cpp | 6 ++++- cpp/String.cpp | 8 ++++-- include/Gedeng.h | 6 +++++ include/Gedeng/Application.h | 14 +++++++++++ include/Gedeng/Core.h | 1 + include/Gedeng/Logger.h | 11 +++++++++ include/{ => Gedeng}/String.h | 8 +++++- include/{ => Gedeng}/Vector.h | 5 ++++ include/Logger.h | 5 ---- test/vector-test.cpp | 46 +++++++++++++++++------------------ 12 files changed, 92 insertions(+), 36 deletions(-) create mode 100644 cpp/Application.cpp create mode 100644 include/Gedeng.h create mode 100644 include/Gedeng/Application.h create mode 100644 include/Gedeng/Core.h create mode 100644 include/Gedeng/Logger.h rename include/{ => Gedeng}/String.h (95%) rename include/{ => Gedeng}/Vector.h (99%) delete mode 100644 include/Logger.h diff --git a/SConstruct b/SConstruct index 6c266c8..b64ad3d 100644 --- a/SConstruct +++ b/SConstruct @@ -1,17 +1,17 @@ #!python # Create the environment and create a Compilation Database for use in VSCodium -env = DefaultEnvironment(tools=['default', 'compilation_db']) +env = Environment(tools=['default', 'compilation_db']) env.CompilationDatabase() env.Append(CCFLAGS=["-Wall", "-Wextra", "-Werror", "-pedantic"]) -env.Append(CPPPATH=['.', 'include']) +env.Append(CPPPATH=['cpp/', 'include/']) # Build the library env.SharedLibrary('lib/ged', Glob('cpp/*.cpp')) # Build the test libraries -testEnv = DefaultEnvironment(tools=['default', 'compilation_db']) +testEnv = Environment(tools=['default', 'compilation_db']) testEnv.CompilationDatabase() testEnv.Append(CCFLAGS=["-Wall", "-Wextra", "-Werror", "-pedantic"]) @@ -20,7 +20,6 @@ testEnv.Append(LIBPATH=['lib/']) testEnv.Append(LIBS=['ged']) testEnv.Append(CCFLAGS=["-Wall", "-Wextra", "-Werror", "-pedantic"]) -testEnv.Append(CPPPATH=['.', 'include']) # Build the test programs catch_cpp = "test/catch_amalgamated.cpp" diff --git a/cpp/Application.cpp b/cpp/Application.cpp new file mode 100644 index 0000000..ff9287e --- /dev/null +++ b/cpp/Application.cpp @@ -0,0 +1,11 @@ +#include "Gedeng/Application.h" + +namespace Gedeng { + +void Application::run() { + while (true) { + // TODO: Implement + } +} + +} // namespace Gedeng \ No newline at end of file diff --git a/cpp/Logger.cpp b/cpp/Logger.cpp index 39a7a5a..6e71c79 100644 --- a/cpp/Logger.cpp +++ b/cpp/Logger.cpp @@ -1,6 +1,10 @@ -#include "Logger.h" +#include "Gedeng/Logger.h" #include +namespace Gedeng { + void Logger::debug(const String &text) { std::cout << "Debug: " << text << std::endl; } + +} // namespace Gedeng diff --git a/cpp/String.cpp b/cpp/String.cpp index cab4507..108b93a 100644 --- a/cpp/String.cpp +++ b/cpp/String.cpp @@ -1,4 +1,6 @@ -#include "String.h" +#include "Gedeng/String.h" + +namespace Gedeng { String::String() : String("") { } @@ -116,4 +118,6 @@ const char *String::c_str() const { size_t String::getLength() const { return length; -} \ No newline at end of file +} + +} // namespace Gedeng \ No newline at end of file diff --git a/include/Gedeng.h b/include/Gedeng.h new file mode 100644 index 0000000..d75aa1d --- /dev/null +++ b/include/Gedeng.h @@ -0,0 +1,6 @@ +#pragma once + +#include "Gedeng/Application.h" +#include "Gedeng/Logger.h" +#include "Gedeng/String.h" +#include "Gedeng/Vector.h" \ No newline at end of file diff --git a/include/Gedeng/Application.h b/include/Gedeng/Application.h new file mode 100644 index 0000000..e1d5d45 --- /dev/null +++ b/include/Gedeng/Application.h @@ -0,0 +1,14 @@ +#pragma once + +namespace Gedeng { + +class Application { + Application() = default; + + // Virtual since this class will be inherited by user-created applications + virtual ~Application() = default; + + void run(); +}; + +} // namespace Gedeng \ No newline at end of file diff --git a/include/Gedeng/Core.h b/include/Gedeng/Core.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/include/Gedeng/Core.h @@ -0,0 +1 @@ +#pragma once diff --git a/include/Gedeng/Logger.h b/include/Gedeng/Logger.h new file mode 100644 index 0000000..4b335a0 --- /dev/null +++ b/include/Gedeng/Logger.h @@ -0,0 +1,11 @@ +#pragma once + +#include "Gedeng/String.h" + +namespace Gedeng { + +class Logger { + static void debug(const String &text); +}; + +} // namespace Gedeng \ No newline at end of file diff --git a/include/String.h b/include/Gedeng/String.h similarity index 95% rename from include/String.h rename to include/Gedeng/String.h index ecee96e..8efc859 100644 --- a/include/String.h +++ b/include/Gedeng/String.h @@ -1,5 +1,9 @@ +#pragma once + #include +namespace Gedeng { + class String { public: /// Create a new empty String @@ -50,4 +54,6 @@ class String { size_t length; char *text; -}; \ No newline at end of file +}; + +} // namespace Gedeng diff --git a/include/Vector.h b/include/Gedeng/Vector.h similarity index 99% rename from include/Vector.h rename to include/Gedeng/Vector.h index 35bb3f9..1ed6a5c 100644 --- a/include/Vector.h +++ b/include/Gedeng/Vector.h @@ -1,8 +1,11 @@ #pragma once + #include #include #include +namespace Gedeng { + template class Vector { public: @@ -214,3 +217,5 @@ class Vector { data = new_data; } }; + +} // namespace Gedeng \ No newline at end of file diff --git a/include/Logger.h b/include/Logger.h deleted file mode 100644 index 4a1559a..0000000 --- a/include/Logger.h +++ /dev/null @@ -1,5 +0,0 @@ -#include "String.h" - -class Logger { - static void debug(const String &text); -}; diff --git a/test/vector-test.cpp b/test/vector-test.cpp index 340c568..8464f03 100644 --- a/test/vector-test.cpp +++ b/test/vector-test.cpp @@ -1,4 +1,4 @@ -#include +#include #include #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this @@ -6,7 +6,7 @@ #include "catch_amalgamated.hpp" SCENARIO("Vector size and length are correct", "[vector]") { - Vector v(20); + Gedeng::Vector v(20); v.push_back(1); REQUIRE(v.size() == 1); @@ -15,7 +15,7 @@ SCENARIO("Vector size and length are correct", "[vector]") { SCENARIO("The bracket operator returns the correct element", "[vector]") { GIVEN("A vector with some elements") { - Vector v(20); + Gedeng::Vector v(20); v.push_back(1); v.push_back(2); v.push_back(3); @@ -32,8 +32,8 @@ SCENARIO("The bracket operator returns the correct element", "[vector]") { SCENARIO("Equality is returned correctly", "[vector]") { GIVEN("Two vectors with the same items") { - Vector v1; - Vector v2; + Gedeng::Vector v1; + Gedeng::Vector v2; v1.push_back(1); v2.push_back(1); @@ -54,8 +54,8 @@ SCENARIO("Equality is returned correctly", "[vector]") { } GIVEN("Two vectors with different items") { - Vector v1; - Vector v2; + Gedeng::Vector v1; + Gedeng::Vector v2; v1.push_back(1); v2.push_back(2); @@ -79,8 +79,8 @@ SCENARIO("Equality is returned correctly", "[vector]") { SCENARIO("Erasing an item removes it and moves the following ones forward", "[vector]") { GIVEN("Two vectors with almost identical items") { - Vector v1; - Vector v2; + Gedeng::Vector v1; + Gedeng::Vector v2; v1.push_back(1); v2.push_back(1); @@ -117,8 +117,8 @@ SCENARIO("Erasing an item removes it and moves the following ones forward", SCENARIO("Copy Assignment", "[vector]") { GIVEN("Two vectors with identical items") { - Vector v1; - Vector v2; + Gedeng::Vector v1; + Gedeng::Vector v2; v1.push_back(1); v2.push_back(1); @@ -130,7 +130,7 @@ SCENARIO("Copy Assignment", "[vector]") { REQUIRE(v2.size() == 2); WHEN("Copy assigning the second vector to a third vector") { - Vector v3; + Gedeng::Vector v3; v3 = v2; THEN("All vectors should be identical") { @@ -143,8 +143,8 @@ SCENARIO("Copy Assignment", "[vector]") { SCENARIO("Move Assignment", "[vector]") { GIVEN("Two vectors with identical items") { - Vector v1; - Vector v2; + Gedeng::Vector v1; + Gedeng::Vector v2; v1.push_back(1); v2.push_back(1); @@ -156,7 +156,7 @@ SCENARIO("Move Assignment", "[vector]") { REQUIRE(v2.size() == 2); WHEN("Move assigning the second vector to a third vector") { - Vector v3; + Gedeng::Vector v3; v3 = std::move(v2); THEN("The first and third vector should be identical") { @@ -169,7 +169,7 @@ SCENARIO("Move Assignment", "[vector]") { SCENARIO("Reserve additional space", "[vector]") { GIVEN("A vector with a given length") { - Vector v(5); + Gedeng::Vector v(5); REQUIRE(v.length() == 5); @@ -185,13 +185,13 @@ SCENARIO("Reserve additional space", "[vector]") { SCENARIO("Resizing a vector", "[vector]") { GIVEN("A vector with 3 items") { - Vector v; + Gedeng::Vector v; v.push_back(1); v.push_back(2); v.push_back(3); - Vector target; + Gedeng::Vector target; target.push_back(1); target.push_back(2); @@ -256,7 +256,7 @@ SCENARIO("Non-default constructor", "[vector]") { }; WHEN("Creating a vector and adding an element") { - Vector non_default_vector; + Gedeng::Vector non_default_vector; non_default_vector.push_back(NonDefault(1)); @@ -266,7 +266,7 @@ SCENARIO("Non-default constructor", "[vector]") { } WHEN("Creating a vector and resizing it") { - Vector non_default_vector; + Gedeng::Vector non_default_vector; non_default_vector.resize(50, NonDefault(42)); @@ -279,7 +279,7 @@ SCENARIO("Non-default constructor", "[vector]") { SCENARIO("Erase by swap", "[vector]") { GIVEN("A vector with some elements") { - Vector v(3); + Gedeng::Vector v(3); v.push_back(1); v.push_back(2); v.push_back(3); @@ -330,7 +330,7 @@ class ReferenceCounter { SCENARIO("Constructors and Destructors are called as expected", "[vector]") { GIVEN("A vector with a custom reference-counting class") { - Vector v(3); + Gedeng::Vector v(3); v.push_back(ReferenceCounter()); v.push_back(ReferenceCounter()); v.push_back(ReferenceCounter()); @@ -370,7 +370,7 @@ SCENARIO("Constructors and Destructors are called as expected", "[vector]") { } WHEN("Move-constructing another vector") { - Vector v2 = std::move(v); + Gedeng::Vector v2 = std::move(v); THEN("The reference count should have remained the same") { REQUIRE(count == 3);