Browse Source

Merge branch 'rc-2023-2-1' of public/ls-standard-library into main

patrick-christopher.mattulat 11 months ago
parent
commit
3bd0559603
100 changed files with 635 additions and 531 deletions
  1. 9 1
      CMakeLists.txt
  2. 1 1
      LICENSE.MIT
  3. 4 15
      README.md
  4. 3 2
      include/ls-std/boxing/Boolean.hpp
  5. 3 2
      include/ls-std/boxing/Double.hpp
  6. 4 2
      include/ls-std/boxing/Float.hpp
  7. 4 9
      include/ls-std/boxing/Integer.hpp
  8. 4 9
      include/ls-std/boxing/Long.hpp
  9. 21 20
      include/ls-std/boxing/String.hpp
  10. 2 2
      include/ls-std/core/Class.hpp
  11. 3 2
      include/ls-std/core/Version.hpp
  12. 2 3
      include/ls-std/core/evaluator/NullPointerArgumentEvaluator.hpp
  13. 1 3
      include/ls-std/core/evaluator/NullPointerEvaluator.hpp
  14. 53 0
      include/ls-std/core/evaluator/RawNullPointerArgumentEvaluator.hpp
  15. 53 0
      include/ls-std/core/evaluator/RawNullPointerEvaluator.hpp
  16. 2 2
      include/ls-std/core/exception/EventNotHandledException.hpp
  17. 2 2
      include/ls-std/core/exception/EventNotSubscribedException.hpp
  18. 8 5
      include/ls-std/core/exception/Exception.hpp
  19. 2 2
      include/ls-std/core/exception/FileNotFoundException.hpp
  20. 2 2
      include/ls-std/core/exception/FileOperationException.hpp
  21. 2 2
      include/ls-std/core/exception/IllegalArgumentException.hpp
  22. 2 2
      include/ls-std/core/exception/IllegalArithmeticOperationException.hpp
  23. 2 2
      include/ls-std/core/exception/IncompleteJsonException.hpp
  24. 2 2
      include/ls-std/core/exception/IndexOutOfBoundsException.hpp
  25. 2 2
      include/ls-std/core/exception/NotImplementedException.hpp
  26. 2 2
      include/ls-std/core/exception/NullPointerException.hpp
  27. 2 2
      include/ls-std/core/interface/IBoxing.hpp
  28. 2 2
      include/ls-std/core/jni/JniClass.hpp
  29. 2 2
      include/ls-std/core/jni/JniClassParameter.hpp
  30. 6 5
      include/ls-std/core/jni/JniMethod.hpp
  31. 3 2
      include/ls-std/core/type/EventTypes.hpp
  32. 35 0
      include/ls-std/core/type/RawPointer.hpp
  33. 2 2
      include/ls-std/core/type/Types.hpp
  34. 8 7
      include/ls-std/encoding/Base64.hpp
  35. 3 3
      include/ls-std/event/Event.hpp
  36. 2 2
      include/ls-std/event/EventHandler.hpp
  37. 3 3
      include/ls-std/event/EventManager.hpp
  38. 3 3
      include/ls-std/event/Narrator.hpp
  39. 2 2
      include/ls-std/event/serialization/SerializableJsonEvent.hpp
  40. 22 22
      include/ls-std/io/File.hpp
  41. 3 3
      include/ls-std/io/FileOutputStream.hpp
  42. 3 3
      include/ls-std/io/FileReader.hpp
  43. 3 3
      include/ls-std/io/FileWriter.hpp
  44. 2 2
      include/ls-std/io/StorableFile.hpp
  45. 11 10
      include/ls-std/io/logging/LogLevel.hpp
  46. 2 2
      include/ls-std/io/logging/LogLevelValue.hpp
  47. 12 11
      include/ls-std/io/logging/Logger.hpp
  48. 2 2
      include/ls-std/io/section-pair/SectionPairRowEnumType.hpp
  49. 9 8
      include/ls-std/io/section-pair/model/SectionPairDocument.hpp
  50. 7 6
      include/ls-std/io/section-pair/model/SectionPairRow.hpp
  51. 4 4
      include/ls-std/io/section-pair/model/SectionPairRowListValue.hpp
  52. 2 2
      include/ls-std/io/section-pair/model/SectionPairRowSingleValue.hpp
  53. 8 2
      include/ls-std/io/section-pair/model/SectionPairRowValue.hpp
  54. 9 8
      include/ls-std/io/section-pair/model/SectionPairSection.hpp
  55. 3 3
      include/ls-std/io/section-pair/reader/SectionPairFileReader.hpp
  56. 7 6
      include/ls-std/io/section-pair/reader/SectionPairFileReaderParameter.hpp
  57. 7 6
      include/ls-std/io/section-pair/serialization/SerializableSectionPairDocument.hpp
  58. 4 3
      include/ls-std/io/section-pair/serialization/SerializableSectionPairParameter.hpp
  59. 5 5
      include/ls-std/io/section-pair/serialization/SerializableSectionPairRow.hpp
  60. 5 4
      include/ls-std/io/section-pair/serialization/SerializableSectionPairRowListValue.hpp
  61. 2 2
      include/ls-std/io/section-pair/serialization/SerializableSectionPairRowSingleValue.hpp
  62. 15 14
      include/ls-std/io/section-pair/serialization/SerializableSectionPairSection.hpp
  63. 4 4
      include/ls-std/io/xml/XmlAttribute.hpp
  64. 6 6
      include/ls-std/io/xml/XmlDeclaration.hpp
  65. 4 4
      include/ls-std/io/xml/XmlDocument.hpp
  66. 9 9
      include/ls-std/io/xml/XmlNode.hpp
  67. 2 2
      include/ls-std/io/xml/XmlParseMode.hpp
  68. 2 2
      include/ls-std/io/xml/XmlParseParameter.hpp
  69. 15 13
      include/ls-std/io/xml/XmlParser.hpp
  70. 4 4
      include/ls-std/io/xml/XmlReader.hpp
  71. 4 1
      include/ls-std/ls-std-core.hpp
  72. 9 9
      include/ls-std/time/Date.hpp
  73. 4 2
      include/ls-std/time/system-time/SystemTime.hpp
  74. 2 2
      include/ls-std/time/system-time/SystemTimeParameter.hpp
  75. 17 12
      source/ls-std/boxing/Boolean.cpp
  76. 11 5
      source/ls-std/boxing/Double.cpp
  77. 11 7
      source/ls-std/boxing/Float.cpp
  78. 11 37
      source/ls-std/boxing/Integer.cpp
  79. 11 37
      source/ls-std/boxing/Long.cpp
  80. 22 21
      source/ls-std/boxing/String.cpp
  81. 2 2
      source/ls-std/core/Class.cpp
  82. 2 2
      source/ls-std/core/LibraryVersion.cpp
  83. 3 2
      source/ls-std/core/Version.cpp
  84. 2 2
      source/ls-std/core/evaluator/IndexOutOfBoundsEvaluator.cpp
  85. 1 18
      source/ls-std/core/evaluator/NullPointerArgumentEvaluator.cpp
  86. 1 18
      source/ls-std/core/evaluator/NullPointerEvaluator.cpp
  87. 3 3
      source/ls-std/core/exception/EventNotHandledException.cpp
  88. 3 3
      source/ls-std/core/exception/EventNotSubscribedException.cpp
  89. 7 1
      source/ls-std/core/exception/Exception.cpp
  90. 8 2
      source/ls-std/core/exception/ExceptionMessage.cpp
  91. 3 3
      source/ls-std/core/exception/FileNotFoundException.cpp
  92. 3 3
      source/ls-std/core/exception/FileOperationException.cpp
  93. 3 3
      source/ls-std/core/exception/IllegalArgumentException.cpp
  94. 3 3
      source/ls-std/core/exception/IllegalArithmeticOperationException.cpp
  95. 3 3
      source/ls-std/core/exception/IncompleteJsonException.cpp
  96. 3 3
      source/ls-std/core/exception/IndexOutOfBoundsException.cpp
  97. 3 3
      source/ls-std/core/exception/NotImplementedException.cpp
  98. 3 3
      source/ls-std/core/exception/NullPointerException.cpp
  99. 6 6
      source/ls-std/core/jni/JniApi.cpp
  100. 10 9
      source/ls-std/core/jni/JniClass.cpp

+ 9 - 1
CMakeLists.txt

@@ -11,7 +11,7 @@
 ##########################################################
 ##########################################################
 
 
 cmake_minimum_required(VERSION 3.17)
 cmake_minimum_required(VERSION 3.17)
-project(ls-std VERSION 2023.2.0)
+project(ls-std VERSION 2023.2.1)
 
 
 set(MODULE_NAME_BOXING ls-std-boxing)
 set(MODULE_NAME_BOXING ls-std-boxing)
 set(MODULE_NAME_CORE ls-std-core)
 set(MODULE_NAME_CORE ls-std-core)
@@ -309,6 +309,8 @@ if (${LS_STD_BUILD_WITH_TESTS})
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/evaluator/IndexOutOfBoundsEvaluatorTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/evaluator/IndexOutOfBoundsEvaluatorTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/evaluator/NullPointerArgumentEvaluatorTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/evaluator/NullPointerArgumentEvaluatorTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/evaluator/NullPointerEvaluatorTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/evaluator/NullPointerEvaluatorTest.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/evaluator/RawNullPointerArgumentEvaluatorTest.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/evaluator/RawNullPointerEvaluatorTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/exception/EventNotHandledExceptionTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/exception/EventNotHandledExceptionTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/exception/EventNotSubscribedExceptionTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/exception/EventNotSubscribedExceptionTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/exception/ExceptionMessageTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/core/exception/ExceptionMessageTest.cpp
@@ -475,6 +477,7 @@ endif ()
 if (${LS_STD_BUILD_WITH_TESTS})
 if (${LS_STD_BUILD_WITH_TESTS})
     message("${MODULE_NAME_IO}: Building unit tests...")
     message("${MODULE_NAME_IO}: Building unit tests...")
     add_executable(${MODULE_NAME_IO}-unit-test
     add_executable(${MODULE_NAME_IO}-unit-test
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
             ${UNIT_TEST_FILES_IO})
             ${UNIT_TEST_FILES_IO})
 endif ()
 endif ()
@@ -496,6 +499,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
     if (${LS_STD_BUILD_WITH_JNI})
     if (${LS_STD_BUILD_WITH_JNI})
         message("${PROJECT_NAME}: Building unit tests with JNI support...")
         message("${PROJECT_NAME}: Building unit tests with JNI support...")
         add_executable(${PROJECT_NAME}-unit-test
         add_executable(${PROJECT_NAME}-unit-test
+                ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
                 ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
                 ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
                 ${UNIT_TEST_FILES_BOXING}
                 ${UNIT_TEST_FILES_BOXING}
                 ${UNIT_TEST_FILES_CORE}
                 ${UNIT_TEST_FILES_CORE}
@@ -508,6 +512,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
     else ()
     else ()
         message("${PROJECT_NAME}: Building unit tests...")
         message("${PROJECT_NAME}: Building unit tests...")
         add_executable(${PROJECT_NAME}-unit-test
         add_executable(${PROJECT_NAME}-unit-test
+                ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
                 ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
                 ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
                 ${UNIT_TEST_FILES_BOXING}
                 ${UNIT_TEST_FILES_BOXING}
                 ${UNIT_TEST_FILES_CORE}
                 ${UNIT_TEST_FILES_CORE}
@@ -547,6 +552,7 @@ endif ()
 if (${LS_STD_BUILD_WITH_TESTS})
 if (${LS_STD_BUILD_WITH_TESTS})
     message("${MODULE_NAME_IO}: Building integration tests...")
     message("${MODULE_NAME_IO}: Building integration tests...")
     add_executable(${MODULE_NAME_IO}-integration-test
     add_executable(${MODULE_NAME_IO}-integration-test
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
             ${INTEGRATION_TEST_FILES_IO})
             ${INTEGRATION_TEST_FILES_IO})
 endif ()
 endif ()
@@ -563,6 +569,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
     if (${LS_STD_BUILD_WITH_JNI})
     if (${LS_STD_BUILD_WITH_JNI})
         message("${PROJECT_NAME}: Building all tests...")
         message("${PROJECT_NAME}: Building all tests...")
         add_executable(${PROJECT_NAME}-test
         add_executable(${PROJECT_NAME}-test
+                ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
                 ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
                 ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
                 ${UNIT_TEST_FILES_BOXING}
                 ${UNIT_TEST_FILES_BOXING}
                 ${UNIT_TEST_FILES_CORE}
                 ${UNIT_TEST_FILES_CORE}
@@ -576,6 +583,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
     else ()
     else ()
         message("${PROJECT_NAME}: Building all tests with JNI support...")
         message("${PROJECT_NAME}: Building all tests with JNI support...")
         add_executable(${PROJECT_NAME}-test
         add_executable(${PROJECT_NAME}-test
+                ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
                 ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
                 ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
                 ${UNIT_TEST_FILES_BOXING}
                 ${UNIT_TEST_FILES_BOXING}
                 ${UNIT_TEST_FILES_CORE}
                 ${UNIT_TEST_FILES_CORE}

+ 1 - 1
LICENSE.MIT

@@ -1,4 +1,4 @@
-Copyright (c) 2020 Patrick-Christopher Mattulat (webmaster@lynarstudios.com)
+Copyright (c) 2020-2023 Patrick-Christopher Mattulat (webmaster@lynarstudios.com)
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
 documentation files (the "Software"), to deal in the Software without restriction, including without limitation the

+ 4 - 15
README.md

@@ -1,4 +1,4 @@
-# Lynar Studios - Standard Library 2023.2.0 #
+# Lynar Studios - Standard Library 2023.2.1 #
 
 
 This is a cross-platform standard library written in C++ offering functionalities you would usually miss in C++'s standard template library (STL), especially if you would search for cross-platform implementations.  
 This is a cross-platform standard library written in C++ offering functionalities you would usually miss in C++'s standard template library (STL), especially if you would search for cross-platform implementations.  
 This library has been tested on __Windows__, __Linux__ and __MacOS__ systems.
 This library has been tested on __Windows__, __Linux__ and __MacOS__ systems.
@@ -34,26 +34,15 @@ A __Date__ class comes with this submodule, which you can use to represent a dat
 
 
 #### Features ####
 #### Features ####
 
 
-- added NotImplementedException class, which can be thrown in case a method is provided, but not implemented
-- a JNI class is now available, wrapping C-like JNI functionalities, which can be found in __ls-std-core__ module - in
-  order to use this feature the CMake option __LS_STD_BUILD_WITH_JNI__ has to be enabled - please note, that this
-  feature is experimental and incomplete
-- a SystemTime class has been added to the library's time module for setting the local system time
-- Logger class is now configurable to silent log level or timestamp output
+- Section Pair values now support backslash characters, which are common on Windows to describe a file path
 
 
 #### Improvements ####
 #### Improvements ####
 
 
-- made test constructors public and reduced test setup overhead
-- added missing __nodiscard__ attributes to test package
-- made __Exception__ base class abstract, which prevents it from being instantiated
-- __NullPointerEvaluator__ & __NullPointerArgumentEvaluator__ now except raw pointers
-- Section-Pair identifiers can now have a length of 64 characters
-- Section-Pair values can now have a length of 512 characters
-- exceptions for creation of files or directories have been improved and now show the absolute file path
+- solved more than 400 SonarLint findings, which were mostly on critical level
 
 
 #### Fixes ####
 #### Fixes ####
 
 
-- no comment
+- none
 
 
 ---
 ---
 ### Documentation ###
 ### Documentation ###

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-09
  * Created:         2020-08-09
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -56,7 +56,7 @@ namespace ls::std::boxing
 
 
       // implementation
       // implementation
 
 
-      void parse(::std::string _parseText) override;
+      void parse(const ::std::string &_parseText) override;
       [[nodiscard]] ::std::string toString() override;
       [[nodiscard]] ::std::string toString() override;
 
 
       // additional functionality
       // additional functionality
@@ -74,6 +74,7 @@ namespace ls::std::boxing
       const ::std::string FALSE_STRING = "false";
       const ::std::string FALSE_STRING = "false";
       const ::std::string TRUE_STRING = "true";
       const ::std::string TRUE_STRING = "true";
 
 
+      [[nodiscard]] static ::std::string _fetchClassName();
       [[nodiscard]] ::std::string _toString() const;
       [[nodiscard]] ::std::string _toString() const;
   };
   };
 }
 }

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
  * Created:         2020-08-14
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -74,7 +74,7 @@ namespace ls::std::boxing
 
 
       // implementation
       // implementation
 
 
-      void parse(::std::string _parseText) override;
+      void parse(const ::std::string &_parseText) override;
       [[nodiscard]] ::std::string toString() override;
       [[nodiscard]] ::std::string toString() override;
 
 
       // additional functionality
       // additional functionality
@@ -89,6 +89,7 @@ namespace ls::std::boxing
       double value{};
       double value{};
 
 
       void _assignEpsilon(double _epsilon);
       void _assignEpsilon(double _epsilon);
+      [[nodiscard]] static ::std::string _fetchClassName();
   };
   };
 }
 }
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
  * Created:         2020-08-14
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -14,6 +14,7 @@
 #include <ls-std/core/interface/IBoxing.hpp>
 #include <ls-std/core/interface/IBoxing.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
+#include <string>
 
 
 namespace ls::std::boxing
 namespace ls::std::boxing
 {
 {
@@ -74,7 +75,7 @@ namespace ls::std::boxing
 
 
       // implementation
       // implementation
 
 
-      void parse(::std::string _parseText) override;
+      void parse(const ::std::string &_parseText) override;
       [[nodiscard]] ::std::string toString() override;
       [[nodiscard]] ::std::string toString() override;
 
 
       // additional functionality
       // additional functionality
@@ -89,6 +90,7 @@ namespace ls::std::boxing
       float value{};
       float value{};
 
 
       void _assignEpsilon(float _epsilon);
       void _assignEpsilon(float _epsilon);
+      [[nodiscard]] static ::std::string _fetchClassName();
   };
   };
 }
 }
 
 

+ 4 - 9
include/ls-std/boxing/Integer.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
  * Created:         2020-08-07
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -76,13 +76,6 @@ namespace ls::std::boxing
         return !_integer.value;
         return !_integer.value;
       }
       }
 
 
