Browse Source

Merge branch 'memory-leak-fixes' of public/ls-standard-library into development

patrick-christopher.mattulat 2 years ago
parent
commit
e4033501f3
100 changed files with 795 additions and 418 deletions
  1. 70 0
      .clang-format
  2. 49 8
      CMakeLists.txt
  3. 2 1
      README.md
  4. 0 47
      config/lynar-studios-style.xml
  5. 2 2
      include/ls-std/boxing/Boolean.hpp
  6. 2 2
      include/ls-std/boxing/Double.hpp
  7. 2 2
      include/ls-std/boxing/Float.hpp
  8. 2 2
      include/ls-std/boxing/Integer.hpp
  9. 2 2
      include/ls-std/boxing/Long.hpp
  10. 3 3
      include/ls-std/boxing/String.hpp
  11. 2 2
      include/ls-std/core/Class.hpp
  12. 10 4
      include/ls-std/core/LibraryVersion.hpp
  13. 2 2
      include/ls-std/core/Version.hpp
  14. 6 7
      include/ls-std/core/exception/EventNotHandledException.hpp
  15. 6 7
      include/ls-std/core/exception/EventNotSubscribedException.hpp
  16. 6 7
      include/ls-std/core/exception/FileNotFoundException.hpp
  17. 6 7
      include/ls-std/core/exception/FileOperationException.hpp
  18. 6 7
      include/ls-std/core/exception/IllegalArgumentException.hpp
  19. 6 7
      include/ls-std/core/exception/IllegalArithmeticOperationException.hpp
  20. 6 7
      include/ls-std/core/exception/IncompleteJsonException.hpp
  21. 6 7
      include/ls-std/core/exception/NullPointerException.hpp
  22. 5 4
      include/ls-std/core/interface/IBoxing.hpp
  23. 6 2
      include/ls-std/core/interface/IEncoding.hpp
  24. 5 4
      include/ls-std/core/interface/IEventSubscriber.hpp
  25. 5 4
      include/ls-std/core/interface/IListener.hpp
  26. 5 4
      include/ls-std/core/interface/IReader.hpp
  27. 7 6
      include/ls-std/core/interface/ISerializable.hpp
  28. 5 4
      include/ls-std/core/interface/IStorable.hpp
  29. 5 4
      include/ls-std/core/interface/IWriter.hpp
  30. 6 10
      include/ls-std/core/utils/RegexUtils.hpp
  31. 2 2
      include/ls-std/core/utils/StlUtils.hpp
  32. 2 2
      include/ls-std/core/utils/WindowsUtils.hpp
  33. 3 3
      include/ls-std/encoding/Base64.hpp
  34. 2 2
      include/ls-std/event/Event.hpp
  35. 2 2
      include/ls-std/event/EventHandler.hpp
  36. 2 2
      include/ls-std/event/EventManager.hpp
  37. 2 2
      include/ls-std/event/Narrator.hpp
  38. 2 2
      include/ls-std/event/serialization/SerializableJsonEvent.hpp
  39. 26 32
      include/ls-std/io/File.hpp
  40. 6 26
      include/ls-std/io/FilePathSeparator.hpp
  41. 9 7
      include/ls-std/io/FilePathSeparatorMatch.hpp
  42. 2 2
      include/ls-std/io/FileReader.hpp
  43. 2 2
      include/ls-std/io/FileWriter.hpp
  44. 8 27
      include/ls-std/io/NewLine.hpp
  45. 3 3
      include/ls-std/io/StandardOutputWriter.hpp
  46. 2 2
      include/ls-std/io/StorableFile.hpp
  47. 2 2
      include/ls-std/io/kv/KvDocument.hpp
  48. 2 2
      include/ls-std/io/kv/KvFileReader.hpp
  49. 2 2
      include/ls-std/io/kv/KvPair.hpp
  50. 17 4
      include/ls-std/io/kv/KvParseParameter.hpp
  51. 4 4
      include/ls-std/io/kv/KvParser.hpp
  52. 4 4
      include/ls-std/io/logging/LogLevel.hpp
  53. 7 2
      include/ls-std/io/logging/LogLevelValue.hpp
  54. 4 4
      include/ls-std/io/logging/Logger.hpp
  55. 3 3
      include/ls-std/io/xml/XmlAttribute.hpp
  56. 3 3
      include/ls-std/io/xml/XmlDeclaration.hpp
  57. 5 5
      include/ls-std/io/xml/XmlDocument.hpp
  58. 4 4
      include/ls-std/io/xml/XmlNode.hpp
  59. 6 2
      include/ls-std/io/xml/XmlParseMode.hpp
  60. 20 5
      include/ls-std/io/xml/XmlParseParameter.hpp
  61. 4 4
      include/ls-std/io/xml/XmlParser.hpp
  62. 5 5
      include/ls-std/io/xml/XmlReader.hpp
  63. 2 2
      include/ls-std/ls-std-core.hpp
  64. 2 2
      include/ls-std/ls-std-io.hpp
  65. 3 3
      include/ls-std/os/dynamic-goal.hpp
  66. 4 4
      include/ls-std/os/windows/msvc-dll-definitions.hpp
  67. 2 2
      include/ls-std/time/Date.hpp
  68. 5 5
      source/ls-std/boxing/Boolean.cpp
  69. 4 4
      source/ls-std/boxing/Double.cpp
  70. 5 8
      source/ls-std/boxing/Float.cpp
  71. 4 4
      source/ls-std/boxing/Integer.cpp
  72. 4 4
      source/ls-std/boxing/Long.cpp
  73. 5 8
      source/ls-std/boxing/String.cpp
  74. 3 1
      source/ls-std/core/Class.cpp
  75. 19 0
      source/ls-std/core/LibraryVersion.cpp
  76. 4 5
      source/ls-std/core/Version.cpp
  77. 19 0
      source/ls-std/core/exception/EventNotHandledException.cpp
  78. 19 0
      source/ls-std/core/exception/EventNotSubscribedException.cpp
  79. 19 0
      source/ls-std/core/exception/FileNotFoundException.cpp
  80. 19 0
      source/ls-std/core/exception/FileOperationException.cpp
  81. 19 0
      source/ls-std/core/exception/IllegalArgumentException.cpp
  82. 19 0
      source/ls-std/core/exception/IllegalArithmeticOperationException.cpp
  83. 19 0
      source/ls-std/core/exception/IncompleteJsonException.cpp
  84. 19 0
      source/ls-std/core/exception/NullPointerException.cpp
  85. 14 0
      source/ls-std/core/interface/IBoxing.cpp
  86. 14 0
      source/ls-std/core/interface/IEncoding.cpp
  87. 14 0
      source/ls-std/core/interface/IEventSubscriber.cpp
  88. 14 0
      source/ls-std/core/interface/IListener.cpp
  89. 14 0
      source/ls-std/core/interface/IReader.cpp
  90. 14 0
      source/ls-std/core/interface/ISerializable.cpp
  91. 14 0
      source/ls-std/core/interface/IStorable.cpp
  92. 14 0
      source/ls-std/core/interface/IWriter.cpp
  93. 21 0
      source/ls-std/core/utils/RegexUtils.cpp
  94. 14 10
      source/ls-std/encoding/Base64.cpp
  95. 2 2
      source/ls-std/encoding/cli/cli-base64-main.cpp
  96. 3 1
      source/ls-std/event/Event.cpp
  97. 4 2
      source/ls-std/event/EventHandler.cpp
  98. 3 1
      source/ls-std/event/EventManager.cpp
  99. 3 1
      source/ls-std/event/Narrator.cpp
  100. 3 1
      source/ls-std/event/serialization/SerializableJsonEvent.cpp

+ 70 - 0
.clang-format

@@ -0,0 +1,70 @@
+# Generated from CLion C/C++ Code Style settings
+BasedOnStyle: LLVM
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: None
+AlignOperands: Align
+AllowAllArgumentsOnNextLine: false
+AllowAllConstructorInitializersOnNextLine: false
+AllowAllParametersOfDeclarationOnNextLine: false
+AllowShortBlocksOnASingleLine: Always
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: None
+AllowShortIfStatementsOnASingleLine: Never
+AllowShortLambdasOnASingleLine: All
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterReturnType: None
+AlwaysBreakTemplateDeclarations: Yes
+BreakBeforeBraces: Custom
+BraceWrapping:
+  AfterCaseLabel: true
+  AfterClass: true
+  AfterControlStatement: Always
+  AfterEnum: true
+  AfterFunction: true
+  AfterNamespace: true
+  AfterStruct: true
+  AfterUnion: true
+  BeforeCatch: true
+  BeforeElse: true
+  IndentBraces: false
+  SplitEmptyFunction: false
+  SplitEmptyRecord: true
+BreakBeforeBinaryOperators: None
+BreakBeforeTernaryOperators: true
+BreakConstructorInitializers: BeforeColon
+BreakInheritanceList: BeforeColon
+ColumnLimit: 700
+CompactNamespaces: false
+ContinuationIndentWidth: 4
+EmptyLineAfterAccessModifier: Always
+FixNamespaceComments: false
+IndentAccessModifiers: true
+IndentCaseLabels: true
+IndentPPDirectives: BeforeHash
+IndentWidth: 2
+KeepEmptyLinesAtTheStartOfBlocks: true
+MaxEmptyLinesToKeep: 2
+NamespaceIndentation: All
+ObjCSpaceAfterProperty: false
+ObjCSpaceBeforeProtocolList: true
+PointerAlignment: Right
+ReflowComments: false
+SortIncludes: CaseSensitive
+SpaceAfterCStyleCast: true
+SpaceAfterLogicalNot: false
+SpaceAfterTemplateKeyword: false
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
+SpaceBeforeParens: ControlStatements
+SpaceBeforeRangeBasedForLoopColon: true
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 1
+SpacesInAngles: false
+SpacesInCStyleCastParentheses: false
+SpacesInContainerLiterals: false
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+TabWidth: 2
+UseTab: Never