-      bool operator&&(const ls::std::boxing::Integer &_integer) const;
-      bool operator&&(int _value) const;
-      bool operator&&(bool _expression) const;
-      bool operator||(const ls::std::boxing::Integer &_integer) const;
-      bool operator||(int _value) const;
-      bool operator||(bool _expression) const;
-
       // increment / decrement operator
       // increment / decrement operator
 
 
       void operator++();
       void operator++();
@@ -90,7 +83,7 @@ namespace ls::std::boxing
 
 
       // implementation
       // implementation
 
 
-      void parse(::std::string _parseText) override;
+      void parse(const ::std::string &_parseText) override;
       [[nodiscard]] ::std::string toString() override;
       [[nodiscard]] ::std::string toString() override;
 
 
       // additional functionality
       // additional functionality
@@ -100,6 +93,8 @@ namespace ls::std::boxing
     private:
     private:
 
 
       int value{};
       int value{};
+
+      [[nodiscard]] static ::std::string _fetchClassName();
   };
   };
 }
 }
 
 

+ 4 - 9
include/ls-std/boxing/Long.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
  * Created:         2020-08-17
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -77,13 +77,6 @@ namespace ls::std::boxing
         return !_long.value;
         return !_long.value;
       }
       }
 
 
-      bool operator&&(const ls::std::boxing::Long &_long) const;
-      bool operator&&(ls::std::core::type::long_type _value) const;
-      bool operator&&(bool _expression) const;
-      bool operator||(const ls::std::boxing::Long &_long) const;
-      bool operator||(ls::std::core::type::long_type _value) const;
-      bool operator||(bool _expression) const;
-
       // increment / decrement operator
       // increment / decrement operator
 
 
       void operator++();
       void operator++();
@@ -91,7 +84,7 @@ namespace ls::std::boxing
 
 
       // implementation
       // implementation
 
 
-      void parse(::std::string _parseText) override;
+      void parse(const ::std::string &_parseText) override;
       [[nodiscard]] ::std::string toString() override;
       [[nodiscard]] ::std::string toString() override;
 
 
       // additional functionality
       // additional functionality
@@ -101,6 +94,8 @@ namespace ls::std::boxing
     private:
     private:
 
 
       ls::std::core::type::long_type value{};
       ls::std::core::type::long_type value{};
+
+      [[nodiscard]] static ::std::string _fetchClassName();
   };
   };
 }
 }
 
 

+ 21 - 20
include/ls-std/boxing/String.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
  * Created:         2020-08-14
- * Changed:         2023-02-23
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -16,6 +16,7 @@
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
 #include <string>
 #include <string>
+#include <string_view>
 #include <vector>
 #include <vector>
 
 
 namespace ls::std::boxing
 namespace ls::std::boxing
@@ -37,7 +38,7 @@ namespace ls::std::boxing
       ::std::string operator+(ls::std::boxing::String _string) const;
       ::std::string operator+(ls::std::boxing::String _string) const;
       ::std::string operator+(const ::std::string &_string) const;
       ::std::string operator+(const ::std::string &_string) const;
       ::std::string operator+(const char *_string) const;
       ::std::string operator+(const char *_string) const;
-      ::std::string operator-(int _number);
+      ::std::string operator-(int _number) const;
 
 
       // compound operators
       // compound operators
 
 
@@ -46,38 +47,38 @@ namespace ls::std::boxing
 
 
       // comparison operators
       // comparison operators
 
 
-      bool operator==(ls::std::boxing::String _string);
-      bool operator==(const ::std::string &_value);
-      bool operator==(const char *_value);
-      bool operator!=(ls::std::boxing::String _string);
-      bool operator!=(const ::std::string &_value);
-      bool operator!=(const char *_value);
+      bool operator==(ls::std::boxing::String _string) const;
+      bool operator==(::std::string_view _value) const;
+      bool operator==(const char *_value) const;
+      bool operator!=(ls::std::boxing::String _string) const;
+      bool operator!=(::std::string_view _value) const;
+      bool operator!=(const char *_value) const;
 
 
       // implementation
       // implementation
 
 
-      void parse(::std::string _parseText) override;
+      void parse(const ::std::string &_parseText) override;
       [[nodiscard]] ::std::string toString() override;
       [[nodiscard]] ::std::string toString() override;
 
 
       // additional functionality
       // additional functionality
 
 
-      [[nodiscard]] bool contains(const ::std::string &_text);
-      [[nodiscard]] bool endsWith(const ::std::string &_text);
-      [[nodiscard]] bool equalsIgnoreCase(ls::std::boxing::String _string);
-      [[nodiscard]] bool equalsIgnoreCase(::std::string _text);
+      [[nodiscard]] bool contains(::std::string_view _text) const;
+      [[nodiscard]] bool endsWith(::std::string_view _text) const;
+      [[nodiscard]] bool equalsIgnoreCase(const ls::std::boxing::String &_string) const;
+      [[nodiscard]] bool equalsIgnoreCase(::std::string _text) const;
       [[nodiscard]] ::std::vector<ls::std::core::type::byte_type> getByteData();
       [[nodiscard]] ::std::vector<ls::std::core::type::byte_type> getByteData();
-      [[nodiscard]] ::std::string padLeft(size_t _width, char _fillCharacter);
-      [[nodiscard]] ::std::string padRight(size_t _width, char _fillCharacter);
-      [[nodiscard]] ::std::string reverse();
-      [[nodiscard]] bool startsWith(const ::std::string &_text);
-      [[nodiscard]] ::std::string toLowerCase();
-      [[nodiscard]] ::std::string toUpperCase();
+      [[nodiscard]] ::std::string padLeft(size_t _width, char _fillCharacter) const;
+      [[nodiscard]] ::std::string padRight(size_t _width, char _fillCharacter) const;
+      [[nodiscard]] ::std::string reverse() const;
+      [[nodiscard]] bool startsWith(::std::string_view _text) const;
+      [[nodiscard]] ::std::string toLowerCase() const;
+      [[nodiscard]] ::std::string toUpperCase() const;
 
 
     private:
     private:
 
 
       ::std::string value{};
       ::std::string value{};
 
 
       [[nodiscard]] static ::std::string _buildCharacterChain(size_t _amount, char _fillCharacter);
       [[nodiscard]] static ::std::string _buildCharacterChain(size_t _amount, char _fillCharacter);
-      [[nodiscard]] static ::std::string _createFillContent(const ::std::string &_text, size_t _width, char _fillCharacter);
+      [[nodiscard]] static ::std::string _createFillContent(::std::string_view _text, size_t _width, char _fillCharacter);
   };
   };
 }
 }
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
  * Created:         2020-08-07
- * Changed:         2023-02-06
+ * Changed:         2023-05-15
  *
  *
  * */
  * */
 
 
@@ -22,7 +22,7 @@ namespace ls::std::core
       explicit Class(const ::std::string &_name);
       explicit Class(const ::std::string &_name);
       virtual ~Class();
       virtual ~Class();
 
 
-      [[nodiscard]] ::std::string getClassName();
+      [[nodiscard]] ::std::string getClassName() const;
 
 
     private:
     private:
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-27
  * Created:         2020-09-27
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -14,6 +14,7 @@
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/core/type/Types.hpp>
 #include <ls-std/core/type/Types.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <string_view>
 
 
 namespace ls::std::core
 namespace ls::std::core
 {
 {
@@ -45,7 +46,7 @@ namespace ls::std::core
       ls::std::core::type::version_type minorVersion{};
       ls::std::core::type::version_type minorVersion{};
       ls::std::core::type::version_type patchVersion{};
       ls::std::core::type::version_type patchVersion{};
 
 
-      [[nodiscard]] static bool _isValid(const ::std::string &_versionString);
+      [[nodiscard]] static bool _isValid(::std::string_view _versionString);
   };
   };
 }
 }
 
 

+ 2 - 3
include/ls-std/core/evaluator/NullPointerArgumentEvaluator.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-08
 * Created:         2023-02-08
-* Changed:         2023-04-07
+* Changed:         2023-05-23
 *
 *
 * */
 * */
 
 
@@ -11,6 +11,7 @@
 #define LS_STD_NULL_POINTER_ARGUMENT_EVALUATOR_HPP
 #define LS_STD_NULL_POINTER_ARGUMENT_EVALUATOR_HPP
 
 
 #include <ls-std/core/interface/IEvaluator.hpp>
 #include <ls-std/core/interface/IEvaluator.hpp>
+#include <ls-std/core/type/RawPointer.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
 #include <string>
 #include <string>
@@ -21,8 +22,6 @@ namespace ls::std::core
   {
   {
     public:
     public:
 
 
-      explicit NullPointerArgumentEvaluator(const void *_rawArgument);
-      explicit NullPointerArgumentEvaluator(const void *_rawArgument, ::std::string _message);
       explicit NullPointerArgumentEvaluator(const ::std::shared_ptr<void> &_argument);
       explicit NullPointerArgumentEvaluator(const ::std::shared_ptr<void> &_argument);
       explicit NullPointerArgumentEvaluator(const ::std::shared_ptr<void> &_argument, ::std::string _message);
       explicit NullPointerArgumentEvaluator(const ::std::shared_ptr<void> &_argument, ::std::string _message);
       ~NullPointerArgumentEvaluator() noexcept override;
       ~NullPointerArgumentEvaluator() noexcept override;

+ 1 - 3
include/ls-std/core/evaluator/NullPointerEvaluator.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-08
 * Created:         2023-02-08
-* Changed:         2023-04-04
+* Changed:         2023-05-24
 *
 *
 * */
 * */
 
 
@@ -21,8 +21,6 @@ namespace ls::std::core
   {
   {
     public:
     public:
 
 
-      explicit NullPointerEvaluator(const void *_rawArgument);
-      explicit NullPointerEvaluator(const void *_rawArgument, ::std::string _message);
       explicit NullPointerEvaluator(const ::std::shared_ptr<void> &_argument);
       explicit NullPointerEvaluator(const ::std::shared_ptr<void> &_argument);
       explicit NullPointerEvaluator(const ::std::shared_ptr<void> &_argument, ::std::string _message);
       explicit NullPointerEvaluator(const ::std::shared_ptr<void> &_argument, ::std::string _message);
       ~NullPointerEvaluator() noexcept override;
       ~NullPointerEvaluator() noexcept override;

+ 53 - 0
include/ls-std/core/evaluator/RawNullPointerArgumentEvaluator.hpp

@@ -0,0 +1,53 @@
+/*
+* Author:          Patrick-Christopher Mattulat
+* Company:         Lynar Studios
+* E-Mail:          webmaster@lynarstudios.com
+* Created:         2023-05-23
+* Changed:         2023-05-24
+*
+* */
+
+#ifndef LS_STD_RAW_NULL_POINTER_ARGUMENT_EVALUATOR_HPP
+#define LS_STD_RAW_NULL_POINTER_ARGUMENT_EVALUATOR_HPP
+
+#include <ls-std/core/exception/IllegalArgumentException.hpp>
+#include <ls-std/core/interface/IEvaluator.hpp>
+#include <ls-std/core/type/RawPointer.hpp>
+#include <string>
+
+namespace ls::std::core
+{
+  template<typename T>
+  class RawNullPointerArgumentEvaluator : public ls::std::core::interface_type::IEvaluator
+  {
+    public:
+
+      explicit RawNullPointerArgumentEvaluator(const ls::std::core::type::RawPointer<T> &_argument) : argument(_argument)
+      {}
+      explicit RawNullPointerArgumentEvaluator(const ls::std::core::type::RawPointer<T> &_argument, const ::std::string &_message) : argument(_argument), message(_message)
+      {}
+      ~RawNullPointerArgumentEvaluator() noexcept override = default;
+
+      void evaluate() override
+      {
+        if (this->argument.get() == nullptr)
+        {
+          if (this->message.empty())
+          {
+            throw ls::std::core::IllegalArgumentException{"passed argument is null!"};
+          }
+          else
+          {
+            throw ls::std::core::IllegalArgumentException{this->message};
+          }
+        }
+      }
+
+    private:
+
+      ls::std::core::type::RawPointer<T> argument{};
+      ::std::string message{};
+  };
+}
+
+#endif

+ 53 - 0
include/ls-std/core/evaluator/RawNullPointerEvaluator.hpp

@@ -0,0 +1,53 @@
+/*
+* Author:          Patrick-Christopher Mattulat
+* Company:         Lynar Studios
+* E-Mail:          webmaster@lynarstudios.com
+* Created:         2023-05-24
+* Changed:         2023-05-24
+*
+* */
+
+#ifndef LS_STD_RAW_NULL_POINTER_EVALUATOR_HPP
+#define LS_STD_RAW_NULL_POINTER_EVALUATOR_HPP
+
+#include <ls-std/core/exception/NullPointerException.hpp>
+#include <ls-std/core/interface/IEvaluator.hpp>
+#include <ls-std/core/type/RawPointer.hpp>
+#include <string>
+
+namespace ls::std::core
+{
+  template<typename T>
+  class RawNullPointerEvaluator : public ls::std::core::interface_type::IEvaluator
+  {
+    public:
+
+      explicit RawNullPointerEvaluator(const ls::std::core::type::RawPointer<T> &_argument) : argument(_argument)
+      {}
+      RawNullPointerEvaluator(const ls::std::core::type::RawPointer<T> &_argument, const ::std::string &_message) : argument(_argument), message(_message)
+      {}
+      ~RawNullPointerEvaluator() noexcept override = default;
+
+      void evaluate() override
+      {
+        if (this->argument.get() == nullptr)
+        {
+          if (this->message.empty())
+          {
+            throw ls::std::core::NullPointerException{"reference in use is null!"};
+          }
+          else
+          {
+            throw ls::std::core::NullPointerException{this->message};
+          }
+        }
+      }
+
+    private:
+
+      ls::std::core::type::RawPointer<T> argument{};
+      ::std::string message{};
+  };
+}
+
+#endif

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2021-05-27
  * Created:         2021-05-27
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       EventNotHandledException();
       EventNotHandledException();
-      explicit EventNotHandledException(::std::string _message);
+      explicit EventNotHandledException(const ::std::string &_message);
       ~EventNotHandledException() noexcept override;
       ~EventNotHandledException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2021-05-27
  * Created:         2021-05-27
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       EventNotSubscribedException();
       EventNotSubscribedException();
-      explicit EventNotSubscribedException(::std::string _message);
+      explicit EventNotSubscribedException(const ::std::string &_message);
       ~EventNotSubscribedException() noexcept override;
       ~EventNotSubscribedException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

+ 8 - 5
include/ls-std/core/exception/Exception.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-22
 * Created:         2023-02-22
-* Changed:         2023-03-28
+* Changed:         2023-05-19
 *
 *
 * */
 * */
 
 
@@ -13,6 +13,7 @@
 #include <exception>
 #include <exception>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 #include <string>
+#include <string_view>
 
 
 namespace ls::std::core
 namespace ls::std::core
 {
 {
@@ -21,17 +22,19 @@ namespace ls::std::core
     public:
     public:
 
 
       explicit Exception(::std::string _name);
       explicit Exception(::std::string _name);
-      ~Exception() noexcept override;
+      ~Exception() noexcept override = 0;
 
 
       [[nodiscard]] ::std::string getName() const;
       [[nodiscard]] ::std::string getName() const;
-      [[nodiscard]] const char *what() const noexcept override = 0;
 
 
     protected:
     protected:
 
 
+      [[nodiscard]] const char *_getIdentifiedMessage(const ::std::string &_defaultMessage) const;
+      void _setMessage(::std::string_view _message);
+
+    private:
+
       ::std::string message{};
       ::std::string message{};
       ::std::string name{};
       ::std::string name{};
-
-      [[nodiscard]] const char *_getIdentifiedMessage(const ::std::string &_defaultMessage) const;
   };
   };
 }
 }
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
  * Created:         2020-08-17
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       FileNotFoundException();
       FileNotFoundException();
-      explicit FileNotFoundException(::std::string _message);
+      explicit FileNotFoundException(const ::std::string &_message);
       ~FileNotFoundException() noexcept override;
       ~FileNotFoundException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
  * Created:         2020-08-15
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       FileOperationException();
       FileOperationException();
-      explicit FileOperationException(::std::string _message);
+      explicit FileOperationException(const ::std::string &_message);
       ~FileOperationException() noexcept override;
       ~FileOperationException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-09
  * Created:         2020-08-09
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       IllegalArgumentException();
       IllegalArgumentException();
-      explicit IllegalArgumentException(::std::string _message);
+      explicit IllegalArgumentException(const ::std::string &_message);
       ~IllegalArgumentException() noexcept override;
       ~IllegalArgumentException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
  * Created:         2020-08-07
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       IllegalArithmeticOperationException();
       IllegalArithmeticOperationException();
-      explicit IllegalArithmeticOperationException(::std::string _message);
+      explicit IllegalArithmeticOperationException(const ::std::string &_message);
       ~IllegalArithmeticOperationException() noexcept override;
       ~IllegalArithmeticOperationException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2021-04-30
  * Created:         2021-04-30
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       IncompleteJsonException();
       IncompleteJsonException();
-      explicit IncompleteJsonException(::std::string _message);
+      explicit IncompleteJsonException(const ::std::string &_message);
       ~IncompleteJsonException() noexcept override;
       ~IncompleteJsonException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-10
 * Created:         2023-02-10
-* Changed:         2023-02-22
+* Changed:         2023-05-19
 *
 *
 * */
 * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       IndexOutOfBoundsException();
       IndexOutOfBoundsException();
-      explicit IndexOutOfBoundsException(::std::string _message);
+      explicit IndexOutOfBoundsException(const ::std::string &_message);
       ~IndexOutOfBoundsException() noexcept override;
       ~IndexOutOfBoundsException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-03-27
 * Created:         2023-03-27
-* Changed:         2023-03-27
+* Changed:         2023-05-19
 *
 *
 * */
 * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       NotImplementedException();
       NotImplementedException();
-      explicit NotImplementedException(::std::string _message);
+      explicit NotImplementedException(const ::std::string &_message);
       ~NotImplementedException() noexcept override;
       ~NotImplementedException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-06
  * Created:         2020-11-06
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -21,7 +21,7 @@ namespace ls::std::core
     public:
     public:
 
 
       NullPointerException();
       NullPointerException();
-      explicit NullPointerException(::std::string _message);
+      explicit NullPointerException(const ::std::string &_message);
       ~NullPointerException() noexcept override;
       ~NullPointerException() noexcept override;
 
 
       [[nodiscard]] const char *what() const noexcept override;
       [[nodiscard]] const char *what() const noexcept override;

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
  * Created:         2020-08-07
- * Changed:         2023-02-05
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -22,7 +22,7 @@ namespace ls::std::core::interface_type
       IBoxing();
       IBoxing();
       virtual ~IBoxing();
       virtual ~IBoxing();
 
 
-      virtual void parse(::std::string _parseText) = 0;
+      virtual void parse(const ::std::string &_parseText) = 0;
       virtual ::std::string toString() = 0;
       virtual ::std::string toString() = 0;
   };
   };
 }
 }

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

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-04-07
 * Created:         2023-04-07