+ 49 - 8
CMakeLists.txt

@@ -22,6 +22,8 @@ set(MODULE_NAME_TIME ls-std-time)
 
 set(GOOGLE_TEST_MODULE googletest-1.11.0)
 
+set(CLI_NAME_BASE64 cli-base64)
+
 ##########################################################
 # Options
 ##########################################################
@@ -145,7 +147,25 @@ set(SOURCE_FILES_BOXING
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/boxing/String.cpp)
 
 set(SOURCE_FILES_CORE
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/exception/EventNotHandledException.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/exception/EventNotSubscribedException.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/exception/FileNotFoundException.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/exception/FileOperationException.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/exception/IllegalArgumentException.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/exception/IllegalArithmeticOperationException.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/exception/IncompleteJsonException.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/exception/NullPointerException.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/interface/IBoxing.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/interface/IEncoding.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/interface/IEventSubscriber.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/interface/IListener.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/interface/IReader.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/interface/ISerializable.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/interface/IStorable.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/interface/IWriter.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/utils/RegexUtils.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/Class.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/LibraryVersion.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/Version.cpp)
 
 set(SOURCE_FILES_ENCODING
@@ -162,6 +182,7 @@ set(SOURCE_FILES_IO
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/kv/KvDocument.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/kv/KvFileReader.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/kv/KvPair.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/kv/KvParseParameter.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/kv/KvParser.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/logging/Logger.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/logging/LogLevel.cpp
@@ -169,12 +190,16 @@ set(SOURCE_FILES_IO
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/xml/XmlDeclaration.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/xml/XmlDocument.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/xml/XmlNode.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/xml/XmlParseParameter.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/xml/XmlParser.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/xml/XmlReader.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/File.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/FileOutputStream.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/FilePathSeparator.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/FilePathSeparatorMatch.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/FileReader.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/FileWriter.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/NewLine.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/StandardOutputWriter.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/io/StorableFile.cpp)
 
@@ -211,7 +236,8 @@ if (${LS_STD_BUILD_WITH_TESTS})
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/utils/StlUtilsTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/ClassTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/LibraryVersionTest.cpp
-            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/VersionTest.cpp)
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/VersionTest.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/core/ClassWrapper.cpp)
 
     set(TEST_FILES_ENCODING
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/encoding/Base64Test.cpp)
@@ -235,6 +261,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KvDocumentTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KvFileReaderTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KvPairTest.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KvParseParameterTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KvParserTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/logging/LoggerTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/logging/LogLevelTest.cpp
@@ -242,6 +269,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/xml/XmlDeclarationTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/xml/XmlDocumentTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/xml/XmlNodeTest.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/xml/XmlParseParameterTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/xml/XmlParserTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/xml/XmlParserTestWrapperTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/xml/XmlReaderTest.cpp
@@ -311,7 +339,9 @@ endif ()
 
 if (${LS_STD_BUILD_WITH_TESTS})
     message("${MODULE_NAME_IO}: Building tests...")
-    add_executable(${MODULE_NAME_IO}-test ${TEST_FILES_IO})
+    add_executable(${MODULE_NAME_IO}-test
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
+            ${TEST_FILES_IO})
 endif ()
 
 ##########################################################
@@ -330,6 +360,7 @@ endif ()
 if (${LS_STD_BUILD_WITH_TESTS})
     message("${PROJECT_NAME}: Building tests...")
     add_executable(${PROJECT_NAME}-test
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
             ${TEST_FILES_BOXING}
             ${TEST_FILES_CORE}
             ${TEST_FILES_ENCODING}
@@ -413,10 +444,8 @@ endif ()
 
 # CLI base64
 
-add_executable(cli-base64
-        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/encoding/cli/cli-base64-main.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/encoding/Base64.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/core/Version.cpp)
+add_executable(${CLI_NAME_BASE64}
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/encoding/cli/cli-base64-main.cpp)
 
 ##########################################################
 # Build Library (event)
@@ -585,10 +614,22 @@ if (${LS_STD_BUILD_WITH_TESTS})
             gtest
             gmock
             gtest_main
-            "${MODULE_NAME_CORE}"
             "${MODULE_NAME_BOXING}"
             "${MODULE_NAME_ENCODING}"
             "${MODULE_NAME_EVENT}"
             "${MODULE_NAME_IO}"
-            "${MODULE_NAME_TIME}")
+            "${MODULE_NAME_TIME}"
+            "${MODULE_NAME_CORE}")
 endif ()
+
+####################################################################################################################
+####################################################################################################################
+####################################################################################################################
+# CLI - Base64: Linking
+####################################################################################################################
+####################################################################################################################
+####################################################################################################################
+
+target_link_libraries(${CLI_NAME_BASE64}
+        "${MODULE_NAME_ENCODING}"
+        "${MODULE_NAME_CORE}")

+ 2 - 1
README.md

@@ -41,10 +41,11 @@ A __Date__ class comes with this submodule, which you can use to represent a dat
 - __logic__ module has been removed from library and can now be found in __ls-game-tool-kit__ library
 - namespaces have been completely removed from module tests to improve readability
 - a new naming convention for files and directories has been introduced, where underscores were replaced by dashes entirely
+- fetching the library version can now be achieved by using a dedicated __LibraryVersion__ class - the usage of a static function for this purpose has been removed completely
 
 #### Fixes ####
 
-- none
+- potential memory leaks have been resolved by strictly splitting prototypes and implementation project-wide, which enabled the usage of virtual or overridden destructors
 
 ---
 ### Documentation ###

+ 0 - 47
config/lynar-studios-style.xml

@@ -1,47 +0,0 @@
-<code_scheme name="LynarStudiosStyle" version="173">
-  <HTMLCodeStyleSettings>
-    <option name="HTML_KEEP_LINE_BREAKS" value="false" />
-    <option name="HTML_KEEP_BLANK_LINES" value="4" />
-  </HTMLCodeStyleSettings>
-  <MarkdownNavigatorCodeStyleSettings>
-    <option name="RIGHT_MARGIN" value="72" />
-  </MarkdownNavigatorCodeStyleSettings>
-  <Objective-C>
-    <option name="INDENT_NAMESPACE_MEMBERS" value="2" />
-    <option name="INDENT_C_STRUCT_MEMBERS" value="2" />
-    <option name="INDENT_VISIBILITY_KEYWORDS" value="2" />
-    <option name="INDENT_INSIDE_CODE_BLOCK" value="2" />
-    <option name="INDENT_PREPROCESSOR_DIRECTIVE" value="2" />
-    <option name="INDENT_DIRECTIVE_AS_CODE" value="true" />
-    <option name="NAMESPACE_BRACE_PLACEMENT" value="2" />
-    <option name="FUNCTION_BRACE_PLACEMENT" value="2" />
-    <option name="BLOCK_BRACE_PLACEMENT" value="2" />
-    <option name="FUNCTION_CALL_ARGUMENTS_WRAP" value="0" />
-    <option name="CLASS_CONSTRUCTOR_INIT_LIST_WRAP" value="2" />
-  </Objective-C>
-  <Objective-C-extensions>
-    <extensions>
-      <pair source="cpp" header="hpp" fileNamingConvention="NONE" />
-      <pair source="c" header="h" fileNamingConvention="NONE" />
-    </extensions>
-  </Objective-C-extensions>
-  <codeStyleSettings language="HTML">
-    <indentOptions>
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="ObjectiveC">
-    <option name="RIGHT_MARGIN" value="700" />
-    <option name="KEEP_LINE_BREAKS" value="false" />
-    <option name="BLANK_LINES_AROUND_METHOD_IN_INTERFACE" value="0" />
-    <option name="BRACE_STYLE" value="2" />
-    <option name="CLASS_BRACE_STYLE" value="2" />
-    <option name="ELSE_ON_NEW_LINE" value="true" />
-    <option name="CATCH_ON_NEW_LINE" value="true" />
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-</code_scheme>

+ 2 - 2
include/ls-std/boxing/Boolean.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-09
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -24,7 +24,7 @@ namespace ls::std::boxing
 
       explicit Boolean(bool _value);
       Boolean();
-      ~Boolean() override = default;
+      ~Boolean() override;
 
       // conversion operator
 

+ 2 - 2
include/ls-std/boxing/Double.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -23,7 +23,7 @@ namespace ls::std::boxing
 
       Double();
       explicit Double(double _value);
-      ~Double() override = default;
+      ~Double() override;
 
       // conversion operator
 

+ 2 - 2
include/ls-std/boxing/Float.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -23,7 +23,7 @@ namespace ls::std::boxing
 
       Float();
       explicit Float(float _value);
-      ~Float() override = default;
+      ~Float() override;
 
       // conversion operator
 

+ 2 - 2
include/ls-std/boxing/Integer.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -23,7 +23,7 @@ namespace ls::std::boxing
 
       explicit Integer(int _value);
       Integer();
-      ~Integer() override = default;
+      ~Integer() override;
 
       // conversion operator
 

+ 2 - 2
include/ls-std/boxing/Long.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -24,7 +24,7 @@ namespace ls::std::boxing
 
       explicit Long(ls::std::core::type::long_type _value);
       Long();
-      ~Long() override = default;
+      ~Long() override;
 
       // conversion operator
 

+ 3 - 3
include/ls-std/boxing/String.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -26,11 +26,11 @@ namespace ls::std::boxing
 
       String();
       explicit String(::std::string _value);
-      ~String() override = default;
+      ~String() override;
 
       // conversion operator
 
-      operator const char *() const; // do not make explicit!
+      operator const char *() const;  // do not make explicit!
       operator ::std::string() const; // do not make explicit!
 
       // assignment operators

+ 2 - 2
include/ls-std/core/Class.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -20,7 +20,7 @@ namespace ls::std::core
     public:
 
       explicit Class(const ::std::string &_name);
-      virtual ~Class() = default;
+      virtual ~Class();
 
       ::std::string getClassName();
 

+ 10 - 4
include/ls-std/core/LibraryVersion.hpp