-* Changed:         2023-04-11
+* Changed:         2023-05-16
 *
 *
 * */
 * */
 
 
@@ -49,7 +49,7 @@ namespace ls::std::core::experimental
       void _callIntMethod(const ::std::string &_methodIdentifier, ls::std::core::experimental::JniReturnValue &_returnValue);
       void _callIntMethod(const ::std::string &_methodIdentifier, ls::std::core::experimental::JniReturnValue &_returnValue);
       void _callLongMethod(const ::std::string &_methodIdentifier, ls::std::core::experimental::JniReturnValue &_returnValue);
       void _callLongMethod(const ::std::string &_methodIdentifier, ls::std::core::experimental::JniReturnValue &_returnValue);
       void _callShortMethod(const ::std::string &_methodIdentifier, ls::std::core::experimental::JniReturnValue &_returnValue);
       void _callShortMethod(const ::std::string &_methodIdentifier, ls::std::core::experimental::JniReturnValue &_returnValue);
-      void _createJniApi();
+      void _createJniApi() const;
       [[nodiscard]] bool _hasMethod(const ::std::string &_methodIdentifier);
       [[nodiscard]] bool _hasMethod(const ::std::string &_methodIdentifier);
   };
   };
 }
 }

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

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-04-07
 * Created:         2023-04-07
-* Changed:         2023-04-10
+* Changed:         2023-05-16
 *
 *
 * */
 * */
 
 
@@ -27,7 +27,7 @@ namespace ls::std::core::experimental
 
 
       [[nodiscard]] JNIEnv *getJavaEnvironment();
       [[nodiscard]] JNIEnv *getJavaEnvironment();
       [[nodiscard]] jobject getJavaObject();
       [[nodiscard]] jobject getJavaObject();
-      [[nodiscard]] ::std::shared_ptr<ls::std::core::experimental::interface_type::IJniApi> getJniApi();
+      [[nodiscard]] ::std::shared_ptr<ls::std::core::experimental::interface_type::IJniApi> getJniApi() const;
       void setJavaEnvironment(JNIEnv *_environment);
       void setJavaEnvironment(JNIEnv *_environment);
       void setJavaObject(jobject _javaObject);
       void setJavaObject(jobject _javaObject);
       void setJniApi(const ::std::shared_ptr<ls::std::core::experimental::interface_type::IJniApi> &_jniApi);
       void setJniApi(const ::std::shared_ptr<ls::std::core::experimental::interface_type::IJniApi> &_jniApi);

+ 6 - 5
include/ls-std/core/jni/JniMethod.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-04-08
 * Created:         2023-04-08
-* Changed:         2023-04-10
+* Changed:         2023-05-16
 *
 *
 * */
 * */
 
 
@@ -13,6 +13,7 @@
 #include <jni.h>
 #include <jni.h>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 #include <string>
+#include <string_view>
 
 
 namespace ls::std::core::experimental
 namespace ls::std::core::experimental
 {
 {
@@ -24,11 +25,11 @@ namespace ls::std::core::experimental
       ~JniMethod();
       ~JniMethod();
 
 
       [[nodiscard]] jmethodID getMethodId();
       [[nodiscard]] jmethodID getMethodId();
-      [[nodiscard]] ::std::string getMethodIdentifier();
-      [[nodiscard]] ::std::string getMethodSignature();
+      [[nodiscard]] ::std::string getMethodIdentifier() const;
+      [[nodiscard]] ::std::string getMethodSignature() const;
       void setMethodId(jmethodID _methodId);
       void setMethodId(jmethodID _methodId);
-      void setMethodIdentifier(const ::std::string &_methodIdentifier);
-      void setMethodSignature(const ::std::string &_methodSignature);
+      void setMethodIdentifier(::std::string_view _methodIdentifier);
+      void setMethodSignature(::std::string_view _methodSignature);
 
 
     private:
     private:
 
 

+ 3 - 2
include/ls-std/core/type/EventTypes.hpp

@@ -3,13 +3,14 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-26
  * Created:         2020-11-26
- * Changed:         2023-02-08
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
 #ifndef LS_STD_EVENT_TYPES_HPP
 #ifndef LS_STD_EVENT_TYPES_HPP
 #define LS_STD_EVENT_TYPES_HPP
 #define LS_STD_EVENT_TYPES_HPP
 
 
+#include <functional>
 #include <map>
 #include <map>
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
@@ -20,7 +21,7 @@ namespace ls::std::core::type
   using event_parameter_id = ::std::string;
   using event_parameter_id = ::std::string;
   using event_parameter_value = ::std::string;
   using event_parameter_value = ::std::string;
   using event_parameter = ::std::pair<::std::string, ::std::string>;
   using event_parameter = ::std::pair<::std::string, ::std::string>;
-  using event_parameter_list = ::std::map<ls::std::core::type::event_parameter_id, ls::std::core::type::event_parameter_value>;
+  using event_parameter_list = ::std::map<ls::std::core::type::event_parameter_id, ls::std::core::type::event_parameter_value, ::std::less<>>;
 }
 }
 
 
 #endif
 #endif

+ 35 - 0
include/ls-std/core/type/RawPointer.hpp

@@ -0,0 +1,35 @@
+/*
+* Author:          Patrick-Christopher Mattulat
+* Company:         Lynar Studios
+* E-Mail:          webmaster@lynarstudios.com
+* Created:         2023-05-23
+* Changed:         2023-05-23
+*
+* */
+
+#ifndef LS_STD_RAW_POINTER_HPP
+#define LS_STD_RAW_POINTER_HPP
+
+namespace ls::std::core::type
+{
+  template<typename T>
+  class RawPointer
+  {
+    public:
+
+      explicit RawPointer(T *_pointer) : pointer(_pointer)
+      {}
+      ~RawPointer() = default;
+
+      [[nodiscard]] T *get() const
+      {
+        return this->pointer;
+      }
+
+    private:
+
+      T *pointer{};
+  };
+}
+
+#endif

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
  * Created:         2020-08-07
- * Changed:         2023-02-23
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -18,7 +18,7 @@ namespace ls::std::core::type
   using byte_type = char;
   using byte_type = char;
   using byte_field = ::std::string;
   using byte_field = ::std::string;
   using long_type = long long int;
   using long_type = long long int;
-  using version_type = uint16_t;
+  using version_type = int;
   using json = nlohmann::json;
   using json = nlohmann::json;
 }
 }
 
 

+ 8 - 7
include/ls-std/encoding/Base64.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-01-03
  * Created:         2022-01-03
- * Changed:         2023-02-22
+ * Changed:         2023-05-15
  *
  *
  * */
  * */
 
 
@@ -13,6 +13,7 @@
 #include <bitset>
 #include <bitset>
 #include <ls-std/core/interface/IEncoding.hpp>
 #include <ls-std/core/interface/IEncoding.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <string_view>
 #include <unordered_map>
 #include <unordered_map>
 #include <vector>
 #include <vector>
 
 
@@ -33,17 +34,17 @@ namespace ls::std::encoding
     private:
     private:
 
 
       [[nodiscard]] static ::std::string _applyEndingRule(::std::string _encodedString, size_t _sequenceSize);
       [[nodiscard]] static ::std::string _applyEndingRule(::std::string _encodedString, size_t _sequenceSize);
-      [[nodiscard]] static ::std::string _decodeByteQuadruple(const ::std::string &_quadruple);
-      [[nodiscard]] static ::std::string _encodeByteTriple(const ::std::string &_byteTriple);
+      [[nodiscard]] static ::std::string _decodeByteQuadruple(::std::string_view _quadruple);
+      [[nodiscard]] static ::std::string _encodeByteTriple(::std::string_view _byteTriple);
       [[nodiscard]] static uint32_t _extractBitSequence(uint32_t _bitMask, uint32_t _bitStorage);
       [[nodiscard]] static uint32_t _extractBitSequence(uint32_t _bitMask, uint32_t _bitStorage);
       [[nodiscard]] static uint32_t _generateBitMask(uint32_t _maskValue, uint8_t _shiftValue);
       [[nodiscard]] static uint32_t _generateBitMask(uint32_t _maskValue, uint8_t _shiftValue);
       [[nodiscard]] static ::std::unordered_map<char, uint8_t> _getDecodingMap();
       [[nodiscard]] static ::std::unordered_map<char, uint8_t> _getDecodingMap();
       [[nodiscard]] static ::std::unordered_map<uint8_t, char> _getEncodingMap();
       [[nodiscard]] static ::std::unordered_map<uint8_t, char> _getEncodingMap();
-      [[nodiscard]] static ::std::string _getNextByteQuadruple(const ::std::string &_sequence, size_t _index);
-      [[nodiscard]] static ::std::string _getNextByteTriple(const ::std::string &_sequence, size_t _index);
+      [[nodiscard]] static ::std::string_view _getNextByteQuadruple(::std::string_view _sequence, size_t _index);
+      [[nodiscard]] static ::std::string_view _getNextByteTriple(::std::string_view _sequence, size_t _index);
       static void _mergeBitSequence(uint32_t &_bitStorage, const uint32_t &_bitMask);
       static void _mergeBitSequence(uint32_t &_bitStorage, const uint32_t &_bitMask);
-      [[nodiscard]] static uint32_t _toDecodingBitStorage(const ::std::string &_quadruple);
-      [[nodiscard]] static uint32_t _toEncodingBitStorage(const ::std::string &_triple);
+      [[nodiscard]] static uint32_t _toDecodingBitStorage(::std::string_view _quadruple);
+      [[nodiscard]] static uint32_t _toEncodingBitStorage(::std::string_view _triple);
   };
   };
 }
 }
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-26
  * Created:         2020-11-26
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -29,8 +29,8 @@ namespace ls::std::event
 
 
       bool addParameter(const ls::std::core::type::event_parameter &_eventParameter); // nodiscard is optional here
       bool addParameter(const ls::std::core::type::event_parameter &_eventParameter); // nodiscard is optional here
       void clearParameterList();
       void clearParameterList();
-      [[nodiscard]] ls::std::core::type::event_id getId();
-      [[nodiscard]] ls::std::core::type::event_parameter_list getParameterList();
+      [[nodiscard]] ls::std::core::type::event_id getId() const;
+      [[nodiscard]] ls::std::core::type::event_parameter_list getParameterList() const;
       bool removeParameter(const ls::std::core::type::event_parameter_id &_id); // nodiscard is optional here
       bool removeParameter(const ls::std::core::type::event_parameter_id &_id); // nodiscard is optional here
       void setId(const ls::std::core::type::event_id &_id);
       void setId(const ls::std::core::type::event_id &_id);
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
  * Created:         2020-11-27
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -27,7 +27,7 @@ namespace ls::std::event
       explicit EventHandler(const ls::std::core::type::event_id &_id);
       explicit EventHandler(const ls::std::core::type::event_id &_id);
       ~EventHandler() noexcept override;
       ~EventHandler() noexcept override;
 
 
-      [[nodiscard]] ls::std::core::type::event_id getId();
+      [[nodiscard]] ls::std::core::type::event_id getId() const;
 
 
     private:
     private:
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
  * Created:         2020-11-27
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -35,13 +35,13 @@ namespace ls::std::event
       // additional functionality
       // additional functionality
 
 
       bool addEventHandler(const ::std::shared_ptr<ls::std::event::EventHandler> &_eventHandler); // nodiscard is optional here
       bool addEventHandler(const ::std::shared_ptr<ls::std::event::EventHandler> &_eventHandler); // nodiscard is optional here
-      void fire(ls::std::event::Event _event);
+      void fire(const ls::std::event::Event &_event);
       [[nodiscard]] bool hasEventHandler(const ls::std::core::type::event_id &_id);
       [[nodiscard]] bool hasEventHandler(const ls::std::core::type::event_id &_id);
       bool removeEventHandler(const ::std::shared_ptr<ls::std::event::EventHandler> &_eventHandler); // nodiscard is optional here
       bool removeEventHandler(const ::std::shared_ptr<ls::std::event::EventHandler> &_eventHandler); // nodiscard is optional here
 
 
     private:
     private:
 
 
-      ::std::map<ls::std::core::type::event_id, ::std::shared_ptr<ls::std::event::EventHandler>> eventHandlers{};
+      ::std::map<ls::std::core::type::event_id, ::std::shared_ptr<ls::std::event::EventHandler>, ::std::less<>> eventHandlers{};
 
 
       [[nodiscard]] bool _hasEventHandler(const ls::std::core::type::event_id &_id);
       [[nodiscard]] bool _hasEventHandler(const ls::std::core::type::event_id &_id);
       [[nodiscard]] bool _removeEventHandler(const ::std::shared_ptr<ls::std::event::EventHandler> &_eventHandler);
       [[nodiscard]] bool _removeEventHandler(const ::std::shared_ptr<ls::std::event::EventHandler> &_eventHandler);

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-14
  * Created:         2020-11-14
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -27,9 +27,9 @@ namespace ls::std::event
 
 
       bool addListener(const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener); // nodiscard is optional here
       bool addListener(const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener); // nodiscard is optional here
       void clear();
       void clear();
-      [[nodiscard]] ::std::list<::std::shared_ptr<ls::std::core::interface_type::IListener>> getListeners();
+      [[nodiscard]] ::std::list<::std::shared_ptr<ls::std::core::interface_type::IListener>> getListeners() const;
       bool removeListener(const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener); // nodiscard is optional here
       bool removeListener(const ::std::shared_ptr<ls::std::core::interface_type::IListener> &_listener); // nodiscard is optional here
-      void tell(const ls::std::core::Class &_info);
+      void tell(const ls::std::core::Class &_info) const;
 
 
     private:
     private:
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-07
  * Created:         2020-12-07
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -33,7 +33,7 @@ namespace ls::std::event
 
 
       // additional functionality
       // additional functionality
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::event::Event> getValue();
+      [[nodiscard]] ::std::shared_ptr<ls::std::event::Event> getValue() const;
       void setValue(const ::std::shared_ptr<ls::std::event::Event> &_value);
       void setValue(const ::std::shared_ptr<ls::std::event::Event> &_value);
 
 
     private:
     private:

+ 22 - 22
include/ls-std/io/File.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
  * Created:         2020-08-15
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -34,29 +34,29 @@ namespace ls::std::io
 
 
       // comparison operators
       // comparison operators
 
 
-      bool operator==(ls::std::io::File &_file);
-      bool operator!=(ls::std::io::File &_file);
+      bool operator==(const ls::std::io::File &_file) const;
+      bool operator!=(const ls::std::io::File &_file) const;
 
 
       // additional functionality
       // additional functionality
 
 
-      [[nodiscard]] bool canExecute();
-      [[nodiscard]] bool canRead();
-      [[nodiscard]] bool canWrite();
-      void createNewFile();
-      [[nodiscard]] bool exists();
-      [[nodiscard]] ::std::string getAbsoluteFilePath();
-      [[nodiscard]] ::std::string getName();
-      [[nodiscard]] ::std::string getParent();
-      [[nodiscard]] long getSize();
+      [[nodiscard]] bool canExecute() const;
+      [[nodiscard]] bool canRead() const;
+      [[nodiscard]] bool canWrite() const;
+      void createNewFile() const;
+      [[nodiscard]] bool exists() const;
+      [[nodiscard]] ::std::string getAbsoluteFilePath() const;
+      [[nodiscard]] ::std::string getName() const;
+      [[nodiscard]] ::std::string getParent() const;
+      [[nodiscard]] long getSize() const;
       [[nodiscard]] static ::std::string getWorkingDirectory();
       [[nodiscard]] static ::std::string getWorkingDirectory();
-      [[nodiscard]] bool isDirectory();
-      [[nodiscard]] bool isFile();
-      [[nodiscard]] time_t lastModified();
-      [[nodiscard]] ::std::list<::std::string> list();
-      [[nodiscard]] ::std::list<::std::string> listFiles();
-      void makeDirectory();
-      void makeDirectories();
-      void remove();
+      [[nodiscard]] bool isDirectory() const;
+      [[nodiscard]] bool isFile() const;
+      [[nodiscard]] time_t lastModified() const;
+      [[nodiscard]] ::std::list<::std::string> list() const;
+      [[nodiscard]] ::std::list<::std::string> listFiles() const;
+      void makeDirectory() const;
+      void makeDirectories() const;
+      void remove() const;
       bool renameTo(const ::std::string &_newName); // nodiscard is optional here
       bool renameTo(const ::std::string &_newName); // nodiscard is optional here
       void reset(const ::std::string &_newPath);
       void reset(const ::std::string &_newPath);
 
 
@@ -65,12 +65,12 @@ namespace ls::std::io
       ::std::string absoluteFilePath{};
       ::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);
+      static void _addToFileListUnix(const ::std::string &_path, bool _withDirectories, const dirent *directoryEntity, ::std::list<::std::string> &_list);
 #endif
 #endif
 #ifdef _WIN32
 #ifdef _WIN32
       static void _addToFileListWindows(const ::std::string &_path, bool _withDirectories, WIN32_FIND_DATA _data, ::std::list<::std::string> &_list);
       static void _addToFileListWindows(const ::std::string &_path, bool _withDirectories, WIN32_FIND_DATA _data, ::std::list<::std::string> &_list);
 #endif
 #endif
-      [[nodiscard]] static bool _equals(ls::std::io::File &_file, ls::std::io::File &_foreignFile);
+      [[nodiscard]] static bool _equals(const ls::std::io::File &_file, const ls::std::io::File &_foreignFile);
       [[nodiscard]] static bool _exists(const ::std::string &_path);
       [[nodiscard]] static bool _exists(const ::std::string &_path);
       [[nodiscard]] static ::std::string _getParent(const ::std::string &_path);
       [[nodiscard]] static ::std::string _getParent(const ::std::string &_path);
 #if defined(unix) || defined(__APPLE__)
 #if defined(unix) || defined(__APPLE__)

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
  * Created:         2020-08-20
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -22,8 +22,8 @@ namespace ls::std::io
   {
   {
     public:
     public:
 
 
-      explicit FileOutputStream(ls::std::io::File &_file);
-      explicit FileOutputStream(ls::std::io::File &_file, bool _append);
+      explicit FileOutputStream(const ls::std::io::File &_file);
+      explicit FileOutputStream(const ls::std::io::File &_file, bool _append);
       ~FileOutputStream() noexcept override;
       ~FileOutputStream() noexcept override;
 
 
       void close();
       void close();

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
  * Created:         2020-08-17
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -21,11 +21,11 @@ namespace ls::std::io
   {
   {
     public:
     public:
 
 
-      explicit FileReader(ls::std::io::File &_file);
+      explicit FileReader(const ls::std::io::File &_file);
       ~FileReader() noexcept override;
       ~FileReader() noexcept override;
 
 
       [[nodiscard]] ls::std::core::type::byte_field read() override;
       [[nodiscard]] ls::std::core::type::byte_field read() override;
-      void reset(ls::std::io::File &_file);
+      void reset(const ls::std::io::File &_file);
 
 
     private:
     private:
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
  * Created:         2020-08-17
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -21,10 +21,10 @@ namespace ls::std::io
   {
   {
     public:
     public:
 
 
-      explicit FileWriter(ls::std::io::File &_file);
+      explicit FileWriter(const ls::std::io::File &_file);
       ~FileWriter() noexcept override;
       ~FileWriter() noexcept override;
 
 
-      void reset(ls::std::io::File &_file);
+      void reset(const ls::std::io::File &_file);
       bool write(const ls::std::core::type::byte_field &_data) override; // nodiscard is optional here
       bool write(const ls::std::core::type::byte_field &_data) override; // nodiscard is optional here
 
 
     private:
     private:

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-19
  * Created:         2020-08-19
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -25,7 +25,7 @@ namespace ls::std::io
       explicit StorableFile(const ::std::string &_path);
       explicit StorableFile(const ::std::string &_path);
       ~StorableFile() noexcept override;
       ~StorableFile() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::File> getFile();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::File> getFile() const;
       [[nodiscard]] ls::std::core::type::byte_field load() override;
       [[nodiscard]] ls::std::core::type::byte_field load() override;
       void reset(const ::std::string &_path);
       void reset(const ::std::string &_path);
       void save(const ls::std::core::type::byte_field &_data) override;
       void save(const ls::std::core::type::byte_field &_data) override;

+ 11 - 10
include/ls-std/io/logging/LogLevel.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
  * Created:         2020-08-20
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -13,6 +13,7 @@
 #include "LogLevelValue.hpp"
 #include "LogLevelValue.hpp"
 #include <ls-std/core/Class.hpp>
 #include <ls-std/core/Class.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <string_view>
 #include <unordered_map>
 #include <unordered_map>
 
 
 namespace ls::std::io
 namespace ls::std::io
@@ -24,27 +25,27 @@ namespace ls::std::io
       explicit LogLevel(const ls::std::io::LogLevelValue &_value);
       explicit LogLevel(const ls::std::io::LogLevelValue &_value);
       LogLevel();
       LogLevel();
       ~LogLevel() noexcept override;
       ~LogLevel() noexcept override;
-      ;
+
       ls::std::io::LogLevel &operator=(const ls::std::io::LogLevelValue &_value);
       ls::std::io::LogLevel &operator=(const ls::std::io::LogLevelValue &_value);
-      bool operator<(const ls::std::io::LogLevelValue &_value);
-      bool operator<=(const ls::std::io::LogLevelValue &_value);
-      bool operator>(const ls::std::io::LogLevelValue &_value);
-      bool operator>=(const ls::std::io::LogLevelValue &_value);
-      bool operator==(const ls::std::io::LogLevelValue &_value);
+      bool operator<(const ls::std::io::LogLevelValue &_value) const;
+      bool operator<=(const ls::std::io::LogLevelValue &_value) const;
+      bool operator>(const ls::std::io::LogLevelValue &_value) const;
+      bool operator>=(const ls::std::io::LogLevelValue &_value) const;
+      bool operator==(const ls::std::io::LogLevelValue &_value) const;
 
 
-      [[nodiscard]] ls::std::io::LogLevelValue getValue();
+      [[nodiscard]] ls::std::io::LogLevelValue getValue() const;
       void setLogLevel(const ls::std::io::LogLevelValue &_value);
       void setLogLevel(const ls::std::io::LogLevelValue &_value);
       void setLogLevel(const ::std::string &_value);
       void setLogLevel(const ::std::string &_value);
       [[nodiscard]] ::std::string toString() const;
       [[nodiscard]] ::std::string toString() const;
 
 
     private:
     private:
 
 
-      ::std::unordered_map<uint8_t, ::std::string> level{};
+      ::std::unordered_map<ls::std::io::LogLevelValue, ::std::string> level{};
       ls::std::io::LogLevelValue value{};
       ls::std::io::LogLevelValue value{};
 
 
       [[nodiscard]] ls::std::io::LogLevelValue _getValueFromString(const ::std::string &_value);
       [[nodiscard]] ls::std::io::LogLevelValue _getValueFromString(const ::std::string &_value);
       void _init();
       void _init();
-      [[nodiscard]] bool _isValidLogLevelString(const ::std::string &_value);
+      [[nodiscard]] bool _isValidLogLevelString(::std::string_view _value) const;
   };
   };
 }
 }
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
  * Created:         2020-08-20
- * Changed:         2023-02-04
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -12,7 +12,7 @@
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
-  enum LogLevelValue
+  enum class LogLevelValue
   {
   {
     FATAL = 0,
     FATAL = 0,
     ERR,
     ERR,

+ 12 - 11
include/ls-std/io/logging/Logger.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
  * Created:         2020-08-20
- * Changed:         2023-04-12
+ * Changed:         2023-05-18
  *
  *
  * */
  * */
 
 
@@ -17,6 +17,7 @@
 #include <ls-std/io/FileOutputStream.hpp>
 #include <ls-std/io/FileOutputStream.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <string>
 #include <string>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -27,18 +28,18 @@ namespace ls::std::io
       explicit Logger(const ::std::shared_ptr<ls::std::core::interface_type::IWriter> &_writer);
       explicit Logger(const ::std::shared_ptr<ls::std::core::interface_type::IWriter> &_writer);
       ~Logger() noexcept override;
       ~Logger() noexcept override;
 
 
-      void debug(const ls::std::core::type::byte_type *_data);
-      void error(const ls::std::core::type::byte_type *_data);
-      void fatal(const ls::std::core::type::byte_type *_data);
-      [[nodiscard]] ls::std::io::LogLevel getLogLevel();
+      void debug(const ls::std::core::type::byte_type *_data) const;
+      void error(const ls::std::core::type::byte_type *_data) const;
+      void fatal(const ls::std::core::type::byte_type *_data) const;
+      [[nodiscard]] ls::std::io::LogLevel getLogLevel() const;
       void hideLogLevel();
       void hideLogLevel();
       void hideTimestamp();
       void hideTimestamp();
-      void info(const ls::std::core::type::byte_type *_data);
+      void info(const ls::std::core::type::byte_type *_data) const;
       void setLogLevel(const ls::std::io::LogLevelValue &_logLevelValue);
       void setLogLevel(const ls::std::io::LogLevelValue &_logLevelValue);
       void showLogLevel();
       void showLogLevel();
       void showTimestamp();
       void showTimestamp();
-      void trace(const ls::std::core::type::byte_type *_data);
-      void warn(const ls::std::core::type::byte_type *_data);
+      void trace(const ls::std::core::type::byte_type *_data) const;
+      void warn(const ls::std::core::type::byte_type *_data) const;
 
 
     private:
     private:
 
 
@@ -49,11 +50,11 @@ namespace ls::std::io
 
 
       void _assignWriter(const ::std::shared_ptr<ls::std::core::interface_type::IWriter> &_writer);
       void _assignWriter(const ::std::shared_ptr<ls::std::core::interface_type::IWriter> &_writer);
       [[nodiscard]] static ::std::string _buildCharacterChain(size_t _amount);
       [[nodiscard]] static ::std::string _buildCharacterChain(size_t _amount);
-      [[nodiscard]] static ::std::string _createFillContent(const ::std::string &_text);
-      [[nodiscard]] static ::std::string _generateTimeString(tm *_localTime);
+      [[nodiscard]] static ::std::string _createFillContent(::std::string_view _text);
+      [[nodiscard]] static ::std::string _generateTimeString(const tm *_localTime);
       [[nodiscard]] ::std::string _getLogLevelString(const ls::std::io::LogLevel &_logLevel) const;
       [[nodiscard]] ::std::string _getLogLevelString(const ls::std::io::LogLevel &_logLevel) const;
       [[nodiscard]] ::std::string _getTimestampString() const;
       [[nodiscard]] ::std::string _getTimestampString() const;
-      void _log(const ls::std::core::type::byte_type *_data, const ls::std::io::LogLevel &_logLevel);
+      void _log(const ls::std::core::type::byte_type *_data, const ls::std::io::LogLevel &_logLevel) const;
       [[nodiscard]] static ::std::string _padRight(const ::std::string &_text);
       [[nodiscard]] static ::std::string _padRight(const ::std::string &_text);
   };
   };
 }
 }

+ 2 - 2
include/ls-std/io/section-pair/SectionPairRowEnumType.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-08
 * Created:         2023-02-08
-* Changed:         2023-02-10
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -12,7 +12,7 @@
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
-  enum SectionPairRowEnumType
+  enum class SectionPairRowEnumType
   {
   {
     SECTION_PAIR_ROW_NOT_IMPLEMENTED = 0,
     SECTION_PAIR_ROW_NOT_IMPLEMENTED = 0,
     SECTION_PAIR_ROW_LIST_VALUE,
     SECTION_PAIR_ROW_LIST_VALUE,

+ 9 - 8
include/ls-std/io/section-pair/model/SectionPairDocument.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-15
 * Created:         2023-02-15
-* Changed:         2023-02-23
+* Changed:         2023-05-16
 *
 *
 * */
 * */
 
 
@@ -16,6 +16,7 @@
 #include <ls-std/io/section-pair/type/SectionPairDocumentTypes.hpp>
 #include <ls-std/io/section-pair/type/SectionPairDocumentTypes.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -28,14 +29,14 @@ namespace ls::std::io
 
 
       void add(const ls::std::io::section_pair_document_section_list_element &_section);
       void add(const ls::std::io::section_pair_document_section_list_element &_section);
       void clear();
       void clear();
-      [[nodiscard]] ls::std::io::section_pair_document_section_list_element get(size_t _index);
-      [[nodiscard]] ls::std::io::section_pair_document_section_list_element get(const ls::std::io::section_pair_identifier &_sectionId);
-      [[nodiscard]] size_t getAmountOfSections();
-      [[nodiscard]] ::std::string getHeader();
-      [[nodiscard]] ls::std::io::section_pair_document_section_list getSectionList();
+      [[nodiscard]] ls::std::io::section_pair_document_section_list_element get(size_t _index) const;
+      [[nodiscard]] ls::std::io::section_pair_document_section_list_element get(const ls::std::io::section_pair_identifier &_sectionId) const;
+      [[nodiscard]] size_t getAmountOfSections() const;
+      [[nodiscard]] ::std::string getHeader() const;
+      [[nodiscard]] ls::std::io::section_pair_document_section_list getSectionList() const;
       [[nodiscard]] bool hasSection(const ls::std::io::section_pair_identifier &_sectionId);
       [[nodiscard]] bool hasSection(const ls::std::io::section_pair_identifier &_sectionId);
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
-      void reserveNewLine(const ::std::string &_reservedNewLine);
+      void reserveNewLine(::std::string_view _reservedNewLine);
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 
     private:
     private:
@@ -47,7 +48,7 @@ namespace ls::std::io
 
 
       void _checkSectionExistence(const ls::std::io::section_pair_identifier &_sectionId);
       void _checkSectionExistence(const ls::std::io::section_pair_identifier &_sectionId);
       void _createSerializable();
       void _createSerializable();
-      [[nodiscard]] ls::std::io::section_pair_document_section_list_element _get(const ls::std::io::section_pair_identifier &_sectionId);
+      [[nodiscard]] ls::std::io::section_pair_document_section_list_element _get(const ls::std::io::section_pair_identifier &_sectionId) const;
       [[nodiscard]] bool _hasSection(const ls::std::io::section_pair_identifier &_identifier);
       [[nodiscard]] bool _hasSection(const ls::std::io::section_pair_identifier &_identifier);
   };
   };
 }
 }

+ 7 - 6
include/ls-std/io/section-pair/model/SectionPairRow.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-08
 * Created:         2023-02-08
-* Changed:         2023-02-22
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -18,6 +18,7 @@
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
 #include <string>
 #include <string>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -28,12 +29,12 @@ namespace ls::std::io
       explicit SectionPairRow(const ls::std::io::section_pair_identifier &_key, const ls::std::io::SectionPairRowEnumType &_type);
       explicit SectionPairRow(const ls::std::io::section_pair_identifier &_key, const ls::std::io::SectionPairRowEnumType &_type);
       ~SectionPairRow() noexcept override;
       ~SectionPairRow() noexcept override;
 
 
-      [[nodiscard]] ls::std::io::section_pair_identifier getKey();
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::SectionPairRowValue> getValue();
-      [[nodiscard]] bool isList();
-      [[nodiscard]] bool isSingleValue();
+      [[nodiscard]] ls::std::io::section_pair_identifier getKey() const;
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::SectionPairRowValue> getValue() const;
+      [[nodiscard]] bool isList() const;
+      [[nodiscard]] bool isSingleValue() const;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
-      void reserveNewLine(const ::std::string &_reservedNewLine);
+      void reserveNewLine(::std::string_view _reservedNewLine);
       void setKey(const ls::std::io::section_pair_identifier &_key);
       void setKey(const ls::std::io::section_pair_identifier &_key);
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 

+ 4 - 4
include/ls-std/io/section-pair/model/SectionPairRowListValue.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-10
 * Created:         2023-02-10
-* Changed:         2023-02-22
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -27,9 +27,9 @@ namespace ls::std::io
 
 
       void add(const ls::std::io::section_pair_row_value &_value);
       void add(const ls::std::io::section_pair_row_value &_value);
       void clear();
       void clear();
-      [[nodiscard]] ls::std::io::section_pair_row_value get(size_t _index);
-      [[nodiscard]] ::std::list<ls::std::io::section_pair_row_value> getList();
-      [[nodiscard]] size_t getSize();
+      [[nodiscard]] ls::std::io::section_pair_row_value get(size_t _index) const;
+      [[nodiscard]] ::std::list<ls::std::io::section_pair_row_value> getList() const;
+      [[nodiscard]] size_t getSize() const;
       [[nodiscard]] ls::std::io::SectionPairRowEnumType getType() override;
       [[nodiscard]] ls::std::io::SectionPairRowEnumType getType() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;

+ 2 - 2
include/ls-std/io/section-pair/model/SectionPairRowSingleValue.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-10
 * Created:         2023-02-10
-* Changed:         2023-02-22
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -26,7 +26,7 @@ namespace ls::std::io
       explicit SectionPairRowSingleValue(const ls::std::io::section_pair_row_value &_value);
       explicit SectionPairRowSingleValue(const ls::std::io::section_pair_row_value &_value);
       ~SectionPairRowSingleValue() noexcept override;
       ~SectionPairRowSingleValue() noexcept override;
 
 
-      [[nodiscard]] ls::std::io::section_pair_row_value get();
+      [[nodiscard]] ls::std::io::section_pair_row_value get() const;
       [[nodiscard]] ls::std::io::SectionPairRowEnumType getType() override;
       [[nodiscard]] ls::std::io::SectionPairRowEnumType getType() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       void set(const ls::std::io::section_pair_row_value &_value);
       void set(const ls::std::io::section_pair_row_value &_value);

+ 8 - 2
include/ls-std/io/section-pair/model/SectionPairRowValue.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-10
 * Created:         2023-02-10
-* Changed:         2023-02-22
+* Changed:         2023-05-22
 *
 *
 * */
 * */
 
 
@@ -13,6 +13,7 @@
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/io/section-pair/SectionPairRowEnumType.hpp>
 #include <ls-std/io/section-pair/SectionPairRowEnumType.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -25,11 +26,16 @@ namespace ls::std::io
 
 
       virtual ls::std::io::SectionPairRowEnumType getType() = 0;
       virtual ls::std::io::SectionPairRowEnumType getType() = 0;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
-      void reserveNewLine(const ::std::string &_reservedNewLine);
+      void reserveNewLine(::std::string_view _reservedNewLine);
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 
     protected:
     protected:
 
 
+      [[nodiscard]] ::std::string _getReservedNewLine() const;
+      [[nodiscard]] ls::std::io::SectionPairRowEnumType _getType() const;
+
+    private:
+
       ::std::string reservedNewLine{};
       ::std::string reservedNewLine{};
       ls::std::io::SectionPairRowEnumType type{};
       ls::std::io::SectionPairRowEnumType type{};
   };
   };

+ 9 - 8
include/ls-std/io/section-pair/model/SectionPairSection.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-13
 * Created:         2023-02-13
-* Changed:         2023-02-23
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -18,6 +18,7 @@
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
 #include <string>
 #include <string>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -30,14 +31,14 @@ namespace ls::std::io
 
 
       void add(const ls::std::io::section_pair_row_list_element &_row);
       void add(const ls::std::io::section_pair_row_list_element &_row);
       void clear();
       void clear();