@@ -3,21 +3,27 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2021-05-02
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
 #ifndef LS_STD_LIBRARY_VERSION_HPP
 #define LS_STD_LIBRARY_VERSION_HPP
 
+#include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 
 namespace ls::std::core
 {
-  static ::std::string getVersion()
+  class LS_STD_DYNAMIC_GOAL LibraryVersion
   {
-    return "2023.1.0";
-  }
+    public:
+
+      LibraryVersion();
+      ~LibraryVersion();
+
+      static ::std::string getVersion();
+  };
 }
 
 #endif

+ 2 - 2
include/ls-std/core/Version.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -22,7 +22,7 @@ namespace ls::std::core
     public:
 
       explicit Version(ls::std::core::type::version_type _majorVersion, ls::std::core::type::version_type _minorVersion, ls::std::core::type::version_type _patchVersion);
-      ~Version() = default;
+      ~Version() override;
 
       // implementation
 

+ 6 - 7
include/ls-std/core/exception/EventNotHandledException.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2021-05-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,19 +11,18 @@
 #define LS_STD_EVENT_NOT_HANDLED_EXCEPTION_HPP
 
 #include <exception>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core
 {
-  class EventNotHandledException : public ::std::exception
+  class LS_STD_DYNAMIC_GOAL EventNotHandledException : public ::std::exception
   {
     public:
 
-      EventNotHandledException() = default;
+      EventNotHandledException();
+      ~EventNotHandledException() override;
 
-      [[nodiscard]] const char *what() const noexcept override
-      {
-        return "EventNotHandledException thrown - event was not handled - nothing happened!";
-      };
+      [[nodiscard]] const char *what() const noexcept override;
   };
 }
 

+ 6 - 7
include/ls-std/core/exception/EventNotSubscribedException.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2021-05-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,19 +11,18 @@
 #define LS_STD_EVENT_NOT_SUBSCRIBED_EXCEPTION_HPP
 
 #include <exception>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core
 {
-  class EventNotSubscribedException : public ::std::exception
+  class LS_STD_DYNAMIC_GOAL EventNotSubscribedException : public ::std::exception
   {
     public:
 
-      EventNotSubscribedException() = default;
+      EventNotSubscribedException();
+      ~EventNotSubscribedException() override;
 
-      [[nodiscard]] const char *what() const noexcept override
-      {
-        return "EventNotSubscribedException thrown - event was not subscribed!";
-      };
+      [[nodiscard]] const char *what() const noexcept override;
   };
 }
 

+ 6 - 7
include/ls-std/core/exception/FileNotFoundException.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -12,21 +12,20 @@
 
 #include <cstring>
 #include <exception>
+#include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 
 //TODO: pass parameters, use class, show class name
 namespace ls::std::core
 {
-  class FileNotFoundException : public ::std::exception
+  class LS_STD_DYNAMIC_GOAL FileNotFoundException : public ::std::exception
   {
     public:
 
-      FileNotFoundException() = default;
+      FileNotFoundException();
+      ~FileNotFoundException() override;
 
-      [[nodiscard]] const char *what() const noexcept override
-      {
-        return "FileNotFoundException thrown - file not found!";
-      };
+      [[nodiscard]] const char *what() const noexcept override;
   };
 }
 

+ 6 - 7
include/ls-std/core/exception/FileOperationException.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,20 +11,19 @@
 #define LS_STD_FILE_OPERATION_EXCEPTION_HPP
 
 #include <exception>
+#include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 
 namespace ls::std::core
 {
-  class FileOperationException : public ::std::exception
+  class LS_STD_DYNAMIC_GOAL FileOperationException : public ::std::exception
   {
     public:
 
-      explicit FileOperationException() = default;
+      FileOperationException();
+      ~FileOperationException() override;
 
-      [[nodiscard]] const char *what() const noexcept override
-      {
-        return "FileOperationException thrown - file operation failed!";
-      }
+      [[nodiscard]] const char *what() const noexcept override;
   };
 }
 

+ 6 - 7
include/ls-std/core/exception/IllegalArgumentException.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-09
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,19 +11,18 @@
 #define LS_STD_ILLEGAL_ARGUMENT_EXCEPTION_HPP
 
 #include <exception>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core
 {
-  class IllegalArgumentException : public ::std::exception
+  class LS_STD_DYNAMIC_GOAL IllegalArgumentException : public ::std::exception
   {
     public:
 
-      IllegalArgumentException() = default;
+      IllegalArgumentException();
+      ~IllegalArgumentException() override;
 
-      [[nodiscard]] const char *what() const noexcept override
-      {
-        return "IllegalArgumentException thrown - passed argument is not valid!";
-      }
+      [[nodiscard]] const char *what() const noexcept override;
   };
 }
 

+ 6 - 7
include/ls-std/core/exception/IllegalArithmeticOperationException.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,19 +11,18 @@
 #define LS_STD_ILLEGAL_OPERATION_EXCEPTION_HPP
 
 #include <exception>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core
 {
-  class IllegalArithmeticOperationException : public ::std::exception
+  class LS_STD_DYNAMIC_GOAL IllegalArithmeticOperationException : public ::std::exception
   {
     public:
 
-      IllegalArithmeticOperationException() = default;
+      IllegalArithmeticOperationException();
+      ~IllegalArithmeticOperationException() override;
 
-      [[nodiscard]] const char *what() const noexcept override
-      {
-        return "IllegalArithmeticOperationException thrown - arithmetic operation is not allowed!";
-      }
+      [[nodiscard]] const char *what() const noexcept override;
   };
 }
 

+ 6 - 7
include/ls-std/core/exception/IncompleteJsonException.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2021-04-30
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,19 +11,18 @@
 #define LS_STD_INCOMPLETE_JSON_EXCEPTION_HPP
 
 #include <exception>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core
 {
-  class IncompleteJsonException : public ::std::exception
+  class LS_STD_DYNAMIC_GOAL IncompleteJsonException : public ::std::exception
   {
     public:
 
-      explicit IncompleteJsonException() = default;
+      IncompleteJsonException();
+      ~IncompleteJsonException() override;
 
-      [[nodiscard]] const char *what() const noexcept override
-      {
-        return "IncompleteJsonException thrown - this JSON string is incomplete.";
-      }
+      [[nodiscard]] const char *what() const noexcept override;
   };
 }
 

+ 6 - 7
include/ls-std/core/exception/NullPointerException.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-06
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,19 +11,18 @@
 #define LS_STD_NULL_POINTER_EXCEPTION_HPP
 
 #include <exception>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core
 {
-  class NullPointerException : public ::std::exception
+  class LS_STD_DYNAMIC_GOAL NullPointerException : public ::std::exception
   {
     public:
 
-      explicit NullPointerException() = default;
+      NullPointerException();
+      ~NullPointerException() override;
 
-      [[nodiscard]] const char *what() const noexcept override
-      {
-        return "NullPointerException thrown - reference is null!";
-      }
+      [[nodiscard]] const char *what() const noexcept override;
   };
 }
 

+ 5 - 4
include/ls-std/core/interface/IBoxing.hpp

@@ -3,23 +3,24 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
 #ifndef LS_STD_I_BOXING_HPP
 #define LS_STD_I_BOXING_HPP
 