-      [[nodiscard]] ls::std::io::section_pair_row_list_element get(size_t _index);
-      [[nodiscard]] ls::std::io::section_pair_row_list_element get(const ls::std::io::section_pair_identifier &_key);
-      [[nodiscard]] ls::std::io::section_pair_row_list getList();
-      [[nodiscard]] size_t getRowAmount();
-      [[nodiscard]] ls::std::io::section_pair_identifier getSectionId();
+      [[nodiscard]] ls::std::io::section_pair_row_list_element get(size_t _index) const;
+      [[nodiscard]] ls::std::io::section_pair_row_list_element get(const ls::std::io::section_pair_identifier &_key) const;
+      [[nodiscard]] ls::std::io::section_pair_row_list getList() const;
+      [[nodiscard]] size_t getRowAmount() const;
+      [[nodiscard]] ls::std::io::section_pair_identifier getSectionId() const;
       [[nodiscard]] bool hasRow(const ls::std::io::section_pair_identifier &_key);
       [[nodiscard]] bool hasRow(const ls::std::io::section_pair_identifier &_key);
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
-      void reserveNewLine(const ::std::string &_reservedNewLine);
+      void reserveNewLine(::std::string_view _reservedNewLine);
       void setSectionId(const ls::std::io::section_pair_identifier &_sectionId);
       void setSectionId(const ls::std::io::section_pair_identifier &_sectionId);
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 
@@ -49,7 +50,7 @@ namespace ls::std::io
       ::std::shared_ptr<ls::std::core::interface_type::ISerializable> serializable{};
       ::std::shared_ptr<ls::std::core::interface_type::ISerializable> serializable{};
 
 
       void _createSerializable();
       void _createSerializable();
-      [[nodiscard]] ls::std::io::section_pair_row_list_element _get(const ls::std::io::section_pair_identifier &_key);
+      [[nodiscard]] ls::std::io::section_pair_row_list_element _get(const ls::std::io::section_pair_identifier &_key) const;
       [[nodiscard]] bool _hasRow(const ls::std::io::section_pair_identifier &_key);
       [[nodiscard]] bool _hasRow(const ls::std::io::section_pair_identifier &_key);
       void _rowExistenceCheck(const ls::std::io::section_pair_identifier &_key);
       void _rowExistenceCheck(const ls::std::io::section_pair_identifier &_key);
       void _setSectionId(const ls::std::io::section_pair_identifier &_sectionId);
       void _setSectionId(const ls::std::io::section_pair_identifier &_sectionId);

+ 3 - 3
include/ls-std/io/section-pair/reader/SectionPairFileReader.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-21
 * Created:         2023-02-21
-* Changed:         2023-02-22
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -25,14 +25,14 @@ namespace ls::std::io
       explicit SectionPairFileReader(const ls::std::io::SectionPairFileReaderParameter &_parameter);
       explicit SectionPairFileReader(const ls::std::io::SectionPairFileReaderParameter &_parameter);
       ~SectionPairFileReader() noexcept override;
       ~SectionPairFileReader() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::SectionPairDocument> getDocument();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::SectionPairDocument> getDocument() const;
       ls::std::core::type::byte_field read() override; // nodiscard is optional here
       ls::std::core::type::byte_field read() override; // nodiscard is optional here
 
 
     private:
     private:
 
 
       ls::std::io::SectionPairFileReaderParameter parameter{};
       ls::std::io::SectionPairFileReaderParameter parameter{};
 
 
-      void _checkFileExtension();
+      void _checkFileExtension() const;
       void _createDocument();
       void _createDocument();
       void _createFileExistenceEvaluator();
       void _createFileExistenceEvaluator();
       void _createReader();
       void _createReader();

+ 7 - 6
include/ls-std/io/section-pair/reader/SectionPairFileReaderParameter.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-21
 * Created:         2023-02-21
-* Changed:         2023-02-21
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -16,6 +16,7 @@
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
 #include <string>
 #include <string>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -26,13 +27,13 @@ namespace ls::std::io
       SectionPairFileReaderParameter();
       SectionPairFileReaderParameter();
       ~SectionPairFileReaderParameter();
       ~SectionPairFileReaderParameter();
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::SectionPairDocument> getDocument();
-      [[nodiscard]] ::std::shared_ptr<ls::std::core::interface_type::IEvaluator> getFileExistenceEvaluator();
-      [[nodiscard]] ::std::string getFilePath();
-      [[nodiscard]] ::std::shared_ptr<ls::std::core::interface_type::IReader> getReader();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::SectionPairDocument> getDocument() const;
+      [[nodiscard]] ::std::shared_ptr<ls::std::core::interface_type::IEvaluator> getFileExistenceEvaluator() const;
+      [[nodiscard]] ::std::string getFilePath() const;
+      [[nodiscard]] ::std::shared_ptr<ls::std::core::interface_type::IReader> getReader() const;
       void setDocument(const ::std::shared_ptr<ls::std::io::SectionPairDocument> &_document);
       void setDocument(const ::std::shared_ptr<ls::std::io::SectionPairDocument> &_document);
       void setFileExistenceEvaluator(const ::std::shared_ptr<ls::std::core::interface_type::IEvaluator> &_fileExistenceEvaluator);
       void setFileExistenceEvaluator(const ::std::shared_ptr<ls::std::core::interface_type::IEvaluator> &_fileExistenceEvaluator);
-      void setFilePath(const ::std::string &_filePath);
+      void setFilePath(::std::string_view _filePath);
       void setReader(const ::std::shared_ptr<ls::std::core::interface_type::IReader> &_reader);
       void setReader(const ::std::shared_ptr<ls::std::core::interface_type::IReader> &_reader);
 
 
     private:
     private:

+ 7 - 6
include/ls-std/io/section-pair/serialization/SerializableSectionPairDocument.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-16
 * Created:         2023-02-16
-* Changed:         2023-02-22
+* Changed:         2023-05-19
 *
 *
 * */
 * */
 
 
@@ -15,6 +15,7 @@
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -25,7 +26,7 @@ namespace ls::std::io
       explicit SerializableSectionPairDocument(const ls::std::io::SerializableSectionPairParameter &_parameter);
       explicit SerializableSectionPairDocument(const ls::std::io::SerializableSectionPairParameter &_parameter);
       ~SerializableSectionPairDocument() noexcept override;
       ~SerializableSectionPairDocument() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue();
+      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue() const;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 
@@ -33,10 +34,10 @@ namespace ls::std::io
 
 
       ls::std::io::SerializableSectionPairParameter parameter{};
       ls::std::io::SerializableSectionPairParameter parameter{};
 
 
-      [[nodiscard]] ls::std::core::type::byte_field _getCurrentRow(size_t _iterations, const ls::std::core::type::byte_field &_serializedDocument);
-      [[nodiscard]] ls::std::core::type::byte_field _getNextSerializedSection(const ls::std::core::type::byte_field &_serializedDocument);
-      [[nodiscard]] bool _isNotNewSection(const ls::std::core::type::byte_field &_currentRow);
-      void _addSection(const ls::std::core::type::byte_field &_serializedSection);
+      [[nodiscard]] ls::std::core::type::byte_field _getCurrentRow(size_t _iterations, ::std::string_view _serializedDocument) const;
+      [[nodiscard]] ls::std::core::type::byte_field _getNextSerializedSection(const ls::std::core::type::byte_field &_serializedDocument) const;
+      [[nodiscard]] bool _isNotNewSection(::std::string_view _currentRow) const;
+      void _addSection(const ls::std::core::type::byte_field &_serializedSection) const;
   };
   };
 }
 }
 
 

+ 4 - 3
include/ls-std/io/section-pair/serialization/SerializableSectionPairParameter.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-17
 * Created:         2023-02-17
-* Changed:         2023-02-17
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -14,6 +14,7 @@
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
 #include <string>
 #include <string>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -24,9 +25,9 @@ namespace ls::std::io
       SerializableSectionPairParameter();
       SerializableSectionPairParameter();
       ~SerializableSectionPairParameter();
       ~SerializableSectionPairParameter();
 
 
-      [[nodiscard]] ::std::string getNewLine();
+      [[nodiscard]] ::std::string getNewLine() const;
       [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue() const;
       [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue() const;
-      void setNewLine(const ::std::string &_newLine);
+      void setNewLine(::std::string_view _newLine);
       void setValue(const ::std::shared_ptr<ls::std::core::Class> &_value);
       void setValue(const ::std::shared_ptr<ls::std::core::Class> &_value);
 
 
     private:
     private:

+ 5 - 5
include/ls-std/io/section-pair/serialization/SerializableSectionPairRow.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-11
 * Created:         2023-02-11
-* Changed:         2023-02-22
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -26,7 +26,7 @@ namespace ls::std::io
       explicit SerializableSectionPairRow(const ls::std::io::SerializableSectionPairParameter &_parameter);
       explicit SerializableSectionPairRow(const ls::std::io::SerializableSectionPairParameter &_parameter);
       ~SerializableSectionPairRow() noexcept override;
       ~SerializableSectionPairRow() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue();
+      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue() const;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 
@@ -34,9 +34,9 @@ namespace ls::std::io
 
 
       ls::std::io::SerializableSectionPairParameter parameter{};
       ls::std::io::SerializableSectionPairParameter parameter{};
 
 
-      [[nodiscard]] ::std::string _marshalKey();
-      void _unmarshalListValue(const ls::std::core::type::byte_field &_data);
-      void _unmarshalSingleValue(const ls::std::core::type::byte_field &_data);
+      [[nodiscard]] ::std::string _marshalKey() const;
+      void _unmarshalListValue(const ls::std::core::type::byte_field &_data) const;
+      void _unmarshalSingleValue(const ls::std::core::type::byte_field &_data) const;
   };
   };
 }
 }
 
 

+ 5 - 4
include/ls-std/io/section-pair/serialization/SerializableSectionPairRowListValue.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-11
 * Created:         2023-02-11
-* Changed:         2023-02-22
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -15,6 +15,7 @@
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <memory>
 #include <memory>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -25,7 +26,7 @@ namespace ls::std::io
       explicit SerializableSectionPairRowListValue(const ls::std::io::SerializableSectionPairParameter &_parameter);
       explicit SerializableSectionPairRowListValue(const ls::std::io::SerializableSectionPairParameter &_parameter);
       ~SerializableSectionPairRowListValue() noexcept override;
       ~SerializableSectionPairRowListValue() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue();
+      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue() const;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 
@@ -33,8 +34,8 @@ namespace ls::std::io
 
 
       ls::std::io::SerializableSectionPairParameter parameter{};
       ls::std::io::SerializableSectionPairParameter parameter{};
 
 
-      [[nodiscard]] static ::std::string _getLine(::std::string::size_type _position, const ls::std::core::type::byte_field &_searchText);
-      void _updateSearchText(::std::string::size_type _position, ls::std::core::type::byte_field &_searchText);
+      [[nodiscard]] static ::std::string _getLine(::std::string::size_type _position, ::std::string_view _searchText);
+      void _updateSearchText(::std::string::size_type _position, ls::std::core::type::byte_field &_searchText) const;
   };
   };
 }
 }
 
 

+ 2 - 2
include/ls-std/io/section-pair/serialization/SerializableSectionPairRowSingleValue.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-11
 * Created:         2023-02-11
-* Changed:         2023-02-22
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -25,7 +25,7 @@ namespace ls::std::io
       explicit SerializableSectionPairRowSingleValue(const ls::std::io::SerializableSectionPairParameter &_parameter);
       explicit SerializableSectionPairRowSingleValue(const ls::std::io::SerializableSectionPairParameter &_parameter);
       ~SerializableSectionPairRowSingleValue() noexcept override;
       ~SerializableSectionPairRowSingleValue() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue();
+      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue() const;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 

+ 15 - 14
include/ls-std/io/section-pair/serialization/SerializableSectionPairSection.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-14
 * Created:         2023-02-14
-* Changed:         2023-02-22
+* Changed:         2023-05-19
 *
 *
 * */
 * */
 
 
@@ -15,6 +15,7 @@
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/core/interface/ISerializable.hpp>
 #include <ls-std/io/section-pair/SectionPairRowEnumType.hpp>
 #include <ls-std/io/section-pair/SectionPairRowEnumType.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -25,7 +26,7 @@ namespace ls::std::io
       explicit SerializableSectionPairSection(const ls::std::io::SerializableSectionPairParameter &_parameter);
       explicit SerializableSectionPairSection(const ls::std::io::SerializableSectionPairParameter &_parameter);
       ~SerializableSectionPairSection() noexcept override;
       ~SerializableSectionPairSection() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue();
+      [[nodiscard]] ::std::shared_ptr<ls::std::core::Class> getValue() const;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       [[nodiscard]] ls::std::core::type::byte_field marshal() override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
       void unmarshal(const ls::std::core::type::byte_field &_data) override;
 
 
@@ -33,20 +34,20 @@ namespace ls::std::io
 
 
       ls::std::io::SerializableSectionPairParameter parameter{};
       ls::std::io::SerializableSectionPairParameter parameter{};
 
 
-      [[nodiscard]] ls::std::core::type::byte_field _collectSectionRow(const ls::std::core::type::byte_field &_currentRows, ls::std::io::SectionPairRowEnumType &_type);
-      [[nodiscard]] ls::std::core::type::byte_field _collectSectionListValueRow(const core::type::byte_field &_currentRows, ls::std::io::SectionPairRowEnumType &_type);
+      [[nodiscard]] ls::std::core::type::byte_field _collectSectionRow(const ls::std::core::type::byte_field &_currentRows, ls::std::io::SectionPairRowEnumType &_type) const;
+      [[nodiscard]] ls::std::core::type::byte_field _collectSectionListValueRow(const core::type::byte_field &_currentRows, ls::std::io::SectionPairRowEnumType &_type) const;
       [[nodiscard]] static core::type::byte_field _collectSectionSingleValueRow(const ls::std::core::type::byte_field &_firstRow, ls::std::io::SectionPairRowEnumType &type);
       [[nodiscard]] static core::type::byte_field _collectSectionSingleValueRow(const ls::std::core::type::byte_field &_firstRow, ls::std::io::SectionPairRowEnumType &type);
-      [[nodiscard]] static size_t _getNthSubStringPosition(const ls::std::core::type::byte_field &_text, const ls::std::core::type::byte_field &_subText);
-      [[nodiscard]] ls::std::core::type::byte_field _getSectionHeader(const ls::std::core::type::byte_field &_data);
-      [[nodiscard]] static ls::std::core::type::byte_field _getSectionId(const ls::std::core::type::byte_field &_sectionHeader);
-      [[nodiscard]] static bool _isListValueRow(const ::std::string &_currentRow);
+      [[nodiscard]] static size_t _getNthSubStringPosition(::std::string_view _text, ::std::string_view _subText);
+      [[nodiscard]] ls::std::core::type::byte_field _getSectionHeader(const ls::std::core::type::byte_field &_data) const;
+      [[nodiscard]] static ls::std::core::type::byte_field _getSectionId(::std::string_view _sectionHeader);
+      [[nodiscard]] static bool _isListValueRow(::std::string_view _currentRow);
       [[nodiscard]] static bool _isStartingValueRow(const ::std::string &_currentRow);
       [[nodiscard]] static bool _isStartingValueRow(const ::std::string &_currentRow);
-      [[nodiscard]] static bool _isSingleValueRow(const ::std::string &_currentRow);
-      [[nodiscard]] ls::std::core::type::byte_field _marshalRows();
-      [[nodiscard]] ls::std::core::type::byte_field _marshalSectionId();
-      void _unmarshalRow(const ::std::string &_sectionRow, ls::std::io::SectionPairRowEnumType _type);
-      void _unmarshalRows(const ls::std::core::type::byte_field &_serializedRows);
-      [[nodiscard]] size_t _unmarshalSectionHeader(const ls::std::core::type::byte_field &_data);
+      [[nodiscard]] static bool _isSingleValueRow(::std::string_view _currentRow);
+      [[nodiscard]] ls::std::core::type::byte_field _marshalRows() const;
+      [[nodiscard]] ls::std::core::type::byte_field _marshalSectionId() const;
+      void _unmarshalRow(const ::std::string &_sectionRow, ls::std::io::SectionPairRowEnumType _type) const;
+      void _unmarshalRows(const ls::std::core::type::byte_field &_serializedRows) const;
+      [[nodiscard]] size_t _unmarshalSectionHeader(const ls::std::core::type::byte_field &_data) const;
   };
   };
 }
 }
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-23
  * Created:         2020-09-23
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -23,11 +23,11 @@ namespace ls::std::io
       explicit XmlAttribute(const ::std::string &_name);
       explicit XmlAttribute(const ::std::string &_name);
       ~XmlAttribute() noexcept override;
       ~XmlAttribute() noexcept override;
 
 
-      [[nodiscard]] ::std::string getName();
-      [[nodiscard]] ::std::string getValue();
+      [[nodiscard]] ::std::string getName() const;
+      [[nodiscard]] ::std::string getValue() const;
       void setName(const ::std::string &_name);
       void setName(const ::std::string &_name);
       void setValue(const ::std::string &_value);
       void setValue(const ::std::string &_value);
-      [[nodiscard]] ::std::string toXml();
+      [[nodiscard]] ::std::string toXml() const;
 
 
     private:
     private:
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-27
  * Created:         2020-09-27
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -23,13 +23,13 @@ namespace ls::std::io
       explicit XmlDeclaration(const ::std::string &_version);
       explicit XmlDeclaration(const ::std::string &_version);
       ~XmlDeclaration() noexcept override;
       ~XmlDeclaration() noexcept override;
 
 
-      [[nodiscard]] ::std::string getEncoding();
-      [[nodiscard]] ::std::string getStandalone();
-      [[nodiscard]] ::std::string getVersion();
+      [[nodiscard]] ::std::string getEncoding() const;
+      [[nodiscard]] ::std::string getStandalone() const;
+      [[nodiscard]] ::std::string getVersion() const;
       void setEncoding(const ::std::string &_encoding);
       void setEncoding(const ::std::string &_encoding);
       void setStandalone(const ::std::string &_standalone);
       void setStandalone(const ::std::string &_standalone);
       void setVersion(const ::std::string &_version);
       void setVersion(const ::std::string &_version);