+#include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 
 namespace ls::std::core::interface_type
 {
-  class IBoxing
+  class LS_STD_DYNAMIC_GOAL IBoxing
   {
     public:
 
-      IBoxing() = default;
-      ~IBoxing() = default;
+      IBoxing();
+      virtual ~IBoxing();
 
       virtual void parse(::std::string _parseText) = 0;
       virtual ::std::string toString() = 0;

+ 6 - 2
include/ls-std/core/interface/IEncoding.hpp

@@ -3,21 +3,25 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-01-03
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
 #ifndef LS_STD_I_ENCODING_HPP
 #define LS_STD_I_ENCODING_HPP
 
+#include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 
 namespace ls::std::core::interface_type
 {
-  class IEncoding
+  class LS_STD_DYNAMIC_GOAL IEncoding
   {
     public:
 
+      IEncoding();
+      virtual ~IEncoding();
+
       virtual ::std::string encode(const ::std::string &_sequence) = 0;
       virtual ::std::string decode(const ::std::string &_sequence) = 0;
   };

+ 5 - 4
include/ls-std/core/interface/IEventSubscriber.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -12,16 +12,17 @@
 
 #include "IListener.hpp"
 #include <ls-std/core/types/EventTypes.hpp>
+#include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 
 namespace ls::std::core::interface_type
 {
-  class IEventSubscriber
+  class LS_STD_DYNAMIC_GOAL IEventSubscriber
   {
     public:
 
-      IEventSubscriber() = default;
-      ~IEventSubscriber() = default;
+      IEventSubscriber();
+      virtual ~IEventSubscriber();
 
       virtual void subscribe(const ls::std::core::type::event_id &_id, const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener) = 0;
       virtual void unsubscribe(const ls::std::core::type::event_id &_id, const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener) = 0;

+ 5 - 4
include/ls-std/core/interface/IListener.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,15 +11,16 @@
 #define LS_STD_I_LISTENER_HPP
 
 #include <ls-std/core/Class.hpp>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core::interface_type
 {
-  class IListener
+  class LS_STD_DYNAMIC_GOAL IListener
   {
     public:
 
-      IListener() = default;
-      ~IListener() = default;
+      IListener();
+      virtual ~IListener();
 
       virtual void listen(const ls::std::core::Class &_info) = 0;
   };

+ 5 - 4
include/ls-std/core/interface/IReader.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,15 +11,16 @@
 #define LS_STD_I_READER_HPP
 
 #include <ls-std/core/types/Types.hpp>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core::interface_type
 {
-  class IReader
+  class LS_STD_DYNAMIC_GOAL IReader
   {
     public:
 
-      IReader() = default;
-      ~IReader() = default;
+      IReader();
+      virtual ~IReader();
 
       virtual ls::std::core::type::byte_field read() = 0;
   };

+ 7 - 6
include/ls-std/core/interface/ISerializable.hpp

@@ -3,23 +3,24 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-21
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
-#ifndef LS_STD_SERIALIZABLE_HPP
-#define LS_STD_SERIALIZABLE_HPP
+#ifndef LS_STD_I_SERIALIZABLE_HPP
+#define LS_STD_I_SERIALIZABLE_HPP
 
 #include <ls-std/core/types/Types.hpp>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core::interface_type
 {
-  class ISerializable
+  class LS_STD_DYNAMIC_GOAL ISerializable
   {
     public:
 
-      ISerializable() = default;
-      ~ISerializable() = default;
+      ISerializable();
+      virtual ~ISerializable();
 
       virtual ls::std::core::type::byte_field marshal() = 0;
       virtual void unmarshal(const ls::std::core::type::byte_field &_data) = 0;

+ 5 - 4
include/ls-std/core/interface/IStorable.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-19
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,15 +11,16 @@
 #define LS_STD_I_STORABLE_HPP
 
 #include <ls-std/core/types/Types.hpp>
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::core::interface_type
 {
-  class IStorable
+  class LS_STD_DYNAMIC_GOAL IStorable
   {
     public:
 
-      IStorable() = default;
-      ~IStorable() = default;
+      IStorable();
+      virtual ~IStorable();
 
       virtual ls::std::core::type::byte_field load() = 0;
       virtual void save(const ls::std::core::type::byte_field &_data) = 0;

+ 5 - 4
include/ls-std/core/interface/IWriter.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -11,16 +11,17 @@
 #define LS_STD_I_WRITER_HPP
 
 #include <ls-std/core/types/Types.hpp>
+#include <ls-std/os/dynamic-goal.hpp>
 #include <vector>
 
 namespace ls::std::core::interface_type
 {
-  class IWriter
+  class LS_STD_DYNAMIC_GOAL IWriter
   {
     public:
 
-      IWriter() = default;
-      ~IWriter() = default;
+      IWriter();
+      virtual ~IWriter();
 
       virtual bool write(const ls::std::core::type::byte_field &_data) = 0;
   };

+ 6 - 10
include/ls-std/core/utils/RegexUtils.hpp

@@ -3,30 +3,26 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-18
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
 #ifndef LS_STD_REGEX_UTILS_HPP
 #define LS_STD_REGEX_UTILS_HPP
 
-#include <regex>
+#include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 
 namespace ls::std::core
 {
-  class RegexUtils
+  class LS_STD_DYNAMIC_GOAL RegexUtils
   {
     public:
 
-      RegexUtils() = default;
-      ~RegexUtils() = default;
+      RegexUtils();
+      ~RegexUtils();
 
-      static ::std::string escapeString(const ::std::string &_text)
-      {
-        static ::std::regex regexMetaEscape(R"(([\^\$\\\.\*\+\?\(\)\[\]\{\}\|]))");
-        return ::std::regex_replace(_text, regexMetaEscape, R"(\$1)");
-      }
+      static ::std::string escapeString(const ::std::string &_text);
   };
 }
 

+ 2 - 2
include/ls-std/core/utils/StlUtils.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -15,7 +15,7 @@
 
 namespace ls::std::core
 {
-  class StlUtils
+  class StlUtils // TODO: remove this class entirely
   {
     public:
 

+ 2 - 2
include/ls-std/core/utils/WindowsUtils.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-06
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -16,7 +16,7 @@
 
 namespace ls::std::core
 {
-  class WindowsUtils
+  class WindowsUtils // TODO: migrate to header / source split approach
   {
     public:
 

+ 3 - 3
include/ls-std/encoding/Base64.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-01-03
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -22,8 +22,8 @@ namespace ls::std::encoding
   {
     public:
 
-      Base64() = default;
-      ~Base64() = default;
+      Base64();
+      ~Base64() override;
 
       // implementation
 

+ 2 - 2
include/ls-std/event/Event.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-26
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -23,7 +23,7 @@ namespace ls::std::event
     public:
 
       explicit Event(const ls::std::core::type::event_id &_id);
-      ~Event() override = default;
+      ~Event() override;
 
       // additional functionality
 

+ 2 - 2
include/ls-std/event/EventHandler.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -25,7 +25,7 @@ namespace ls::std::event
     public:
 
       explicit EventHandler(const ls::std::core::type::event_id &_id);
-      ~EventHandler() override = default;
+      ~EventHandler() override;
 
       ls::std::core::type::event_id getId();
 

+ 2 - 2
include/ls-std/event/EventManager.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -25,7 +25,7 @@ namespace ls::std::event
     public:
 
       explicit EventManager();
-      ~EventManager() override = default;
+      ~EventManager() override;
 
       // implementation
 

+ 2 - 2
include/ls-std/event/Narrator.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -23,7 +23,7 @@ namespace ls::std::event
     public:
 
       Narrator();
-      ~Narrator() override = default;
+      ~Narrator() override;
 
       bool addListener(const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener);
       void clear();

+ 2 - 2
include/ls-std/event/serialization/SerializableJsonEvent.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-07
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -24,7 +24,7 @@ namespace ls::std::event
     public:
 
       explicit SerializableJsonEvent(const ::std::shared_ptr<ls::std::event::Event> &_value);
-      ~SerializableJsonEvent() override = default;
+      ~SerializableJsonEvent() override;
 
       // implementation
 

+ 26 - 32
include/ls-std/io/File.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -11,23 +11,17 @@
 #define LS_STD_FILE_HPP
 
 #include <ctime>
+#if defined(unix) || defined(__APPLE__)
+  #include <dirent.h>
+#endif
 #include <list>
 #include <ls-std/core/Class.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <regex>
 #include <string>
 #include <vector>
-
-#if defined(unix) || defined(__APPLE__)
-
-#include <dirent.h>
-
-#endif
-
 #ifdef _WIN32
-
-#include <windows.h>
-
+  #include <windows.h>
 #endif
 
 namespace ls::std::io
@@ -37,7 +31,7 @@ namespace ls::std::io
     public:
 
       explicit File(::std::string _absoluteFilePath);
-      ~File() override = default;
+      ~File() override;
 
       // comparison operators
 
@@ -71,50 +65,50 @@ namespace ls::std::io
 
       ::std::string absoluteFilePath{};
 
-      #if defined(unix) || defined(__APPLE__)
+#if defined(unix) || defined(__APPLE__)
       static void _addToFileListUnix(const ::std::string &_path, bool _withDirectories, dirent *directoryEntity, ::std::list<::std::string> &_list);
-      #endif
-      #ifdef _WIN32
+#endif
+#ifdef _WIN32
       static void _addToFileListWindows(const ::std::string &_path, bool _withDirectories, WIN32_FIND_DATA _data, ::std::list<::std::string> &_list);
-      #endif
+#endif
       static bool _equals(ls::std::io::File &_file, ls::std::io::File &_foreignFile);
       static bool _exists(const ::std::string &_path);
       static ::std::string _getParent(const ::std::string &_path);
-      #if defined(unix) || defined(__APPLE__)
+#if defined(unix) || defined(__APPLE__)
       static ::std::string _getWorkingDirectoryUnix();
-      #endif
-      #ifdef _WIN32
+#endif
+#ifdef _WIN32
       static ::std::string _getWorkingDirectoryWindows();
-      #endif
+#endif
       static bool _isDirectory(const ::std::string &_path);
       static bool _isExecutable(const ::std::string &_path);
       static bool _isFile(const ::std::string &_path);
-      #if defined(unix) || defined(__APPLE__)
+#if defined(unix) || defined(__APPLE__)
       static bool _isReadableUnix(const ::std::string &_path);
-      #endif
-      #ifdef _WIN32
+#endif
+#ifdef _WIN32
       static bool _isReadableWindows(const ::std::string &_path);
-      #endif
+#endif
       static bool _isWritable(const ::std::string &_path);
       static time_t _lastModified(const ::std::string &_path);
       static ::std::list<::std::string> _list(const ::std::string &_path);
       static ::std::list<::std::string> _listFiles(const ::std::string &_path);
-      #if defined(unix) || defined(__APPLE__)
+#if defined(unix) || defined(__APPLE__)
       static ::std::list<::std::string> _listUnix(const ::std::string &_path, bool withDirectories);
-      #endif
-      #ifdef _WIN32
+#endif
+#ifdef _WIN32
       static ::std::list<::std::string> _listWindows(const ::std::string &_path, bool withDirectories);
-      #endif
+#endif
       static int _mkdir(const ::std::string &_path);
       static ::std::string _normalizePath(::std::string _path);
       static ::std::string _reduceSeparators(const ::std::string &_path);
       static void _remove(const ::std::string &_path);
-      #if defined(unix) || defined(__APPLE__)
+#if defined(unix) || defined(__APPLE__)
       static void _removeUnix(const ::std::string &_path);
-      #endif
-      #ifdef _WIN32
+#endif
+#ifdef _WIN32
       static void _removeWindows(const ::std::string &_path);
-      #endif
+#endif
       static bool _renameTo(const ::std::string &_oldName, const ::std::string &_newName);
       static ::std::string _replaceWrongSeparator(::std::string _path);
       static ::std::vector<::std::string> _splitIntoSubDirectoryNames(const ::std::string &_path);

+ 6 - 26
include/ls-std/io/FilePathSeparator.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -19,32 +19,12 @@ namespace ls::std::io
   {
     public:
 
-      FilePathSeparator() = default;
-      ~FilePathSeparator() = default;
+      FilePathSeparator();
+      ~FilePathSeparator();
 
-      static char get()
-      {
-        char separator;
-
-        #ifdef _WIN32
-        separator = ls::std::io::FilePathSeparator::getWindowsFilePathSeparator();
-        #endif
-        #if defined(unix) || defined(__APPLE__)
-        separator = ls::std::io::FilePathSeparator::getUnixFilePathSeparator();
-        #endif
-
-        return separator;
-      }
-
-      static char getUnixFilePathSeparator()
-      {
-        return '/';
-      }
-
-      static char getWindowsFilePathSeparator()
-      {
-        return '\\';
-      }
+      static char get();
+      static char getUnixFilePathSeparator();
+      static char getWindowsFilePathSeparator();
   };
 }
 

+ 9 - 7
include/ls-std/io/FilePathSeparatorMatch.hpp

@@ -3,23 +3,25 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
 #ifndef LS_STD_FILE_PATH_MATCH_HPP
 #define LS_STD_FILE_PATH_MATCH_HPP
 
-#include "FilePathSeparator.hpp"
+#include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::io
 {
-  struct FilePathSeparatorMatch
+  class LS_STD_DYNAMIC_GOAL FilePathSeparatorMatch
   {
-    bool operator()(char _char) const
-    {
-      return _char == ls::std::io::FilePathSeparator::getWindowsFilePathSeparator() || _char == ls::std::io::FilePathSeparator::getUnixFilePathSeparator();
-    }
+    public:
+
+      FilePathSeparatorMatch();
+      ~FilePathSeparatorMatch();
+
+      bool operator()(char _char) const;
   };
 }
 

+ 2 - 2
include/ls-std/io/FileReader.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -22,7 +22,7 @@ namespace ls::std::io
     public:
 
       explicit FileReader(ls::std::io::File &_file);
-      ~FileReader() override = default;
+      ~FileReader() override;
 
       ls::std::core::type::byte_field read() override;
       void reset(ls::std::io::File &_file);

+ 2 - 2
include/ls-std/io/FileWriter.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -22,7 +22,7 @@ namespace ls::std::io
     public:
 
       explicit FileWriter(ls::std::io::File &_file);
-      ~FileWriter() override = default;
+      ~FileWriter() override;
 
       void reset(ls::std::io::File &_file);
       bool write(const ls::std::core::type::byte_field &_data) override;

+ 8 - 27
include/ls-std/io/NewLine.hpp

@@ -3,47 +3,28 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-18
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
 #ifndef LS_STD_NEW_LINE_HPP
 #define LS_STD_NEW_LINE_HPP
 
+#include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 
 namespace ls::std::io
 {
-  class NewLine
+  class LS_STD_DYNAMIC_GOAL NewLine
   {
     public:
 
-      NewLine() = default;
-      ~NewLine() = default;
+      NewLine();
+      ~NewLine();
 
-      static ::std::string get()
-      {
-        ::std::string newLine{};
-
-        #if defined(unix) || defined(__APPLE__)
-        newLine = ls::std::io::NewLine::getUnixNewLine();
-        #endif
-        #ifdef _WIN32
-        newLine = ls::std::io::NewLine::getWindowsNewLine();
-        #endif
-
-        return newLine;
-      }
-
-      static ::std::string getUnixNewLine()
-      {
-        return "\n";
-      }
-
-      static ::std::string getWindowsNewLine()
-      {
-        return "\r\n";
-      }
+      static ::std::string get();
+      static ::std::string getUnixNewLine();
+      static ::std::string getWindowsNewLine();
   };
 }
 

+ 3 - 3
include/ls-std/io/StandardOutputWriter.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-06
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -19,8 +19,8 @@ namespace ls::std::io
   {
     public:
 
-      StandardOutputWriter() = default;
-      ~StandardOutputWriter() = default;
+      StandardOutputWriter();
+      ~StandardOutputWriter() override;
 
       bool write(const ls::std::core::type::byte_field &_data) override;
   };

+ 2 - 2
include/ls-std/io/StorableFile.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-19
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -23,7 +23,7 @@ namespace ls::std::io
     public:
 
       explicit StorableFile(const ::std::string &_path);
-      ~StorableFile() = default;
+      ~StorableFile() override;
 
       ::std::shared_ptr<ls::std::io::File> getFile();
       ls::std::core::type::byte_field load() override;

+ 2 - 2
include/ls-std/io/kv/KvDocument.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -23,7 +23,7 @@ namespace ls::std::io
     public:
 
       KvDocument();
-      ~KvDocument() override = default;
+      ~KvDocument() override;
 
       bool addPair(ls::std::io::KvPair _pair);
       void clear();

+ 2 - 2
include/ls-std/io/kv/KvFileReader.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -24,7 +24,7 @@ namespace ls::std::io
     public:
 
       explicit KvFileReader(const ::std::shared_ptr<ls::std::io::KvDocument> &_document, const ::std::string &_absolutePath);
-      ~KvFileReader() override = default;
+      ~KvFileReader() override;
 
       // implementation
 

+ 2 - 2
include/ls-std/io/kv/KvPair.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -21,7 +21,7 @@ namespace ls::std::io
     public:
 
       explicit KvPair(const ls::std::core::type::kv_key &_key, ls::std::core::type::kv_value _value);
-      ~KvPair() override = default;
+      ~KvPair() override;
 
       ls::std::core::type::kv_key getKey();
       ls::std::core::type::kv_value getValue();

+ 17 - 4
include/ls-std/io/kv/KvParseParameter.hpp

@@ -3,21 +3,34 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
 #ifndef LS_STD_KV_PARSE_DATA_HPP
 #define LS_STD_KV_PARSE_DATA_HPP
 
+#include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 
 namespace ls::std::io
 {
-  struct KvParseParameter
+  class LS_STD_DYNAMIC_GOAL KvParseParameter
   {
-    ::std::string::size_type index{};
-    ::std::string line{};
+    public:
+
+      KvParseParameter();
+      ~KvParseParameter();
+
+      [[nodiscard]] ::std::string::size_type getIndex() const;
+      [[nodiscard]] ::std::string getLine();
+      void setIndex(const ::std::string::size_type &_index);
+      void setLine(const ::std::string &_line);
+
+    private:
+
+      ::std::string::size_type index{};
+      ::std::string line{};
   };
 }
 

+ 4 - 4
include/ls-std/io/kv/KvParser.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -24,7 +24,7 @@ namespace ls::std::io
     public:
 
       explicit KvParser(const ::std::shared_ptr<ls::std::io::KvDocument> &_document);
-      ~KvParser() override = default;
+      ~KvParser() override;
 
       ::std::shared_ptr<ls::std::io::KvDocument> getDocument();
       void parse(const ls::std::core::type::byte_field &_data);
@@ -36,9 +36,9 @@ namespace ls::std::io
 
       void _assignDocument(const ::std::shared_ptr<ls::std::io::KvDocument> &_document);
       static bool _contains(const ::std::string &_text, const ::std::string &_searchText);
-      static bool _lineHasPair(const ls::std::io::KvParseParameter &_parseParameter);
+      static bool _lineHasPair(ls::std::io::KvParseParameter &_parseParameter);
       void _parse(const ls::std::core::type::byte_field &_data);
-      void _parsePair(const ls::std::io::KvParseParameter &_parseParameter);
+      void _parsePair(ls::std::io::KvParseParameter &_parseParameter);
       static ls::std::io::KvParseParameter _readLine(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
       static void _readLineWithUnixLineBreak(ls::std::io::KvParseParameter &_parseParameter);
       static void _readLineWithWindowsLineBreak(ls::std::io::KvParseParameter &_parseParameter);

+ 4 - 4
include/ls-std/io/logging/LogLevel.hpp

@@ -3,17 +3,17 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #ifndef LS_STD_LOG_LEVEL_HPP
 #define LS_STD_LOG_LEVEL_HPP
 
-#include <unordered_map>
-#include <ls-std/core/Class.hpp>
 #include "LogLevelValue.hpp"
+#include <ls-std/core/Class.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <unordered_map>
 
 namespace ls::std::io
 {
@@ -23,7 +23,7 @@ namespace ls::std::io
 
       explicit LogLevel(const ls::std::io::LogLevelValue &_value);
       LogLevel();
-      ~LogLevel() override = default;
+      ~LogLevel() override;
 
       operator unsigned char() const;
       ls::std::io::LogLevel &operator=(const ls::std::io::LogLevelValue &_value);

+ 7 - 2
include/ls-std/io/logging/LogLevelValue.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -14,7 +14,12 @@ namespace ls::std::io
 {
   enum LogLevelValue
   {
-    FATAL = 0, ERR, WARN, INFO, DEBUG, TRACE
+    FATAL = 0,
+    ERR,
+    WARN,
+    INFO,
+    DEBUG,
+    TRACE
   };
 }
 

+ 4 - 4
include/ls-std/io/logging/Logger.hpp

@@ -3,20 +3,20 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #ifndef LS_STD_LOGGER_HPP
 #define LS_STD_LOGGER_HPP
 
-#include <ls-std/core/Class.hpp>
 #include "LogLevel.hpp"
+#include <ls-std/core/Class.hpp>
 #include <ls-std/core/interface/IWriter.hpp>
 #include <ls-std/io/File.hpp>
 #include <ls-std/io/FileOutputStream.hpp>
-#include <string>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <string>
 
 namespace ls::std::io
 {
@@ -25,7 +25,7 @@ namespace ls::std::io
     public:
 
       explicit Logger(const ::std::shared_ptr<ls::std::core::interface_type::IWriter> &_writer);
-      ~Logger() override = default;
+      ~Logger() override;
 
       void debug(const ls::std::core::type::byte *_data);
       void error(const ls::std::core::type::byte *_data);

+ 3 - 3
include/ls-std/io/xml/XmlAttribute.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-23
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -11,8 +11,8 @@
 #define LS_STD_XML_ATTRIBUTE_HPP
 
 #include <ls-std/core/Class.hpp>
-#include <string>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <string>
 
 namespace ls::std::io
 {
@@ -21,7 +21,7 @@ namespace ls::std::io
     public:
 
       explicit XmlAttribute(const ::std::string &_name);
-      ~XmlAttribute() override = default;
+      ~XmlAttribute() override;
 
       ::std::string getName();
       ::std::string getValue();

+ 3 - 3
include/ls-std/io/xml/XmlDeclaration.hpp

@@ -3,15 +3,15 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #ifndef LS_STD_XML_DECLARATION_HPP
 #define LS_STD_XML_DECLARATION_HPP
 
-#include <ls-std/core/Class.hpp>
 #include "XmlAttribute.hpp"
+#include <ls-std/core/Class.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::io
@@ -21,7 +21,7 @@ namespace ls::std::io
     public:
 
       explicit XmlDeclaration(const ::std::string &_version);
-      ~XmlDeclaration() override = default;
+      ~XmlDeclaration() override;
 
       ::std::string getEncoding();
       ::std::string getStandalone();

+ 5 - 5
include/ls-std/io/xml/XmlDocument.hpp

@@ -3,18 +3,18 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #ifndef LS_STD_XML_DOCUMENT_HPP
 #define LS_STD_XML_DOCUMENT_HPP
 
-#include <memory>
-#include <ls-std/core/Class.hpp>
-#include "XmlNode.hpp"
 #include "XmlDeclaration.hpp"
+#include "XmlNode.hpp"
+#include <ls-std/core/Class.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <memory>
 
 namespace ls::std::io
 {
@@ -23,7 +23,7 @@ namespace ls::std::io
     public:
 
       XmlDocument();
-      ~XmlDocument() override = default;
+      ~XmlDocument() override;
 
       ::std::shared_ptr<ls::std::io::XmlDeclaration> getDeclaration();
       ::std::shared_ptr<ls::std::io::XmlNode> getRootElement();

+ 4 - 4
include/ls-std/io/xml/XmlNode.hpp

@@ -3,18 +3,18 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-24
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #ifndef LS_STD_XML_NODE_HPP
 #define LS_STD_XML_NODE_HPP
 
+#include "XmlAttribute.hpp"
 #include <list>
-#include <memory>
 #include <ls-std/core/Class.hpp>
-#include "XmlAttribute.hpp"
 #include <ls-std/os/dynamic-goal.hpp>
+#include <memory>
 
 namespace ls::std::io
 {
@@ -23,7 +23,7 @@ namespace ls::std::io
     public:
 
       explicit XmlNode(::std::string _name);
-      ~XmlNode() override = default;
+      ~XmlNode() override;
 
       bool addAttributeAfter(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute, const ::std::string &_name);
       bool addAttributeBefore(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute, const ::std::string &_name);

+ 6 - 2
include/ls-std/io/xml/XmlParseMode.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-10-13
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -14,7 +14,11 @@ namespace ls::std::io
 {
   enum XmlParseMode
   {
-    XML_PARSE_MODE_ANALYZE = 0, XML_PARSE_MODE_DECLARATION, XML_PARSE_MODE_OPENING_TAG, XML_PARSE_MODE_VALUE, XML_PARSE_MODE_CLOSING_TAG
+    XML_PARSE_MODE_ANALYZE = 0,
+    XML_PARSE_MODE_DECLARATION,
+    XML_PARSE_MODE_OPENING_TAG,
+    XML_PARSE_MODE_VALUE,
+    XML_PARSE_MODE_CLOSING_TAG
   };
 }
 

+ 20 - 5
include/ls-std/io/xml/XmlParseParameter.hpp

@@ -3,23 +3,38 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-10-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
 #ifndef LS_STD_XML_PARSE_DATA_HPP
 #define LS_STD_XML_PARSE_DATA_HPP
 
+#include "XmlNode.hpp"
 #include <cstdint>
+#include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
-#include "XmlNode.hpp"
 
 namespace ls::std::io
 {
-  struct XmlParseParameter
+  class LS_STD_DYNAMIC_GOAL XmlParseParameter
   {
-    uint8_t level{};
-    ::std::shared_ptr<ls::std::io::XmlNode> node{};
+    public:
+
+      XmlParseParameter();
+      ~XmlParseParameter();
+
+      [[nodiscard]] uint8_t getLevel() const;
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlNode> getNode();
+      void setLevel(const uint8_t &_level);
+      void setNode(const ::std::shared_ptr<ls::std::io::XmlNode> &_node);
+
+    private:
+
+      uint8_t level{};
+      ::std::shared_ptr<ls::std::io::XmlNode> node{};
+
+      void _setNode(const ::std::shared_ptr<ls::std::io::XmlNode> &_node);
   };
 }
 

+ 4 - 4
include/ls-std/io/xml/XmlParser.hpp

@@ -3,19 +3,19 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-25
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #ifndef LS_STD_XML_PARSER_HPP
 #define LS_STD_XML_PARSER_HPP
 
-#include <ls-std/core/Class.hpp>
-#include <ls-std/core/types/Types.hpp>
 #include "XmlDocument.hpp"
 #include "XmlParseMode.hpp"
 #include "XmlParseParameter.hpp"
 #include <list>
+#include <ls-std/core/Class.hpp>
+#include <ls-std/core/types/Types.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::io
@@ -25,7 +25,7 @@ namespace ls::std::io
     public:
 
       explicit XmlParser(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
-      ~XmlParser() override = default;
+      ~XmlParser() override;
 
       ::std::shared_ptr<ls::std::io::XmlDocument> getDocument();
       void parse(const ls::std::core::type::byte_field &_data);

+ 5 - 5
include/ls-std/io/xml/XmlReader.hpp

@@ -3,20 +3,20 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-10-08
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #ifndef LS_STD_XML_READER_HPP
 #define LS_STD_XML_READER_HPP
 
-#include <ls-std/core/Class.hpp>
 #include "XmlDocument.hpp"
-#include <ls-std/core/interface/IReader.hpp>
-#include <ls-std/io/File.hpp>
 #include "XmlParseMode.hpp"
 #include "XmlParseParameter.hpp"
 #include <list>
+#include <ls-std/core/Class.hpp>
+#include <ls-std/core/interface/IReader.hpp>
+#include <ls-std/io/File.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 
 namespace ls::std::io
@@ -26,7 +26,7 @@ namespace ls::std::io
     public:
 
       explicit XmlReader(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document, const ::std::string &_absolutePath);
-      ~XmlReader() override = default;
+      ~XmlReader() override;
 
       // implementation
 

+ 2 - 2
include/ls-std/ls-std-core.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-05-13
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -35,7 +35,7 @@
 #include <ls-std/core/utils/RegexUtils.hpp>
 #include <ls-std/core/utils/StlUtils.hpp>
 #if _WIN32
-#include <ls-std/core/utils/WindowsUtils.hpp>
+  #include <ls-std/core/utils/WindowsUtils.hpp>
 #endif
 
 #include <ls-std/core/Class.hpp>

+ 2 - 2
include/ls-std/ls-std-io.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-05-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -16,9 +16,9 @@
 #include <ls-std/io/kv/KvParseParameter.hpp>
 #include <ls-std/io/kv/KvParser.hpp>
 
-#include <ls-std/io/logging/Logger.hpp>
 #include <ls-std/io/logging/LogLevel.hpp>
 #include <ls-std/io/logging/LogLevelValue.hpp>
+#include <ls-std/io/logging/Logger.hpp>
 
 #include <ls-std/io/xml/XmlAttribute.hpp>
 #include <ls-std/io/xml/XmlDeclaration.hpp>

+ 3 - 3
include/ls-std/os/dynamic-goal.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-06-29
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -11,10 +11,10 @@
 #define LS_STD_DYNAMIC_GOAL_HPP
 
 #if defined(_WIN32) && defined(_MSC_VER)
-#include <ls-std/os/windows/msvc-dll-definitions.hpp>
+  #include <ls-std/os/windows/msvc-dll-definitions.hpp>
 #endif
 #if defined(unix) || defined(__APPLE__) || defined(_WIN32) && defined(__GNUC__)
-#include <ls-std/os/unix/unix-shared-object-definitions.hpp>
+  #include <ls-std/os/unix/unix-shared-object-definitions.hpp>
 #endif
 
 #endif

+ 4 - 4
include/ls-std/os/windows/msvc-dll-definitions.hpp

@@ -3,15 +3,15 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-06-26
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #ifndef LS_STD_MSVC_DLL_DEFINITIONS_HPP
 #define LS_STD_MSVC_DLL_DEFINITIONS_HPP
 
-#define LS_STD_DLL_EXPORT        __declspec(dllexport)
-#define LS_STD_DLL_IMPORT        __declspec(dllimport)
-#define LS_STD_DYNAMIC_GOAL      LS_STD_DLL_EXPORT
+#define LS_STD_DLL_EXPORT __declspec(dllexport)
+#define LS_STD_DLL_IMPORT __declspec(dllimport)
+#define LS_STD_DYNAMIC_GOAL LS_STD_DLL_EXPORT
 
 #endif

+ 2 - 2
include/ls-std/time/Date.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -21,7 +21,7 @@ namespace ls::std::time
     public:
 
       Date();
-      ~Date() override = default;
+      ~Date() override;
 
       // arithmetic operators
 

+ 5 - 5
source/ls-std/boxing/Boolean.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-09
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -11,14 +11,14 @@
 #include <ls-std/boxing/Boolean.hpp>
 #include <ls-std/core/exception/IllegalArgumentException.hpp>
 
-ls::std::boxing::Boolean::Boolean() : ls::std::core::Class("Boolean")
+ls::std::boxing::Boolean::Boolean(bool _value) : ls::std::core::Class("Boolean"), value(_value)
 {}
 
-ls::std::boxing::Boolean::Boolean(bool _value)
-    : ls::std::core::Class("Boolean"),
-      value(_value)
+ls::std::boxing::Boolean::Boolean() : ls::std::core::Class("Boolean")
 {}
 
+ls::std::boxing::Boolean::~Boolean() = default;
+
 ls::std::boxing::Boolean::operator bool() const
 {
   return this->value;

+ 4 - 4
source/ls-std/boxing/Double.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -16,13 +16,13 @@ ls::std::boxing::Double::Double() : ls::std::core::Class("Double")
   this->_assignEpsilon(0.00000001);
 }
 
-ls::std::boxing::Double::Double(double _value)
-    : ls::std::core::Class("Double"),
-      value(_value)
+ls::std::boxing::Double::Double(double _value) : ls::std::core::Class("Double"), value(_value)
 {
   this->_assignEpsilon(0.00000001);
 }
 
+ls::std::boxing::Double::~Double() = default;
+
 ls::std::boxing::Double::operator double() const
 {
   return this->value;

+ 5 - 8
source/ls-std/boxing/Float.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -11,17 +11,14 @@
 #include <ls-std/boxing/Float.hpp>
 #include <ls-std/core/exception/IllegalArgumentException.hpp>
 
-ls::std::boxing::Float::Float()
-    : ls::std::core::Class("Float"),
-      epsilon(0.00001f)
+ls::std::boxing::Float::Float() : ls::std::core::Class("Float"), epsilon(0.00001f)
 {}
 
-ls::std::boxing::Float::Float(float _value)
-    : ls::std::core::Class("Float"),
-      epsilon(0.00001f),
-      value(_value)
+ls::std::boxing::Float::Float(float _value) : ls::std::core::Class("Float"), epsilon(0.00001f), value(_value)
 {}
 
+ls::std::boxing::Float::~Float() = default;
+
 ls::std::boxing::Float::operator float() const
 {
   return this->value;

+ 4 - 4
source/ls-std/boxing/Integer.cpp

@@ -3,21 +3,21 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #include <ls-std/boxing/Integer.hpp>
 #include <ls-std/core/exception/IllegalArithmeticOperationException.hpp>
 
-ls::std::boxing::Integer::Integer(int _value)
-    : ls::std::core::Class("Integer"),
-      value(_value)
+ls::std::boxing::Integer::Integer(int _value) : ls::std::core::Class("Integer"), value(_value)
 {}
 
 ls::std::boxing::Integer::Integer() : ls::std::core::Class("Integer")
 {}
 
+ls::std::boxing::Integer::~Integer() = default;
+
 ls::std::boxing::Integer::operator int() const
 {
   return this->value;

+ 4 - 4
source/ls-std/boxing/Long.cpp

@@ -3,21 +3,21 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #include <ls-std/boxing/Long.hpp>
 #include <ls-std/core/exception/IllegalArithmeticOperationException.hpp>
 
-ls::std::boxing::Long::Long(ls::std::core::type::long_type _value)
-    : ls::std::core::Class("Long"),
-      value(_value)
+ls::std::boxing::Long::Long(ls::std::core::type::long_type _value) : ls::std::core::Class("Long"), value(_value)
 {}
 
 ls::std::boxing::Long::Long() : ls::std::core::Class("Long")
 {}
 
+ls::std::boxing::Long::~Long() = default;
+
 ls::std::boxing::Long::operator ls::std::core::type::long_type() const
 {
   return this->value;

+ 5 - 8
source/ls-std/boxing/String.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -14,11 +14,11 @@
 ls::std::boxing::String::String() : ls::std::core::Class("String")
 {}
 
-ls::std::boxing::String::String(::std::string _value)
-    : ls::std::core::Class("String"),
-      value(::std::move(_value))
+ls::std::boxing::String::String(::std::string _value) : ls::std::core::Class("String"), value(::std::move(_value))
 {}
 
+ls::std::boxing::String::~String() = default;
+
 ls::std::boxing::String::operator const char *() const
 {
   return this->value.c_str();
@@ -179,10 +179,7 @@ bool ls::std::boxing::String::startsWith(const ::std::string &_text)
 {
   ::std::string fillContent{};
 
-  for (size_t iteration{}; iteration < _amount; iteration++)
-  {
-    fillContent += _fillCharacter;
-  }
+  for (size_t iteration{}; iteration < _amount; iteration++) { fillContent += _fillCharacter; }
 
   return fillContent;
 }

+ 3 - 1
source/ls-std/core/Class.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -15,6 +15,8 @@ ls::std::core::Class::Class(const ::std::string &_name)
   this->_assignClassName(_name);
 }
 
+ls::std::core::Class::~Class() = default;
+
 ::std::string ls::std::core::Class::getClassName()
 {
   return this->name;

+ 19 - 0
source/ls-std/core/LibraryVersion.cpp

@@ -0,0 +1,19 @@
+/*
+* Author:          Patrick-Christopher Mattulat
+* Company:         Lynar Studios
+* E-Mail:          webmaster@lynarstudios.com
+* Created:         2023-02-05
+* Changed:         2023-02-05
+*
+* */
+
+#include <ls-std/core/LibraryVersion.hpp>
+
+ls::std::core::LibraryVersion::LibraryVersion() = default;
+
+ls::std::core::LibraryVersion::~LibraryVersion() = default;
+
+::std::string ls::std::core::LibraryVersion::getVersion()
+{
+  return "2023.1.0";
+}

+ 4 - 5
source/ls-std/core/Version.cpp

@@ -3,19 +3,18 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-28
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #include <ls-std/core/Version.hpp>
 #include <regex>
 
-ls::std::core::Version::Version(ls::std::core::type::version_type _majorVersion, ls::std::core::type::version_type _minorVersion, ls::std::core::type::version_type _patchVersion)
-    : majorVersion(_majorVersion),
-      minorVersion(_minorVersion),
-      patchVersion(_patchVersion)
+ls::std::core::Version::Version(ls::std::core::type::version_type _majorVersion, ls::std::core::type::version_type _minorVersion, ls::std::core::type::version_type _patchVersion) : majorVersion(_majorVersion), minorVersion(_minorVersion), patchVersion(_patchVersion)
 {}
 
+ls::std::core::Version::~Version() = default;
+
 ls::std::core::type::byte_field ls::std::core::Version::marshal()
 {
   ls::std::core::type::byte_field data{};

+ 19 - 0
source/ls-std/core/exception/EventNotHandledException.cpp

@@ -0,0 +1,19 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/exception/EventNotHandledException.hpp>
+
+ls::std::core::EventNotHandledException::EventNotHandledException() = default;
+
+ls::std::core::EventNotHandledException::~EventNotHandledException() = default;
+
+const char *ls::std::core::EventNotHandledException::what() const noexcept
+{
+  return "EventNotHandledException thrown - event was not handled - nothing happened!";
+}

+ 19 - 0
source/ls-std/core/exception/EventNotSubscribedException.cpp

@@ -0,0 +1,19 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/exception/EventNotSubscribedException.hpp>
+
+ls::std::core::EventNotSubscribedException::EventNotSubscribedException() = default;
+
+ls::std::core::EventNotSubscribedException::~EventNotSubscribedException() = default;
+
+const char *ls::std::core::EventNotSubscribedException::what() const noexcept
+{
+  return "EventNotSubscribedException thrown - event was not subscribed!";
+}

+ 19 - 0
source/ls-std/core/exception/FileNotFoundException.cpp

@@ -0,0 +1,19 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/exception/FileNotFoundException.hpp>
+
+ls::std::core::FileNotFoundException::FileNotFoundException() = default;
+
+ls::std::core::FileNotFoundException::~FileNotFoundException() = default;
+
+const char *ls::std::core::FileNotFoundException::what() const noexcept
+{
+  return "FileNotFoundException thrown - file not found!";
+}

+ 19 - 0
source/ls-std/core/exception/FileOperationException.cpp

@@ -0,0 +1,19 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/exception/FileOperationException.hpp>
+
+ls::std::core::FileOperationException::FileOperationException() = default;
+
+ls::std::core::FileOperationException::~FileOperationException() = default;
+
+const char *ls::std::core::FileOperationException::what() const noexcept
+{
+  return "FileOperationException thrown - file operation failed!";
+}

+ 19 - 0
source/ls-std/core/exception/IllegalArgumentException.cpp

@@ -0,0 +1,19 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/exception/IllegalArgumentException.hpp>
+
+ls::std::core::IllegalArgumentException::IllegalArgumentException() = default;
+
+ls::std::core::IllegalArgumentException::~IllegalArgumentException() = default;
+
+const char *ls::std::core::IllegalArgumentException::what() const noexcept
+{
+  return "IllegalArgumentException thrown - passed argument is not valid!";
+}

+ 19 - 0
source/ls-std/core/exception/IllegalArithmeticOperationException.cpp

@@ -0,0 +1,19 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/exception/IllegalArithmeticOperationException.hpp>
+
+ls::std::core::IllegalArithmeticOperationException::IllegalArithmeticOperationException() = default;
+
+ls::std::core::IllegalArithmeticOperationException::~IllegalArithmeticOperationException() = default;
+
+const char *ls::std::core::IllegalArithmeticOperationException::what() const noexcept
+{
+  return "IllegalArithmeticOperationException thrown - arithmetic operation is not allowed!";
+}

+ 19 - 0
source/ls-std/core/exception/IncompleteJsonException.cpp

@@ -0,0 +1,19 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/exception/IncompleteJsonException.hpp>
+
+ls::std::core::IncompleteJsonException::IncompleteJsonException() = default;
+
+ls::std::core::IncompleteJsonException::~IncompleteJsonException() = default;
+
+const char *ls::std::core::IncompleteJsonException::what() const noexcept
+{
+  return "IncompleteJsonException thrown - this JSON string is incomplete.";
+}

+ 19 - 0
source/ls-std/core/exception/NullPointerException.cpp

@@ -0,0 +1,19 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/exception/NullPointerException.hpp>
+
+ls::std::core::NullPointerException::NullPointerException() = default;
+
+ls::std::core::NullPointerException::~NullPointerException() = default;
+
+const char *ls::std::core::NullPointerException::what() const noexcept
+{
+  return "NullPointerException thrown - reference is null!";
+}

+ 14 - 0
source/ls-std/core/interface/IBoxing.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/interface/IBoxing.hpp>
+
+ls::std::core::interface_type::IBoxing::IBoxing() = default;
+
+ls::std::core::interface_type::IBoxing::~IBoxing() = default;

+ 14 - 0
source/ls-std/core/interface/IEncoding.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/interface/IEncoding.hpp>
+
+ls::std::core::interface_type::IEncoding::IEncoding() = default;
+
+ls::std::core::interface_type::IEncoding::~IEncoding() = default;

+ 14 - 0
source/ls-std/core/interface/IEventSubscriber.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/interface/IEventSubscriber.hpp>
+
+ls::std::core::interface_type::IEventSubscriber::IEventSubscriber() = default;
+
+ls::std::core::interface_type::IEventSubscriber::~IEventSubscriber() = default;

+ 14 - 0
source/ls-std/core/interface/IListener.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/interface/IListener.hpp>
+
+ls::std::core::interface_type::IListener::IListener() = default;
+
+ls::std::core::interface_type::IListener::~IListener() = default;

+ 14 - 0
source/ls-std/core/interface/IReader.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/interface/IReader.hpp>
+
+ls::std::core::interface_type::IReader::IReader() = default;
+
+ls::std::core::interface_type::IReader::~IReader() = default;

+ 14 - 0
source/ls-std/core/interface/ISerializable.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/interface/ISerializable.hpp>
+
+ls::std::core::interface_type::ISerializable::ISerializable() = default;
+
+ls::std::core::interface_type::ISerializable::~ISerializable() = default;

+ 14 - 0
source/ls-std/core/interface/IStorable.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/interface/IStorable.hpp>
+
+ls::std::core::interface_type::IStorable::IStorable() = default;
+
+ls::std::core::interface_type::IStorable::~IStorable() = default;

+ 14 - 0
source/ls-std/core/interface/IWriter.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/interface/IWriter.hpp>
+
+ls::std::core::interface_type::IWriter::IWriter() = default;
+
+ls::std::core::interface_type::IWriter::~IWriter() = default;

+ 21 - 0
source/ls-std/core/utils/RegexUtils.cpp

@@ -0,0 +1,21 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2023-02-04
+ * Changed:         2023-02-04
+ *
+ * */
+
+#include <ls-std/core/utils/RegexUtils.hpp>
+#include <regex>
+
+ls::std::core::RegexUtils::RegexUtils() = default;
+
+ls::std::core::RegexUtils::~RegexUtils() = default;
+
+::std::string ls::std::core::RegexUtils::escapeString(const ::std::string &_text)
+{
+  static ::std::regex regexMetaEscape(R"(([\^\$\\\.\*\+\?\(\)\[\]\{\}\|]))");
+  return ::std::regex_replace(_text, regexMetaEscape, R"(\$1)");
+}

+ 14 - 10
source/ls-std/encoding/Base64.cpp

@@ -3,18 +3,22 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-01-03
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #include <bitset>
 #include <ls-std/encoding/Base64.hpp>
 
+ls::std::encoding::Base64::Base64() = default;
+
+ls::std::encoding::Base64::~Base64() = default;
+
 ::std::string ls::std::encoding::Base64::encode(const ::std::string &_sequence)
 {
   ::std::string encodedString{};
 
-  for(size_t index = 0 ; index < _sequence.size() ; index += 3)
+  for (size_t index = 0; index < _sequence.size(); index += 3)
   {
     ::std::string byteTriple = ls::std::encoding::Base64::_getNextByteTriple(_sequence, index);
     encodedString += ls::std::encoding::Base64::_encodeByteTriple(byteTriple);
@@ -27,7 +31,7 @@
 {
   ::std::string decodedString{};
 
-  for (int index{} ; index < _sequence.size() ; index += 4)
+  for (int index{}; index < _sequence.size(); index += 4)
   {
     ::std::string quadruple = ls::std::encoding::Base64::_getNextByteQuadruple(_sequence, index);
     decodedString += ls::std::encoding::Base64::_decodeByteQuadruple(quadruple);
@@ -54,7 +58,7 @@
   return _encodedString;
 }
 
-::std::string ls::std::encoding::Base64::_decodeByteQuadruple(const ::std::string& _quadruple)
+::std::string ls::std::encoding::Base64::_decodeByteQuadruple(const ::std::string &_quadruple)
 {
   ::std::string decodedText{};
   uint8_t shiftValue = 16;
@@ -73,7 +77,7 @@
   return decodedText;
 }
 
-::std::string ls::std::encoding::Base64::_encodeByteTriple(const ::std::string& _byteTriple)
+::std::string ls::std::encoding::Base64::_encodeByteTriple(const ::std::string &_byteTriple)
 {
   ::std::string encodedText{};
   uint32_t bitStorage = ls::std::encoding::Base64::_toEncodingBitStorage(_byteTriple);
@@ -81,7 +85,7 @@
   static ::std::unordered_map<uint8_t, char> encodingMap = ls::std::encoding::Base64::_getEncodingMap();
   uint8_t shiftValue = 18;
 
-  for (uint8_t bitMaskIndex = 0 ; bitMaskIndex < 4 ; bitMaskIndex++)
+  for (uint8_t bitMaskIndex = 0; bitMaskIndex < 4; bitMaskIndex++)
   {
     uint32_t extractedBitSequence = ls::std::encoding::Base64::_extractBitSequence(bitMaskStorage[bitMaskIndex], bitStorage);
     extractedBitSequence = extractedBitSequence >> shiftValue;
@@ -99,12 +103,12 @@ uint32_t ls::std::encoding::Base64::_extractBitSequence(uint32_t _bitMask, uint3
 
 uint32_t ls::std::encoding::Base64::_generateBitMask(uint32_t _maskValue, uint8_t _shiftValue)
 {
-  if(_shiftValue == 0)
+  if (_shiftValue == 0)
   {
     return _maskValue;
   }
 
-  if(_shiftValue < 0)
+  if (_shiftValue < 0)
   {
     return _maskValue >> _shiftValue;
   }
@@ -167,7 +171,7 @@ uint32_t ls::std::encoding::Base64::_toDecodingBitStorage(const ::std::string &_
   uint8_t letterCounter = 1;
   ::std::unordered_map<char, uint8_t> decodingMap = ls::std::encoding::Base64::_getDecodingMap();
 
-  for(char letter : _quadruple)
+  for (char letter : _quadruple)
   {
     uint32_t bitMask = ls::std::encoding::Base64::_generateBitMask(decodingMap[(char) letter], (4 - letterCounter) * 6); // must be hardcoded - even in case of less than 4 characters, so that conversion is correct
     ls::std::encoding::Base64::_mergeBitSequence(bitStorage, bitMask);
@@ -182,7 +186,7 @@ uint32_t ls::std::encoding::Base64::_toEncodingBitStorage(const ::std::string &_
   uint32_t bitStorage{};
   uint8_t shiftValue = 16;
 
-  for(char letter : _triple)
+  for (char letter : _triple)
   {
     uint32_t bitMask = ls::std::encoding::Base64::_generateBitMask((uint8_t) letter, shiftValue);
     ls::std::encoding::Base64::_mergeBitSequence(bitStorage, bitMask);

+ 2 - 2
source/ls-std/encoding/cli/cli-base64-main.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-07-03
- * Changed:         2023-02-03
+ * Changed:         2023-02-05
  *
  * */
 
@@ -49,7 +49,7 @@ int main(int argc, char *argv[])
 
 void printHelp()
 {
-  std::string help = "Base 64 CLI - " + ls::std::core::getVersion() + "\n\n";
+  std::string help = "Base 64 CLI - " + ls::std::core::LibraryVersion::getVersion() + "\n\n";
   help += "(1) encode a string:\t\t";
   help += "--encode [string]\n";
   help += "(2) decode a string:\t\t";

+ 3 - 1
source/ls-std/event/Event.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-26
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -15,6 +15,8 @@ ls::std::event::Event::Event(const ls::std::core::type::event_id &_id) : ls::std
   this->_assignId(_id);
 }
 
+ls::std::event::Event::~Event() = default;
+
 bool ls::std::event::Event::addParameter(const ls::std::core::type::event_parameter &_eventParameter)
 {
   bool wasAdded{};

+ 4 - 2
source/ls-std/event/EventHandler.cpp

@@ -3,18 +3,20 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
 #include <ls-std/core/exception/IllegalArgumentException.hpp>
 #include <ls-std/event/EventHandler.hpp>
 
-ls::std::event::EventHandler::EventHandler(const ls::std::core::type::event_id& _id) : ls::std::event::Narrator()
+ls::std::event::EventHandler::EventHandler(const ls::std::core::type::event_id &_id) : ls::std::event::Narrator()
 {
   this->_assignId(_id);
 }
 
+ls::std::event::EventHandler::~EventHandler() = default;
+
 ls::std::core::type::event_id ls::std::event::EventHandler::getId()
 {
   return this->id;

+ 3 - 1
source/ls-std/event/EventManager.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -15,6 +15,8 @@
 ls::std::event::EventManager::EventManager() : ls::std::core::Class("EventManager")
 {}
 
+ls::std::event::EventManager::~EventManager() = default;
+
 void ls::std::event::EventManager::subscribe(const ls::std::core::type::event_id &_id, const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener)
 {
   if (_id.empty() || _listener == nullptr)

+ 3 - 1
source/ls-std/event/Narrator.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-14
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -14,6 +14,8 @@
 ls::std::event::Narrator::Narrator() : ls::std::core::Class("Narrator")
 {}
 
+ls::std::event::Narrator::~Narrator() = default;
+
 bool ls::std::event::Narrator::addListener(const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener)
 {
   bool wasAdded{};

+ 3 - 1
source/ls-std/event/serialization/SerializableJsonEvent.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-07
- * Changed:         2023-02-03
+ * Changed:         2023-02-04
  *
  * */
 
@@ -15,6 +15,8 @@ ls::std::event::SerializableJsonEvent::SerializableJsonEvent(const ::std::shared
   this->_assignValue(_value);
 }
 
+ls::std::event::SerializableJsonEvent::~SerializableJsonEvent() = default;
+
 ls::std::core::type::byte_field ls::std::event::SerializableJsonEvent::marshal()
 {
   this->_update();

Some files were not shown because too many files changed in this diff