-      [[nodiscard]] ::std::string toXml();
+      [[nodiscard]] ::std::string toXml() const;
 
 
     private:
     private:
 
 
@@ -37,7 +37,7 @@ namespace ls::std::io
       ls::std::io::XmlAttribute standalone{"standalone"};
       ls::std::io::XmlAttribute standalone{"standalone"};
       ls::std::io::XmlAttribute version{"version"};
       ls::std::io::XmlAttribute version{"version"};
 
 
-      [[nodiscard]] static ::std::string _toXmlAttribute(ls::std::io::XmlAttribute _attribute);
+      [[nodiscard]] static ::std::string _toXmlAttribute(const ls::std::io::XmlAttribute &_attribute);
   };
   };
 }
 }
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-27
  * Created:         2020-09-27
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -25,11 +25,11 @@ namespace ls::std::io
       XmlDocument();
       XmlDocument();
       ~XmlDocument() noexcept override;
       ~XmlDocument() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlDeclaration> getDeclaration();
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlNode> getRootElement();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlDeclaration> getDeclaration() const;
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlNode> getRootElement() const;
       void setDeclaration(const ::std::shared_ptr<ls::std::io::XmlDeclaration> &_declaration);
       void setDeclaration(const ::std::shared_ptr<ls::std::io::XmlDeclaration> &_declaration);
       void setRootElement(const ::std::shared_ptr<ls::std::io::XmlNode> &_rootElement);
       void setRootElement(const ::std::shared_ptr<ls::std::io::XmlNode> &_rootElement);
-      [[nodiscard]] ::std::string toXml();
+      [[nodiscard]] ::std::string toXml() const;
 
 
     private:
     private:
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-24
  * Created:         2020-09-24
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -34,11 +34,11 @@ namespace ls::std::io
       bool addChildToBeginning(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);                                                    // nodiscard is optional here
       bool addChildToBeginning(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);                                                    // nodiscard is optional here
       bool addChildToEnd(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);                                                          // nodiscard is optional here
       bool addChildToEnd(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);                                                          // nodiscard is optional here
       void clearValue();
       void clearValue();
-      [[nodiscard]] ::std::list<::std::shared_ptr<ls::std::io::XmlAttribute>> getAttributes();
-      [[nodiscard]] ::std::list<::std::shared_ptr<ls::std::io::XmlNode>> getChildren();
+      [[nodiscard]] ::std::list<::std::shared_ptr<ls::std::io::XmlAttribute>> getAttributes() const;
+      [[nodiscard]] ::std::list<::std::shared_ptr<ls::std::io::XmlNode>> getChildren() const;
       [[nodiscard]] ::std::list<::std::shared_ptr<ls::std::io::XmlNode>> getChildren(const ::std::string &_name);
       [[nodiscard]] ::std::list<::std::shared_ptr<ls::std::io::XmlNode>> getChildren(const ::std::string &_name);
-      [[nodiscard]] ::std::string getName();
-      [[nodiscard]] ::std::string getValue();
+      [[nodiscard]] ::std::string getName() const;
+      [[nodiscard]] ::std::string getValue() const;
       [[nodiscard]] bool hasAttribute(const ::std::string &_name);
       [[nodiscard]] bool hasAttribute(const ::std::string &_name);
       [[nodiscard]] bool hasChild(const ::std::string &_name);
       [[nodiscard]] bool hasChild(const ::std::string &_name);
       [[nodiscard]] bool hasChild(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
       [[nodiscard]] bool hasChild(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
@@ -70,10 +70,10 @@ namespace ls::std::io
       [[nodiscard]] bool _hasChild(const ::std::string &_name);
       [[nodiscard]] bool _hasChild(const ::std::string &_name);
       [[nodiscard]] ::std::string _toXmlAttributes();
       [[nodiscard]] ::std::string _toXmlAttributes();
       [[nodiscard]] ::std::string _toXmlChildren(uint8_t _tabSize);
       [[nodiscard]] ::std::string _toXmlChildren(uint8_t _tabSize);
-      [[nodiscard]] ::std::string _toXmlCloseTag();
-      [[nodiscard]] ::std::string _toXmlOpenTag();
-      [[nodiscard]] ::std::string _toXmlOpenTagClose();
-      [[nodiscard]] ::std::string _toXmlValue();
+      [[nodiscard]] ::std::string _toXmlCloseTag() const;
+      [[nodiscard]] ::std::string _toXmlOpenTag() const;
+      [[nodiscard]] ::std::string _toXmlOpenTagClose() const;
+      [[nodiscard]] ::std::string _toXmlValue() const;
   };
   };
 }
 }
 
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-10-13
  * Created:         2020-10-13
- * Changed:         2023-02-04
+ * Changed:         2023-05-18
  *
  *
  * */
  * */
 
 
@@ -12,7 +12,7 @@
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
-  enum XmlParseMode
+  enum class XmlParseMode
   {
   {
     XML_PARSE_MODE_ANALYZE = 0,
     XML_PARSE_MODE_ANALYZE = 0,
     XML_PARSE_MODE_DECLARATION,
     XML_PARSE_MODE_DECLARATION,

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-10-17
  * Created:         2020-10-17
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -25,7 +25,7 @@ namespace ls::std::io
       ~XmlParseParameter();
       ~XmlParseParameter();
 
 
       [[nodiscard]] uint8_t getLevel() const;
       [[nodiscard]] uint8_t getLevel() const;
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlNode> getNode();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlNode> getNode() const;
       void setLevel(const uint8_t &_level);
       void setLevel(const uint8_t &_level);
       void setNode(const ::std::shared_ptr<ls::std::io::XmlNode> &_node);
       void setNode(const ::std::shared_ptr<ls::std::io::XmlNode> &_node);
 
 

+ 15 - 13
include/ls-std/io/xml/XmlParser.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-25
  * Created:         2020-11-25
- * Changed:         2023-02-22
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -17,6 +17,7 @@
 #include <ls-std/core/Class.hpp>
 #include <ls-std/core/Class.hpp>
 #include <ls-std/core/type/Types.hpp>
 #include <ls-std/core/type/Types.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
 #include <ls-std/os/dynamic-goal.hpp>
+#include <string_view>
 
 
 namespace ls::std::io
 namespace ls::std::io
 {
 {
@@ -27,7 +28,7 @@ namespace ls::std::io
       explicit XmlParser(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       explicit XmlParser(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       ~XmlParser() noexcept override;
       ~XmlParser() noexcept override;
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlDocument> getDocument();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlDocument> getDocument() const;
       void parse(const ls::std::core::type::byte_field &_data);
       void parse(const ls::std::core::type::byte_field &_data);
       void setDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       void setDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
 
 
@@ -46,28 +47,29 @@ namespace ls::std::io
 
 
       void _analyze(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
       void _analyze(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
       void _assignDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       void _assignDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
-      [[nodiscard]] static bool _contains(const ::std::string &_text, const ::std::string &_searchText);
+      [[nodiscard]] static bool _contains(::std::string_view _text, ::std::string_view _searchText);
       [[nodiscard]] static ::std::shared_ptr<ls::std::io::XmlDeclaration> _createDeclaration(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes);
       [[nodiscard]] static ::std::shared_ptr<ls::std::io::XmlDeclaration> _createDeclaration(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes);
-      [[nodiscard]] static ::std::shared_ptr<ls::std::io::XmlNode> _createNode(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes, const ::std::string &_name);
-      [[nodiscard]] static bool _endsWith(const ::std::string &_text, const ::std::string &_ending);
+      [[nodiscard]] static ::std::shared_ptr<ls::std::io::XmlNode> _createNode(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes, ::std::string_view _name);
+      [[nodiscard]] static bool _endsWith(::std::string_view _text, ::std::string_view _ending);
       [[nodiscard]] static ::std::pair<::std::string, ::std::string> _findAttribute(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes, const ::std::string &_name);
       [[nodiscard]] static ::std::pair<::std::string, ::std::string> _findAttribute(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes, const ::std::string &_name);
       [[nodiscard]] static size_t _findAttributeEndPosition(const ls::std::core::type::byte_field &_data);
       [[nodiscard]] static size_t _findAttributeEndPosition(const ls::std::core::type::byte_field &_data);
-      [[nodiscard]] static ls::std::core::type::byte_field _getNextTagString(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
-      void _isClosingTag(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
-      void _isDeclaration(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
-      void _isOpeningTag(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
+      [[nodiscard]] static ls::std::core::type::byte_field _getNextTagString(::std::string_view _data, ::std::string::size_type _index);
+      void _isClosingTag(::std::string_view _data, ::std::string::size_type _index);
+      void _isDeclaration(::std::string_view _data, ::std::string::size_type _index);
+      void _isOpeningTag(::std::string_view _data, ::std::string::size_type _index);
       void _isValue(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
       void _isValue(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
       void _mergeNodes();
       void _mergeNodes();
       void _mergeChildrenToParentNode(const ::std::shared_ptr<ls::std::io::XmlNode> &_parent, ::std::list<ls::std::io::XmlParseParameter>::iterator &_iterator, uint8_t _parentLevel);
       void _mergeChildrenToParentNode(const ::std::shared_ptr<ls::std::io::XmlNode> &_parent, ::std::list<ls::std::io::XmlParseParameter>::iterator &_iterator, uint8_t _parentLevel);
       void _mergeNodesOnCurrentLevel();
       void _mergeNodesOnCurrentLevel();
       void _parse(const ls::std::core::type::byte_field &_data);
       void _parse(const ls::std::core::type::byte_field &_data);
-      [[nodiscard]] static ::std::pair<::std::string, ::std::string> _parseAttribute(const ls::std::core::type::byte_field &_data);
+      [[nodiscard]] static ::std::pair<::std::string, ::std::string> _parseAttribute(::std::string_view _data);
       [[nodiscard]] static ::std::list<::std::pair<::std::string, ::std::string>> _parseAttributes(ls::std::core::type::byte_field _data);
       [[nodiscard]] static ::std::list<::std::pair<::std::string, ::std::string>> _parseAttributes(ls::std::core::type::byte_field _data);
       [[nodiscard]] size_t _parseClosingTag(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
       [[nodiscard]] size_t _parseClosingTag(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
-      [[nodiscard]] size_t _parseDeclaration(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
+      [[nodiscard]] size_t _parseDeclaration(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index) const;
+      [[nodiscard]] ::std::string::size_type _parseMode(::std::string::size_type _index, const ls::std::core::type::byte_field &_data);
       [[nodiscard]] size_t _parseOpeningTag(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
       [[nodiscard]] size_t _parseOpeningTag(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
-      [[nodiscard]] static ls::std::core::type::byte_field _parseTagName(const ls::std::core::type::byte_field &_data);
-      [[nodiscard]] size_t _parseValue(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
+      [[nodiscard]] static ::std::string_view _parseTagName(::std::string_view _data);
+      [[nodiscard]] size_t _parseValue(::std::string_view _data, ::std::string::size_type _index);
       void _reset();
       void _reset();
       void _setMaxLevel();
       void _setMaxLevel();
   };
   };

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-10-08
  * Created:         2020-10-08
- * Changed:         2023-02-22
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -34,17 +34,17 @@ namespace ls::std::io
 
 
       // additional functionality
       // additional functionality
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlDocument> getDocument();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlDocument> getDocument() const;
       void setDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       void setDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       void setFile(const ls::std::io::File &_xmlFile);
       void setFile(const ls::std::io::File &_xmlFile);
 
 
     private:
     private:
 
 
       ::std::shared_ptr<ls::std::io::XmlDocument> document{};
       ::std::shared_ptr<ls::std::io::XmlDocument> document{};
-      ls::std::io::File xmlFile;
+      ls::std::io::File xmlFile = ls::std::io::File{""};
 
 
       void _assignDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       void _assignDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
-      void _assignFile(ls::std::io::File _xmlFile);
+      void _assignFile(const ls::std::io::File &_xmlFile);
   };
   };
 }
 }
 
 

+ 4 - 1
include/ls-std/ls-std-core.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-05-13
  * Created:         2022-05-13
- * Changed:         2023-03-27
+ * Changed:         2023-05-24
  *
  *
  * */
  * */
 
 
@@ -14,6 +14,8 @@
 #include <ls-std/core/evaluator/IndexOutOfBoundsEvaluator.hpp>
 #include <ls-std/core/evaluator/IndexOutOfBoundsEvaluator.hpp>
 #include <ls-std/core/evaluator/NullPointerArgumentEvaluator.hpp>
 #include <ls-std/core/evaluator/NullPointerArgumentEvaluator.hpp>
 #include <ls-std/core/evaluator/NullPointerEvaluator.hpp>
 #include <ls-std/core/evaluator/NullPointerEvaluator.hpp>
+#include <ls-std/core/evaluator/RawNullPointerArgumentEvaluator.hpp>
+#include <ls-std/core/evaluator/RawNullPointerEvaluator.hpp>
 
 
 #include <ls-std/core/exception/EventNotHandledException.hpp>
 #include <ls-std/core/exception/EventNotHandledException.hpp>
 #include <ls-std/core/exception/EventNotSubscribedException.hpp>
 #include <ls-std/core/exception/EventNotSubscribedException.hpp>
@@ -39,6 +41,7 @@
 #include <ls-std/core/interface/IWriter.hpp>
 #include <ls-std/core/interface/IWriter.hpp>
 
 
 #include <ls-std/core/type/EventTypes.hpp>
 #include <ls-std/core/type/EventTypes.hpp>
+#include <ls-std/core/type/RawPointer.hpp>
 #include <ls-std/core/type/Types.hpp>
 #include <ls-std/core/type/Types.hpp>
 
 
 #include <ls-std/core/Class.hpp>
 #include <ls-std/core/Class.hpp>

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
  * Created:         2020-08-14
- * Changed:         2023-02-22
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -34,20 +34,20 @@ namespace ls::std::time
 
 
       [[nodiscard]] bool after(const ls::std::time::Date &_foreignDate) const;
       [[nodiscard]] bool after(const ls::std::time::Date &_foreignDate) const;
       [[nodiscard]] bool before(const ls::std::time::Date &_foreignDate) const;
       [[nodiscard]] bool before(const ls::std::time::Date &_foreignDate) const;
-      [[nodiscard]] int getDay();
-      [[nodiscard]] int getHour();
-      [[nodiscard]] int getMinute();
-      [[nodiscard]] int getMonth();
-      [[nodiscard]] int getSecond();
+      [[nodiscard]] int getDay() const;
+      [[nodiscard]] int getHour() const;
+      [[nodiscard]] int getMinute() const;
+      [[nodiscard]] int getMonth() const;
+      [[nodiscard]] int getSecond() const;
       [[nodiscard]] time_t getTime() const;
       [[nodiscard]] time_t getTime() const;
-      [[nodiscard]] int getYear();
+      [[nodiscard]] int getYear() const;
       void setTime(time_t _timestamp);
       void setTime(time_t _timestamp);
-      [[nodiscard]] ::std::string toString();
+      [[nodiscard]] ::std::string toString() const;
 
 
     private:
     private:
 
 
       time_t timestamp{};
       time_t timestamp{};
-      tm *localTime{};
+      tm localTime{};
 
 
       void _decrementByDays(int _value);
       void _decrementByDays(int _value);
       void _incrementByDays(int _value);
       void _incrementByDays(int _value);

+ 4 - 2
include/ls-std/time/system-time/SystemTime.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-03-07
 * Created:         2023-03-07
-* Changed:         2023-03-31
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -17,6 +17,7 @@
 #include <ls-std/time/common/DateParameter.hpp>
 #include <ls-std/time/common/DateParameter.hpp>
 #include <ls-std/time/type/DateParameterTypes.hpp>
 #include <ls-std/time/type/DateParameterTypes.hpp>
 #include <memory>
 #include <memory>
+#include <string>
 
 
 namespace ls::std::time
 namespace ls::std::time
 {
 {
@@ -28,12 +29,13 @@ namespace ls::std::time
       SystemTime();
       SystemTime();
       ~SystemTime() noexcept override;
       ~SystemTime() noexcept override;
 
 
-      [[nodiscard]] bool set(const ls::std::time::DateParameter &_dateParameter);
+      [[nodiscard]] bool set(const ls::std::time::DateParameter &_dateParameter) const;
 
 
     private:
     private:
 
 
       ::std::shared_ptr<ls::std::time::SystemTimeParameter> parameter{};
       ::std::shared_ptr<ls::std::time::SystemTimeParameter> parameter{};
 
 
+      [[nodiscard]] static ::std::string _fetchClassName();
       void _generateParameter();
       void _generateParameter();
   };
   };
 }
 }

+ 2 - 2
include/ls-std/time/system-time/SystemTimeParameter.hpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-03-15
 * Created:         2023-03-15
-* Changed:         2023-03-31
+* Changed:         2023-05-18
 *
 *
 * */
 * */
 
 
@@ -23,7 +23,7 @@ namespace ls::std::time
       SystemTimeParameter();
       SystemTimeParameter();
       ~SystemTimeParameter();
       ~SystemTimeParameter();
 
 
-      [[nodiscard]] ::std::shared_ptr<ls::std::time::IClock> getClock();
+      [[nodiscard]] ::std::shared_ptr<ls::std::time::IClock> getClock() const;
       void setClock(const ::std::shared_ptr<ls::std::time::IClock> &_clock);
       void setClock(const ::std::shared_ptr<ls::std::time::IClock> &_clock);
 
 
     private:
     private:

+ 17 - 12
source/ls-std/boxing/Boolean.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-09
  * Created:         2020-08-09
- * Changed:         2023-02-23
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -17,12 +17,10 @@ using ls::std::core::IllegalArgumentException;
 using std::string;
 using std::string;
 using std::transform;
 using std::transform;
 
 
-Boolean::Boolean(bool _value) : Boolean()
-{
-  this->value = _value;
-}
+Boolean::Boolean(bool _value) : Class(Boolean::_fetchClassName()), value(_value)
+{}
 
 
-Boolean::Boolean() : Class("Boolean")
+Boolean::Boolean() : Class(Boolean::_fetchClassName())
 {}
 {}
 
 
 Boolean::~Boolean() noexcept = default;
 Boolean::~Boolean() noexcept = default;
@@ -69,22 +67,23 @@ bool Boolean::operator||(int _value) const
   return this->value || _value;
   return this->value || _value;
 }
 }
 
 
-void Boolean::parse(string _parseText)
+void Boolean::parse(const string &_parseText)
 {
 {
-  transform(_parseText.begin(), _parseText.end(), _parseText.begin(), ::tolower);
+  string parseText = _parseText;
+  transform(parseText.begin(), parseText.end(), parseText.begin(), ::tolower);
 
 
-  if (_parseText != this->TRUE_STRING && _parseText != this->FALSE_STRING)
+  if (parseText != this->TRUE_STRING && parseText != this->FALSE_STRING)
   {
   {
-    throw IllegalArgumentException{_parseText + " is not a valid string representation"};
+    throw IllegalArgumentException{parseText + " is not a valid string representation"};
   }
   }
   else
   else
   {
   {
-    if (_parseText == this->TRUE_STRING)
+    if (parseText == this->TRUE_STRING)
     {
     {
       this->value = true;
       this->value = true;
     }
     }
 
 
-    if (_parseText == this->FALSE_STRING)
+    if (parseText == this->FALSE_STRING)
     {
     {
       this->value = false;
       this->value = false;
     }
     }
@@ -121,6 +120,12 @@ bool Boolean::XOR(bool _leftExpression, bool _rightExpression)
   return (_leftExpression && !_rightExpression) || (!_leftExpression && _rightExpression);
   return (_leftExpression && !_rightExpression) || (!_leftExpression && _rightExpression);
 }
 }
 
 
+string Boolean::_fetchClassName()
+{
+  static const string className = "Boolean";
+  return className;
+}
+
 string Boolean::_toString() const
 string Boolean::_toString() const
 {
 {
   string booleanString{};
   string booleanString{};

+ 11 - 5
source/ls-std/boxing/Double.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
  * Created:         2020-08-14
- * Changed:         2023-02-23
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -19,14 +19,14 @@ using std::stod;
 using std::string;
 using std::string;
 using std::to_string;
 using std::to_string;
 
 
-Double::Double() : Class("Double")
+Double::Double() : Class(Double::_fetchClassName())
 {
 {
   this->_assignEpsilon(0.00000001);
   this->_assignEpsilon(0.00000001);
 }
 }
 
 
-Double::Double(double _value) : Double()
+Double::Double(double _value) : Class(Double::_fetchClassName()), value(_value)
 {
 {
-  this->value = _value;
+  this->_assignEpsilon(0.00000001);
 }
 }
 
 
 Double::~Double() noexcept = default;
 Double::~Double() noexcept = default;
@@ -200,7 +200,7 @@ void Double::operator--()
   this->value -= 1.0f;
   this->value -= 1.0f;
 }
 }
 
 
-void Double::parse(string _parseText)
+void Double::parse(const string &_parseText)
 {
 {
   this->value = stod(_parseText);
   this->value = stod(_parseText);
 }
 }
@@ -234,3 +234,9 @@ void Double::_assignEpsilon(double _epsilon)
 
 
   this->epsilon = _epsilon;
   this->epsilon = _epsilon;
 }
 }
+
+string Double::_fetchClassName()
+{
+  static const string className = "Double";
+  return className;
+}

+ 11 - 7
source/ls-std/boxing/Float.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
  * Created:         2020-08-14
- * Changed:         2023-02-23
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -19,13 +19,11 @@ using std::stof;
 using std::string;
 using std::string;
 using std::to_string;
 using std::to_string;
 
 
-Float::Float() : Class("Float"), epsilon(0.00001f)
+Float::Float() : Class(Float::_fetchClassName()), epsilon(0.00001F)
 {}
 {}
 
 
-Float::Float(float _value) : Float()
-{
-  this->value = _value;
-}
+Float::Float(float _value) : Class(Float::_fetchClassName()), epsilon(0.00001f), value(_value)
+{}
 
 
 Float::~Float() noexcept = default;
 Float::~Float() noexcept = default;
 
 
@@ -198,7 +196,7 @@ void Float::operator--()
   this->value -= 1.0f;
   this->value -= 1.0f;
 }
 }
 
 
-void Float::parse(string _parseText)
+void Float::parse(const string &_parseText)
 {
 {
   this->value = stof(_parseText);
   this->value = stof(_parseText);
 }
 }
@@ -232,3 +230,9 @@ void Float::_assignEpsilon(float _epsilon)
 
 
   this->epsilon = _epsilon;
   this->epsilon = _epsilon;
 }
 }
+
+string Float::_fetchClassName()
+{
+  static const string className = "Float";
+  return className;
+}

+ 11 - 37
source/ls-std/boxing/Integer.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-07
  * Created:         2020-08-07
- * Changed:         2023-02-23
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -17,12 +17,10 @@ using std::stoi;
 using std::string;
 using std::string;
 using std::to_string;
 using std::to_string;
 
 
-Integer::Integer(int _value) : Integer()
-{
-  this->value = _value;
-}
+Integer::Integer(int _value) : Class(Integer::_fetchClassName()), value(_value)
+{}
 
 
-Integer::Integer() : Class("Integer")
+Integer::Integer() : Class(Integer::_fetchClassName())
 {}
 {}
 
 
 Integer::~Integer() noexcept = default;
 Integer::~Integer() noexcept = default;
@@ -216,36 +214,6 @@ bool Integer::operator<=(int _value) const
   return this->value <= _value;
   return this->value <= _value;
 }
 }
 
 
-bool Integer::operator&&(const Integer &_integer) const
-{
-  return this->value && _integer.getValue();
-}
-
-bool Integer::operator&&(int _value) const
-{
-  return this->value && _value;
-}
-
-bool Integer::operator&&(bool _expression) const
-{
-  return this->value && _expression;
-}
-
-bool Integer::operator||(const Integer &_integer) const
-{
-  return this->value || _integer.getValue();
-}
-
-bool Integer::operator||(int _value) const
-{
-  return this->value || _value;
-}
-
-bool Integer::operator||(bool _expression) const
-{
-  return this->value || _expression;
-}
-
 void Integer::operator++()
 void Integer::operator++()
 {
 {
   this->value += 1;
   this->value += 1;
@@ -256,7 +224,7 @@ void Integer::operator--()
   this->value -= 1;
   this->value -= 1;
 }
 }
 
 
-void Integer::parse(string _parseText)
+void Integer::parse(const string &_parseText)
 {
 {
   this->value = stoi(_parseText);
   this->value = stoi(_parseText);
 }
 }
@@ -270,3 +238,9 @@ int Integer::getValue() const
 {
 {
   return this->value;
   return this->value;
 }
 }
+
+string Integer::_fetchClassName()
+{
+  static const string className = "Integer";
+  return className;
+}

+ 11 - 37
source/ls-std/boxing/Long.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-17
  * Created:         2020-08-17
- * Changed:         2023-02-23
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -18,12 +18,10 @@ using std::stoll;
 using std::string;
 using std::string;
 using std::to_string;
 using std::to_string;
 
 
-Long::Long(long_type _value) : Long()
-{
-  this->value = _value;
-}
+Long::Long(long_type _value) : Class(Long::_fetchClassName()), value(_value)
+{}
 
 
-Long::Long() : Class("Long")
+Long::Long() : Class(Long::_fetchClassName())
 {}
 {}
 
 
 Long::~Long() noexcept = default;
 Long::~Long() noexcept = default;
@@ -217,36 +215,6 @@ bool Long::operator<=(long_type _value) const
   return this->value <= _value;
   return this->value <= _value;
 }
 }
 
 
-bool Long::operator&&(const Long &_long) const
-{
-  return this->value && _long.getValue();
-}
-
-bool Long::operator&&(long_type _value) const
-{
-  return this->value && _value;
-}
-
-bool Long::operator&&(bool _expression) const
-{
-  return this->value && _expression;
-}
-
-bool Long::operator||(const Long &_long) const
-{
-  return this->value || _long.getValue();
-}
-
-bool Long::operator||(long_type _value) const
-{
-  return this->value || _value;
-}
-
-bool Long::operator||(bool _expression) const
-{
-  return this->value || _expression;
-}
-
 void Long::operator++()
 void Long::operator++()
 {
 {
   this->value += 1;
   this->value += 1;
@@ -257,7 +225,7 @@ void Long::operator--()
   this->value -= 1;
   this->value -= 1;
 }
 }
 
 
-void Long::parse(string _parseText)
+void Long::parse(const string &_parseText)
 {
 {
   this->value = stoll(_parseText);
   this->value = stoll(_parseText);
 }
 }
@@ -271,3 +239,9 @@ long_type Long::getValue() const
 {
 {
   return this->value;
   return this->value;
 }
 }
+
+string Long::_fetchClassName()
+{
+  static const string className = "Long";
+  return className;
+}

+ 22 - 21
source/ls-std/boxing/String.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-14
  * Created:         2020-08-14
- * Changed:         2023-02-23
+ * Changed:         2023-05-17
  *
  *
  * */
  * */
 
 
@@ -16,6 +16,7 @@ using ls::std::core::type::byte_type;
 using std::move;
 using std::move;
 using std::reverse;
 using std::reverse;
 using std::string;
 using std::string;
+using std::string_view;
 using std::transform;
 using std::transform;
 using std::vector;
 using std::vector;
 
 
@@ -50,7 +51,7 @@ string String::operator+(const char *_string) const
   return this->value + _string;
   return this->value + _string;
 }
 }
 
 
-string String::operator-(int _number)
+string String::operator-(int _number) const
 {
 {
   string copy = this->value;
   string copy = this->value;
   return copy.substr(0, copy.size() - _number);
   return copy.substr(0, copy.size() - _number);
@@ -68,39 +69,39 @@ String &String::operator+=(const string &_text)
   return *this;
   return *this;
 }
 }
 
 
-bool String::operator==(String _string)
+bool String::operator==(String _string) const
 {
 {
   return this->value == _string.toString();
   return this->value == _string.toString();
 }
 }
 
 
-bool String::operator==(const string &_value)
+bool String::operator==(string_view _value) const
 {
 {
   return this->value == _value;
   return this->value == _value;
 }
 }
 
 
-bool String::operator==(const char *_value)
+bool String::operator==(const char *_value) const
 {
 {
   return this->value == _value;
   return this->value == _value;
 }
 }
 
 
-bool String::operator!=(String _string)
+bool String::operator!=(String _string) const
 {
 {
   return this->value != _string.toString();
   return this->value != _string.toString();
 }
 }
 
 
-bool String::operator!=(const string &_value)
+bool String::operator!=(string_view _value) const
 {
 {
   return this->value != _value;
   return this->value != _value;
 }
 }
 
 
-bool String::operator!=(const char *_value)
+bool String::operator!=(const char *_value) const
 {
 {
   return this->value != _value;
   return this->value != _value;
 }
 }
 
 
-void String::parse(string _parseText)
+void String::parse(const string &_parseText)
 {
 {
-  this->value = ::move(_parseText);
+  this->value = _parseText;
 }
 }
 
 
 string String::toString()
 string String::toString()
@@ -108,22 +109,22 @@ string String::toString()
   return this->value;
   return this->value;
 }
 }
 
 
-bool String::contains(const string &_text)
+bool String::contains(string_view _text) const
 {
 {
   return this->value.find(_text) != string::npos;
   return this->value.find(_text) != string::npos;
 }
 }
 
 
-bool String::endsWith(const string &_text)
+bool String::endsWith(string_view _text) const
 {
 {
   return this->value.rfind(_text) == (this->value.size() - _text.size());
   return this->value.rfind(_text) == (this->value.size() - _text.size());
 }
 }
 
 
-bool String::equalsIgnoreCase(String _string)
+bool String::equalsIgnoreCase(const String &_string) const
 {
 {
   return this->toLowerCase() == _string.toLowerCase();
   return this->toLowerCase() == _string.toLowerCase();
 }
 }
 
 
-bool String::equalsIgnoreCase(string _text)
+bool String::equalsIgnoreCase(string _text) const
 {
 {
   return this->toLowerCase() == String{::move(_text)}.toLowerCase();
   return this->toLowerCase() == String{::move(_text)}.toLowerCase();
 }
 }
@@ -136,17 +137,17 @@ vector<byte_type> String::getByteData()
   return byteData;
   return byteData;
 }
 }
 
 
-string String::padLeft(size_t _width, const char _fillCharacter)
+string String::padLeft(size_t _width, const char _fillCharacter) const
 {
 {
   return String::_createFillContent(this->value, _width, _fillCharacter) + this->value;
   return String::_createFillContent(this->value, _width, _fillCharacter) + this->value;
 }
 }
 
 
-string String::padRight(size_t _width, const char _fillCharacter)
+string String::padRight(size_t _width, const char _fillCharacter) const
 {
 {
   return this->value + String::_createFillContent(this->value, _width, _fillCharacter);
   return this->value + String::_createFillContent(this->value, _width, _fillCharacter);
 }
 }
 
 
-string String::reverse()
+string String::reverse() const
 {
 {
   string copy = this->value;
   string copy = this->value;
   ::reverse(copy.begin(), copy.end());
   ::reverse(copy.begin(), copy.end());
@@ -154,12 +155,12 @@ string String::reverse()
   return copy;
   return copy;
 }
 }
 
 
-bool String::startsWith(const string &_text)
+bool String::startsWith(string_view _text) const
 {
 {
   return this->value.rfind(_text, 0) == 0;
   return this->value.rfind(_text, 0) == 0;
 }
 }
 
 
-string String::toLowerCase()
+string String::toLowerCase() const
 {
 {
   string copy = this->value;
   string copy = this->value;
   transform(copy.begin(), copy.end(), copy.begin(), ::tolower);
   transform(copy.begin(), copy.end(), copy.begin(), ::tolower);
@@ -167,7 +168,7 @@ string String::toLowerCase()
   return copy;
   return copy;
 }
 }
 
 
-string String::toUpperCase()
+string String::toUpperCase() const
 {
 {
   string copy = this->value;
   string copy = this->value;
   transform(copy.begin(), copy.end(), copy.begin(), ::toupper);
   transform(copy.begin(), copy.end(), copy.begin(), ::toupper);
@@ -187,7 +188,7 @@ string String::_buildCharacterChain(size_t _amount, const char _fillCharacter)
   return fillContent;
   return fillContent;
 }
 }
 
 
-string String::_createFillContent(const string &_text, size_t _width, const char _fillCharacter)
+string String::_createFillContent(string_view _text, size_t _width, const char _fillCharacter)
 {
 {
   size_t fillSize = _text.size() > _width ? 0 : _width - _text.size();
   size_t fillSize = _text.size() > _width ? 0 : _width - _text.size();
   string fillContent{};
   string fillContent{};

+ 2 - 2
source/ls-std/core/Class.cpp

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

+ 2 - 2
source/ls-std/core/LibraryVersion.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-05
 * Created:         2023-02-05
-* Changed:         2023-03-05
+* Changed:         2023-06-08
 *
 *
 * */
 * */
 
 
@@ -18,5 +18,5 @@ LibraryVersion::~LibraryVersion() = default;
 
 
 string LibraryVersion::getVersion()
 string LibraryVersion::getVersion()
 {
 {
-  return "2023.2.0";
+  return "2023.2.1";
 }
 }

+ 3 - 2
source/ls-std/core/Version.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-28
  * Created:         2020-09-28
- * Changed:         2023-02-23
+ * Changed:         2023-05-16
  *
  *
  * */
  * */
 
 
@@ -17,6 +17,7 @@ using std::regex;
 using std::regex_match;
 using std::regex_match;
 using std::stoi;
 using std::stoi;
 using std::string;
 using std::string;
+using std::string_view;
 using std::to_string;
 using std::to_string;
 
 
 Version::Version(version_type _majorVersion, version_type _minorVersion, version_type _patchVersion) : majorVersion(_majorVersion), minorVersion(_minorVersion), patchVersion(_patchVersion)
 Version::Version(version_type _majorVersion, version_type _minorVersion, version_type _patchVersion) : majorVersion(_majorVersion), minorVersion(_minorVersion), patchVersion(_patchVersion)
@@ -90,7 +91,7 @@ void Version::setPatchVersion(version_type _patch)
   this->patchVersion = _patch;
   this->patchVersion = _patch;
 }
 }
 
 
-bool Version::_isValid(const string &_versionString)
+bool Version::_isValid(string_view _versionString)
 {
 {
   bool isValidVersionString{};
   bool isValidVersionString{};
   static regex versionRegex{R"(\d+[.]\d+[.]\d+)"};
   static regex versionRegex{R"(\d+[.]\d+[.]\d+)"};

+ 2 - 2
source/ls-std/core/evaluator/IndexOutOfBoundsEvaluator.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-10
 * Created:         2023-02-10
-* Changed:         2023-02-23
+* Changed:         2023-05-16
 *
 *
 * */
 * */
 
 
@@ -18,7 +18,7 @@ using std::string;
 IndexOutOfBoundsEvaluator::IndexOutOfBoundsEvaluator(size_t _index, size_t _size) : index(_index), size(_size)
 IndexOutOfBoundsEvaluator::IndexOutOfBoundsEvaluator(size_t _index, size_t _size) : index(_index), size(_size)
 {}
 {}
 
 
-IndexOutOfBoundsEvaluator::IndexOutOfBoundsEvaluator(size_t _index, size_t _size, string _message) : index(_index), size(_size), message(::move(_message))
+IndexOutOfBoundsEvaluator::IndexOutOfBoundsEvaluator(size_t _index, size_t _size, string _message) : index(_index), message(::move(_message)), size(_size)
 {}
 {}
 
 
 IndexOutOfBoundsEvaluator::~IndexOutOfBoundsEvaluator() noexcept = default;
 IndexOutOfBoundsEvaluator::~IndexOutOfBoundsEvaluator() noexcept = default;

+ 1 - 18
source/ls-std/core/evaluator/NullPointerArgumentEvaluator.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-08
 * Created:         2023-02-08
-* Changed:         2023-04-07
+* Changed:         2023-05-23
 *
 *
 * */
 * */
 
 
@@ -17,23 +17,6 @@ using std::move;
 using std::shared_ptr;
 using std::shared_ptr;
 using std::string;
 using std::string;
 
 
-NullPointerArgumentEvaluator::NullPointerArgumentEvaluator(const void *_rawArgument)
-{
-  shared_ptr<void> value{};
-
-  if (_rawArgument != nullptr)
-  {
-    value = make_shared<int>();
-  }
-
-  this->argument = value;
-}
-
-NullPointerArgumentEvaluator::NullPointerArgumentEvaluator(const void *_rawArgument, string _message) : NullPointerArgumentEvaluator(_rawArgument)
-{
-  this->message = ::move(_message);
-}
-
 NullPointerArgumentEvaluator::NullPointerArgumentEvaluator(const shared_ptr<void> &_argument) : argument(_argument)
 NullPointerArgumentEvaluator::NullPointerArgumentEvaluator(const shared_ptr<void> &_argument) : argument(_argument)
 {}
 {}
 
 

+ 1 - 18
source/ls-std/core/evaluator/NullPointerEvaluator.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-08
 * Created:         2023-02-08
-* Changed:         2023-04-04
+* Changed:         2023-05-24
 *
 *
 * */
 * */
 
 
@@ -17,23 +17,6 @@ using std::move;
 using std::shared_ptr;
 using std::shared_ptr;
 using std::string;
 using std::string;
 
 
-NullPointerEvaluator::NullPointerEvaluator(const void *_rawArgument)
-{
-  shared_ptr<void> value{};
-
-  if (_rawArgument != nullptr)
-  {
-    value = make_shared<int>();
-  }
-
-  this->argument = value;
-}
-
-NullPointerEvaluator::NullPointerEvaluator(const void *_rawArgument, string _message) : NullPointerEvaluator(_rawArgument)
-{
-  this->message = ::move(_message);
-}
-
 NullPointerEvaluator::NullPointerEvaluator(const shared_ptr<void> &_argument) : argument(_argument)
 NullPointerEvaluator::NullPointerEvaluator(const shared_ptr<void> &_argument) : argument(_argument)
 {}
 {}
 
 

+ 3 - 3
source/ls-std/core/exception/EventNotHandledException.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2023-02-04
  * Created:         2023-02-04
- * Changed:         2023-03-28
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 EventNotHandledException::EventNotHandledException() : Exception("EventNotHandledException")
 EventNotHandledException::EventNotHandledException() : Exception("EventNotHandledException")
 {}
 {}
 
 
-EventNotHandledException::EventNotHandledException(string _message) : EventNotHandledException()
+EventNotHandledException::EventNotHandledException(const string &_message) : EventNotHandledException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 EventNotHandledException::~EventNotHandledException() noexcept = default;
 EventNotHandledException::~EventNotHandledException() noexcept = default;

+ 3 - 3
source/ls-std/core/exception/EventNotSubscribedException.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2023-02-04
  * Created:         2023-02-04
- * Changed:         2023-03-28
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 EventNotSubscribedException::EventNotSubscribedException() : Exception("EventNotSubscribedException")
 EventNotSubscribedException::EventNotSubscribedException() : Exception("EventNotSubscribedException")
 {}
 {}
 
 
-EventNotSubscribedException::EventNotSubscribedException(string _message) : EventNotSubscribedException()
+EventNotSubscribedException::EventNotSubscribedException(const string &_message) : EventNotSubscribedException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 EventNotSubscribedException::~EventNotSubscribedException() noexcept = default;
 EventNotSubscribedException::~EventNotSubscribedException() noexcept = default;

+ 7 - 1
source/ls-std/core/exception/Exception.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-22
 * Created:         2023-02-22
-* Changed:         2023-03-28
+* Changed:         2023-05-19
 *
 *
 * */
 * */
 
 
@@ -13,6 +13,7 @@
 using ls::std::core::Exception;
 using ls::std::core::Exception;
 using std::move;
 using std::move;
 using std::string;
 using std::string;
+using std::string_view;
 
 
 Exception::Exception(string _name) : name(::move(_name))
 Exception::Exception(string _name) : name(::move(_name))
 {}
 {}
@@ -39,3 +40,8 @@ const char *Exception::_getIdentifiedMessage(const string &_defaultMessage) cons
 
 
   return ExceptionMessage{concatenatedMessage}.toCharacterPointer();
   return ExceptionMessage{concatenatedMessage}.toCharacterPointer();
 }
 }
+
+void Exception::_setMessage(string_view _message)
+{
+  this->message = _message;
+}

+ 8 - 2
source/ls-std/core/exception/ExceptionMessage.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-07
 * Created:         2023-02-07
-* Changed:         2023-02-23
+* Changed:         2023-05-24
 *
 *
 * */
 * */
 
 
@@ -25,8 +25,14 @@ char *ExceptionMessage::toCharacterPointer()
 
 
   if (!this->message.empty())
   if (!this->message.empty())
   {
   {
-    rawPointerMessage = new char[this->message.size() + 1];
+    size_t initializationSize = this->message.size() + 1;
+    rawPointerMessage = new char[initializationSize];
+#if defined(unix) || defined(__APPLE__)
     strcpy(rawPointerMessage, this->message.c_str());
     strcpy(rawPointerMessage, this->message.c_str());
+#endif
+#ifdef _WIN32
+    strcpy_s(rawPointerMessage, initializationSize, this->message.c_str());
+#endif
     rawPointerMessage[this->message.size()] = '\0';
     rawPointerMessage[this->message.size()] = '\0';
   }
   }
 
 

+ 3 - 3
source/ls-std/core/exception/FileNotFoundException.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2023-02-04
  * Created:         2023-02-04
- * Changed:         2023-03-28
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 FileNotFoundException::FileNotFoundException() : Exception("FileNotFoundException")
 FileNotFoundException::FileNotFoundException() : Exception("FileNotFoundException")
 {}
 {}
 
 
-FileNotFoundException::FileNotFoundException(string _message) : FileNotFoundException()
+FileNotFoundException::FileNotFoundException(const string &_message) : FileNotFoundException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 FileNotFoundException::~FileNotFoundException() noexcept = default;
 FileNotFoundException::~FileNotFoundException() noexcept = default;

+ 3 - 3
source/ls-std/core/exception/FileOperationException.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2023-02-04
  * Created:         2023-02-04
- * Changed:         2023-03-28
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 FileOperationException::FileOperationException() : Exception("FileOperationException")
 FileOperationException::FileOperationException() : Exception("FileOperationException")
 {}
 {}
 
 
-FileOperationException::FileOperationException(string _message) : FileOperationException()
+FileOperationException::FileOperationException(const string &_message) : FileOperationException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 FileOperationException::~FileOperationException() noexcept = default;
 FileOperationException::~FileOperationException() noexcept = default;

+ 3 - 3
source/ls-std/core/exception/IllegalArgumentException.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2023-02-04
  * Created:         2023-02-04
- * Changed:         2023-03-28
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 IllegalArgumentException::IllegalArgumentException() : Exception("IllegalArgumentException")
 IllegalArgumentException::IllegalArgumentException() : Exception("IllegalArgumentException")
 {}
 {}
 
 
-IllegalArgumentException::IllegalArgumentException(string _message) : IllegalArgumentException()
+IllegalArgumentException::IllegalArgumentException(const string &_message) : IllegalArgumentException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 IllegalArgumentException::~IllegalArgumentException() noexcept = default;
 IllegalArgumentException::~IllegalArgumentException() noexcept = default;

+ 3 - 3
source/ls-std/core/exception/IllegalArithmeticOperationException.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2023-02-04
  * Created:         2023-02-04
- * Changed:         2023-03-28
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 IllegalArithmeticOperationException::IllegalArithmeticOperationException() : Exception("IllegalArithmeticOperationException")
 IllegalArithmeticOperationException::IllegalArithmeticOperationException() : Exception("IllegalArithmeticOperationException")
 {}
 {}
 
 
-IllegalArithmeticOperationException::IllegalArithmeticOperationException(string _message) : IllegalArithmeticOperationException()
+IllegalArithmeticOperationException::IllegalArithmeticOperationException(const string &_message) : IllegalArithmeticOperationException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 IllegalArithmeticOperationException::~IllegalArithmeticOperationException() noexcept = default;
 IllegalArithmeticOperationException::~IllegalArithmeticOperationException() noexcept = default;

+ 3 - 3
source/ls-std/core/exception/IncompleteJsonException.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2023-02-04
  * Created:         2023-02-04
- * Changed:         2023-03-28
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 IncompleteJsonException::IncompleteJsonException() : Exception("IncompleteJsonException")
 IncompleteJsonException::IncompleteJsonException() : Exception("IncompleteJsonException")
 {}
 {}
 
 
-IncompleteJsonException::IncompleteJsonException(string _message) : IncompleteJsonException()
+IncompleteJsonException::IncompleteJsonException(const string &_message) : IncompleteJsonException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 IncompleteJsonException::~IncompleteJsonException() noexcept = default;
 IncompleteJsonException::~IncompleteJsonException() noexcept = default;

+ 3 - 3
source/ls-std/core/exception/IndexOutOfBoundsException.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-02-10
 * Created:         2023-02-10
-* Changed:         2023-03-28
+* Changed:         2023-05-19
 *
 *
 * */
 * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 IndexOutOfBoundsException::IndexOutOfBoundsException() : Exception("IndexOutOfBoundsException")
 IndexOutOfBoundsException::IndexOutOfBoundsException() : Exception("IndexOutOfBoundsException")
 {}
 {}
 
 
-IndexOutOfBoundsException::IndexOutOfBoundsException(string _message) : IndexOutOfBoundsException()
+IndexOutOfBoundsException::IndexOutOfBoundsException(const string &_message) : IndexOutOfBoundsException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 IndexOutOfBoundsException::~IndexOutOfBoundsException() noexcept = default;
 IndexOutOfBoundsException::~IndexOutOfBoundsException() noexcept = default;

+ 3 - 3
source/ls-std/core/exception/NotImplementedException.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-03-27
 * Created:         2023-03-27
-* Changed:         2023-03-28
+* Changed:         2023-05-19
 *
 *
 * */
 * */
 
 
@@ -20,9 +20,9 @@ using std::string;
 NotImplementedException::NotImplementedException() : Exception("NotImplementedException")
 NotImplementedException::NotImplementedException() : Exception("NotImplementedException")
 {}
 {}
 
 
-NotImplementedException::NotImplementedException(string _message) : NotImplementedException()
+NotImplementedException::NotImplementedException(const string &_message) : NotImplementedException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 NotImplementedException::~NotImplementedException() noexcept = default;
 NotImplementedException::~NotImplementedException() noexcept = default;

+ 3 - 3
source/ls-std/core/exception/NullPointerException.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2023-02-04
  * Created:         2023-02-04
- * Changed:         2023-03-28
+ * Changed:         2023-05-19
  *
  *
  * */
  * */
 
 
@@ -18,9 +18,9 @@ using std::string;
 NullPointerException::NullPointerException() : Exception("NullPointerException")
 NullPointerException::NullPointerException() : Exception("NullPointerException")
 {}
 {}
 
 
-NullPointerException::NullPointerException(string _message) : NullPointerException()
+NullPointerException::NullPointerException(const string &_message) : NullPointerException()
 {
 {
-  this->message = ::move(_message);
+  this->_setMessage(_message);
 }
 }
 
 
 NullPointerException::~NullPointerException() noexcept = default;
 NullPointerException::~NullPointerException() noexcept = default;

+ 6 - 6
source/ls-std/core/jni/JniApi.cpp

@@ -3,21 +3,21 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-04-07
 * Created:         2023-04-07
-* Changed:         2023-04-11
+* Changed:         2023-05-23
 *
 *
 * */
 * */
 
 
-#include <ls-std/core/evaluator/NullPointerArgumentEvaluator.hpp>
+#include <ls-std/core/evaluator/RawNullPointerArgumentEvaluator.hpp>
 #include <ls-std/core/jni/JniApi.hpp>
 #include <ls-std/core/jni/JniApi.hpp>
 
 
-using ls::std::core::NullPointerArgumentEvaluator;
+using ls::std::core::RawNullPointerArgumentEvaluator;
 using ls::std::core::experimental::JniApi;
 using ls::std::core::experimental::JniApi;
+using ls::std::core::type::RawPointer;
 using std::string;
 using std::string;
 
 
-JniApi::JniApi(JNIEnv *_environment)
+JniApi::JniApi(JNIEnv *_environment) : environment(_environment)
 {
 {
-  NullPointerArgumentEvaluator{_environment, "Java environment is not being provided!"}.evaluate();
-  this->environment = _environment;
+  RawNullPointerArgumentEvaluator<JNIEnv>{RawPointer<JNIEnv>{_environment}, "Java environment is not being provided!"}.evaluate();
 }
 }
 
 
 JniApi::~JniApi() noexcept = default;
 JniApi::~JniApi() noexcept = default;

+ 10 - 9
source/ls-std/core/jni/JniClass.cpp

@@ -3,14 +3,15 @@
 * Company:         Lynar Studios
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2023-04-07
 * Created:         2023-04-07
-* Changed:         2023-04-11
+* Changed:         2023-05-24
 *
 *
 * */
 * */
 
 
 #include <ls-std/core/ConditionalFunctionExecutor.hpp>
 #include <ls-std/core/ConditionalFunctionExecutor.hpp>
 #include <ls-std/core/evaluator/EmptyStringArgumentEvaluator.hpp>
 #include <ls-std/core/evaluator/EmptyStringArgumentEvaluator.hpp>
 #include <ls-std/core/evaluator/NullPointerArgumentEvaluator.hpp>
 #include <ls-std/core/evaluator/NullPointerArgumentEvaluator.hpp>
-#include <ls-std/core/evaluator/NullPointerEvaluator.hpp>
+#include <ls-std/core/evaluator/RawNullPointerArgumentEvaluator.hpp>
+#include <ls-std/core/evaluator/RawNullPointerEvaluator.hpp>
 #include <ls-std/core/jni/JniApi.hpp>
 #include <ls-std/core/jni/JniApi.hpp>
 #include <ls-std/core/jni/JniClass.hpp>
 #include <ls-std/core/jni/JniClass.hpp>
 #include <memory>
 #include <memory>
@@ -18,25 +19,25 @@
 using ls::std::core::ConditionalFunctionExecutor;
 using ls::std::core::ConditionalFunctionExecutor;
 using ls::std::core::EmptyStringArgumentEvaluator;
 using ls::std::core::EmptyStringArgumentEvaluator;
 using ls::std::core::NullPointerArgumentEvaluator;
 using ls::std::core::NullPointerArgumentEvaluator;
-using ls::std::core::NullPointerEvaluator;
+using ls::std::core::RawNullPointerArgumentEvaluator;
+using ls::std::core::RawNullPointerEvaluator;
 using ls::std::core::experimental::JniApi;
 using ls::std::core::experimental::JniApi;
 using ls::std::core::experimental::JniClass;
 using ls::std::core::experimental::JniClass;
 using ls::std::core::experimental::JniClassParameter;
 using ls::std::core::experimental::JniClassParameter;
 using ls::std::core::experimental::JniMethod;
 using ls::std::core::experimental::JniMethod;
 using ls::std::core::experimental::JniReturnValue;
 using ls::std::core::experimental::JniReturnValue;
+using ls::std::core::type::RawPointer;
 using std::make_pair;
 using std::make_pair;
 using std::make_shared;
 using std::make_shared;
 using std::pair;
 using std::pair;
 using std::shared_ptr;
 using std::shared_ptr;
 using std::string;
 using std::string;
 
 
-JniClass::JniClass(const shared_ptr<JniClassParameter> &_parameter, const string &_path)
+JniClass::JniClass(const shared_ptr<JniClassParameter> &_parameter, const string &_path) : parameter(_parameter), path(_path)
 {
 {
   NullPointerArgumentEvaluator{_parameter, "no provided reference to JNI class parameter!"}.evaluate();
   NullPointerArgumentEvaluator{_parameter, "no provided reference to JNI class parameter!"}.evaluate();
   EmptyStringArgumentEvaluator{_path, "path to associated Java class is empty!"}.evaluate();
   EmptyStringArgumentEvaluator{_path, "path to associated Java class is empty!"}.evaluate();
-  NullPointerArgumentEvaluator{_parameter->getJavaEnvironment(), "Java environment is not being provided!"}.evaluate();
-  this->parameter = _parameter;
-  this->path = _path;
+  RawNullPointerArgumentEvaluator<JNIEnv>{RawPointer<JNIEnv>{_parameter->getJavaEnvironment()}, "Java environment is not being provided!"}.evaluate();
   ConditionalFunctionExecutor{_parameter->getJniApi() == nullptr}.execute([this]() { _createJniApi(); });
   ConditionalFunctionExecutor{_parameter->getJniApi() == nullptr}.execute([this]() { _createJniApi(); });
 }
 }
 
 
@@ -74,7 +75,7 @@ bool JniClass::load()
 
 
 bool JniClass::loadMethod(const string &_methodIdentifier, const string &_methodSignature)
 bool JniClass::loadMethod(const string &_methodIdentifier, const string &_methodSignature)
 {
 {
-  NullPointerEvaluator{this->javaClass, "no Java class reference available for loading class method!"}.evaluate();
+  RawNullPointerEvaluator<_jclass>{RawPointer<_jclass>{this->javaClass}, "no Java class reference available for loading class method!"}.evaluate();
   jmethodID methodId = this->parameter->getJniApi()->getMethodId(this->javaClass, _methodIdentifier.c_str(), _methodSignature.c_str());
   jmethodID methodId = this->parameter->getJniApi()->getMethodId(this->javaClass, _methodIdentifier.c_str(), _methodSignature.c_str());
   bool succeeded = methodId != nullptr && !this->_hasMethod(_methodIdentifier);
   bool succeeded = methodId != nullptr && !this->_hasMethod(_methodIdentifier);
 
 
@@ -192,7 +193,7 @@ void JniClass::_callShortMethod(const string &_methodIdentifier, JniReturnValue
   }
   }
 }
 }
 
 
-void JniClass::_createJniApi()
+void JniClass::_createJniApi() const
 {
 {
   this->parameter->setJniApi(make_shared<JniApi>(this->parameter->getJavaEnvironment()));
   this->parameter->setJniApi(make_shared<JniApi>(this->parameter->getJavaEnvironment()));
 }
 }

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