Browse Source

Add missing nodiscard declarations to io module

Patrick-Christopher Mattulat 2 years ago
parent
commit
fa502a7306

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -40,25 +40,25 @@ namespace ls::std::io
 
       // additional functionality
 
-      bool canExecute();
-      bool canRead();
-      bool canWrite();
+      [[nodiscard]] bool canExecute();
+      [[nodiscard]] bool canRead();
+      [[nodiscard]] bool canWrite();
       void createNewFile();
-      bool exists();
-      ::std::string getAbsoluteFilePath();
-      ::std::string getName();
-      ::std::string getParent();
-      static ::std::string getWorkingDirectory();
-      long getSize();
-      bool isDirectory();
-      bool isFile();
-      time_t lastModified();
-      ::std::list<::std::string> list();
-      ::std::list<::std::string> listFiles();
+      [[nodiscard]] bool exists();
+      [[nodiscard]] ::std::string getAbsoluteFilePath();
+      [[nodiscard]] ::std::string getName();
+      [[nodiscard]] ::std::string getParent();
+      [[nodiscard]] long getSize();
+      [[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();
-      bool renameTo(const ::std::string &_newName);
+      bool renameTo(const ::std::string &_newName); // nodiscard is optional here
       void reset(const ::std::string &_newPath);
 
     private:
@@ -71,37 +71,37 @@ namespace ls::std::io
 #ifdef _WIN32
       static void _addToFileListWindows(const ::std::string &_path, bool _withDirectories, WIN32_FIND_DATA _data, ::std::list<::std::string> &_list);
 #endif
-      static bool _equals(ls::std::io::File &_file, ls::std::io::File &_foreignFile);
-      static bool _exists(const ::std::string &_path);
-      static ::std::string _getParent(const ::std::string &_path);
+      [[nodiscard]] static bool _equals(ls::std::io::File &_file, ls::std::io::File &_foreignFile);
+      [[nodiscard]] static bool _exists(const ::std::string &_path);
+      [[nodiscard]] static ::std::string _getParent(const ::std::string &_path);
 #if defined(unix) || defined(__APPLE__)
-      static ::std::string _getWorkingDirectoryUnix();
+      [[nodiscard]] static ::std::string _getWorkingDirectoryUnix();
 #endif
 #ifdef _WIN32
-      static ::std::string _getWorkingDirectoryWindows();
+      [[nodiscard]] static ::std::string _getWorkingDirectoryWindows();
 #endif
-      static bool _isDirectory(const ::std::string &_path);
-      static bool _isExecutable(const ::std::string &_path);
-      static bool _isFile(const ::std::string &_path);
+      [[nodiscard]] static bool _isDirectory(const ::std::string &_path);
+      [[nodiscard]] static bool _isExecutable(const ::std::string &_path);
+      [[nodiscard]] static bool _isFile(const ::std::string &_path);
 #if defined(unix) || defined(__APPLE__)
-      static bool _isReadableUnix(const ::std::string &_path);
+      [[nodiscard]] static bool _isReadableUnix(const ::std::string &_path);
 #endif
 #ifdef _WIN32
-      static bool _isReadableWindows(const ::std::string &_path);
+      [[nodiscard]] static bool _isReadableWindows(const ::std::string &_path);
 #endif
-      static bool _isWritable(const ::std::string &_path);
-      static time_t _lastModified(const ::std::string &_path);
-      static ::std::list<::std::string> _list(const ::std::string &_path);
-      static ::std::list<::std::string> _listFiles(const ::std::string &_path);
+      [[nodiscard]] static bool _isWritable(const ::std::string &_path);
+      [[nodiscard]] static time_t _lastModified(const ::std::string &_path);
+      [[nodiscard]] static ::std::list<::std::string> _list(const ::std::string &_path);
+      [[nodiscard]] static ::std::list<::std::string> _listFiles(const ::std::string &_path);
 #if defined(unix) || defined(__APPLE__)
-      static ::std::list<::std::string> _listUnix(const ::std::string &_path, bool withDirectories);
+      [[nodiscard]] static ::std::list<::std::string> _listUnix(const ::std::string &_path, bool withDirectories);
 #endif
 #ifdef _WIN32
-      static ::std::list<::std::string> _listWindows(const ::std::string &_path, bool withDirectories);
+      [[nodiscard]] static ::std::list<::std::string> _listWindows(const ::std::string &_path, bool withDirectories);
 #endif
-      static int _mkdir(const ::std::string &_path);
-      static ::std::string _normalizePath(::std::string _path);
-      static ::std::string _reduceSeparators(const ::std::string &_path);
+      [[nodiscard]] static int _mkdir(const ::std::string &_path);
+      [[nodiscard]] static ::std::string _normalizePath(::std::string _path);
+      [[nodiscard]] static ::std::string _reduceSeparators(const ::std::string &_path);
       static void _remove(const ::std::string &_path);
 #if defined(unix) || defined(__APPLE__)
       static void _removeUnix(const ::std::string &_path);
@@ -109,9 +109,9 @@ namespace ls::std::io
 #ifdef _WIN32
       static void _removeWindows(const ::std::string &_path);
 #endif
-      static bool _renameTo(const ::std::string &_oldName, const ::std::string &_newName);
-      static ::std::string _replaceWrongSeparator(::std::string _path);
-      static ::std::vector<::std::string> _splitIntoSubDirectoryNames(const ::std::string &_path);
+      [[nodiscard]] static bool _renameTo(const ::std::string &_oldName, const ::std::string &_newName);
+      [[nodiscard]] static ::std::string _replaceWrongSeparator(::std::string _path);
+      [[nodiscard]] static ::std::vector<::std::string> _splitIntoSubDirectoryNames(const ::std::string &_path);
   };
 }
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
- * Changed:         2023-02-03
+ * Changed:         2023-02-06
  *
  * */
 
@@ -27,7 +27,7 @@ namespace ls::std::io
       ~FileOutputStream() override;
 
       void close();
-      bool write(const ls::std::core::type::byte_field &_data) override;
+      bool write(const ls::std::core::type::byte_field &_data) override; // nodiscard is optional here
 
     private:
 

+ 4 - 4
include/ls-std/io/FilePathSeparator.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -22,9 +22,9 @@ namespace ls::std::io
       FilePathSeparator();
       ~FilePathSeparator();
 
-      static char get();
-      static char getUnixFilePathSeparator();
-      static char getWindowsFilePathSeparator();
+      [[nodiscard]] static char get();
+      [[nodiscard]] static char getUnixFilePathSeparator();
+      [[nodiscard]] static char getWindowsFilePathSeparator();
   };
 }
 

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

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

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

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

+ 4 - 4
include/ls-std/io/NewLine.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-18
- * Changed:         2023-02-05
+ * Changed:         2023-02-06
  *
  * */
 
@@ -22,9 +22,9 @@ namespace ls::std::io
       NewLine();
       ~NewLine();
 
-      static ::std::string get();
-      static ::std::string getUnixNewLine();
-      static ::std::string getWindowsNewLine();
+      [[nodiscard]] static ::std::string get();
+      [[nodiscard]] static ::std::string getUnixNewLine();
+      [[nodiscard]] static ::std::string getWindowsNewLine();
   };
 }
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-06
- * Changed:         2023-02-05
+ * Changed:         2023-02-06
  *
  * */
 
@@ -22,7 +22,7 @@ namespace ls::std::io
       StandardOutputWriter();
       ~StandardOutputWriter() override;
 
-      bool write(const ls::std::core::type::byte_field &_data) override;
+      bool write(const ls::std::core::type::byte_field &_data) override; // nodiscard is optional here
   };
 }
 

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

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

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -25,17 +25,17 @@ namespace ls::std::io
       KvDocument();
       ~KvDocument() override;
 
-      bool addPair(ls::std::io::KvPair _pair);
+      bool addPair(ls::std::io::KvPair _pair); // nodiscard is optional here
       void clear();
-      ::std::map<ls::std::core::type::kv_key, ls::std::io::KvPair> getPairs();
-      bool hasPair(const ls::std::core::type::kv_key &_key);
-      bool removePair(const ls::std::core::type::kv_key &_key);
+      [[nodiscard]] ::std::map<ls::std::core::type::kv_key, ls::std::io::KvPair> getPairs();
+      [[nodiscard]] bool hasPair(const ls::std::core::type::kv_key &_key);
+      bool removePair(const ls::std::core::type::kv_key &_key); // nodiscard is optional here
 
     private:
 
       ::std::map<ls::std::core::type::kv_key, ls::std::io::KvPair> pairs{};
 
-      bool _hasPair(const ls::std::core::type::kv_key &_key);
+      [[nodiscard]] bool _hasPair(const ls::std::core::type::kv_key &_key);
   };
 }
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -28,11 +28,11 @@ namespace ls::std::io
 
       // implementation
 
-      ls::std::core::type::byte_field read() override;
+      [[nodiscard]] ls::std::core::type::byte_field read() override;
 
       // additional functionality
 
-      ::std::shared_ptr<ls::std::io::KvDocument> getDocument();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::KvDocument> getDocument();
       void setDocument(const ::std::shared_ptr<ls::std::io::KvDocument> &_document);
       void setFile(const ls::std::io::File &_kvFile);
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -23,8 +23,8 @@ namespace ls::std::io
       explicit KvPair(const ls::std::core::type::kv_key &_key, ls::std::core::type::kv_value _value);
       ~KvPair() override;
 
-      ls::std::core::type::kv_key getKey();
-      ls::std::core::type::kv_value getValue();
+      [[nodiscard]] ls::std::core::type::kv_key getKey();
+      [[nodiscard]] ls::std::core::type::kv_value getValue();
       void setValue(const ls::std::core::type::kv_value &_value);
 
     private:

+ 1 - 1
include/ls-std/io/kv/KvParseParameter.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-05
+ * Changed:         2023-02-06
  *
  * */
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-12-25
- * Changed:         2023-02-05
+ * Changed:         2023-02-06
  *
  * */
 
@@ -26,7 +26,7 @@ namespace ls::std::io
       explicit KvParser(const ::std::shared_ptr<ls::std::io::KvDocument> &_document);
       ~KvParser() override;
 
-      ::std::shared_ptr<ls::std::io::KvDocument> getDocument();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::KvDocument> getDocument();
       void parse(const ls::std::core::type::byte_field &_data);
       void setDocument(const ::std::shared_ptr<ls::std::io::KvDocument> &_document);
 
@@ -35,11 +35,11 @@ namespace ls::std::io
       ::std::shared_ptr<ls::std::io::KvDocument> document{};
 
       void _assignDocument(const ::std::shared_ptr<ls::std::io::KvDocument> &_document);
-      static bool _contains(const ::std::string &_text, const ::std::string &_searchText);
-      static bool _lineHasPair(ls::std::io::KvParseParameter &_parseParameter);
+      [[nodiscard]] static bool _contains(const ::std::string &_text, const ::std::string &_searchText);
+      [[nodiscard]] static bool _lineHasPair(ls::std::io::KvParseParameter &_parseParameter);
       void _parse(const ls::std::core::type::byte_field &_data);
       void _parsePair(ls::std::io::KvParseParameter &_parseParameter);
-      static ls::std::io::KvParseParameter _readLine(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
+      [[nodiscard]] static ls::std::io::KvParseParameter _readLine(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
       static void _readLineWithUnixLineBreak(ls::std::io::KvParseParameter &_parseParameter);
       static void _readLineWithWindowsLineBreak(ls::std::io::KvParseParameter &_parseParameter);
   };

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -35,16 +35,16 @@ namespace ls::std::io
 
       void setLogLevel(const ls::std::io::LogLevelValue &_value);
       void setLogLevel(const ::std::string &_value);
-      ::std::string toString() const;
+      [[nodiscard]] ::std::string toString() const;
 
     private:
 
       ::std::unordered_map<uint8_t, ::std::string> level{};
       ls::std::io::LogLevelValue value{};
 
-      ls::std::io::LogLevelValue _getValueFromString(const ::std::string &_value);
+      [[nodiscard]] ls::std::io::LogLevelValue _getValueFromString(const ::std::string &_value);
       void _init();
-      bool _isValidLogLevelString(const ::std::string &_value);
+      [[nodiscard]] bool _isValidLogLevelString(const ::std::string &_value);
   };
 }
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-20
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -30,7 +30,7 @@ namespace ls::std::io
       void debug(const ls::std::core::type::byte *_data);
       void error(const ls::std::core::type::byte *_data);
       void fatal(const ls::std::core::type::byte *_data);
-      ls::std::io::LogLevel getLogLevel();
+      [[nodiscard]] ls::std::io::LogLevel getLogLevel();
       void info(const ls::std::core::type::byte *_data);
       void setLogLevel(const ls::std::io::LogLevelValue &_logLevelValue);
       void trace(const ls::std::core::type::byte *_data);
@@ -42,11 +42,11 @@ namespace ls::std::io
       ::std::shared_ptr<ls::std::core::interface_type::IWriter> writer{};
 
       void _assignWriter(const ::std::shared_ptr<ls::std::core::interface_type::IWriter> &_writer);
-      static ::std::string _buildCharacterChain(size_t _amount);
-      static ::std::string _createFillContent(const ::std::string &_text);
-      static ::std::string _generateTimeString(tm *_localTime);
+      [[nodiscard]] static ::std::string _buildCharacterChain(size_t _amount);
+      [[nodiscard]] static ::std::string _createFillContent(const ::std::string &_text);
+      [[nodiscard]] static ::std::string _generateTimeString(tm *_localTime);
       void _log(const ls::std::core::type::byte *_data, const ls::std::io::LogLevel &_logLevel);
-      static ::std::string _padRight(const ::std::string &_text);
+      [[nodiscard]] static ::std::string _padRight(const ::std::string &_text);
   };
 }
 

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

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

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

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

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

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

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-24
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -25,30 +25,30 @@ namespace ls::std::io
       explicit XmlNode(::std::string _name);
       ~XmlNode() override;
 
-      bool addAttributeAfter(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute, const ::std::string &_name);
-      bool addAttributeBefore(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute, const ::std::string &_name);
-      bool addAttributeToBeginning(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute);
-      bool addAttributeToEnd(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute);
-      bool addChildAfter(const ::std::shared_ptr<ls::std::io::XmlNode> &_child, const ::std::shared_ptr<ls::std::io::XmlNode> &_search);
-      bool addChildBefore(const ::std::shared_ptr<ls::std::io::XmlNode> &_child, const ::std::shared_ptr<ls::std::io::XmlNode> &_search);
-      bool addChildToBeginning(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
-      bool addChildToEnd(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
+      bool addAttributeAfter(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute, const ::std::string &_name); // nodiscard is optional here
+      bool addAttributeBefore(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute, const ::std::string &_name); // nodiscard is optional here
+      bool addAttributeToBeginning(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute); // nodiscard is optional here
+      bool addAttributeToEnd(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute); // nodiscard is optional here
+      bool addChildAfter(const ::std::shared_ptr<ls::std::io::XmlNode> &_child, const ::std::shared_ptr<ls::std::io::XmlNode> &_search); // nodiscard is optional here
+      bool addChildBefore(const ::std::shared_ptr<ls::std::io::XmlNode> &_child, const ::std::shared_ptr<ls::std::io::XmlNode> &_search); // 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
       void clearValue();
-      ::std::list<::std::shared_ptr<ls::std::io::XmlAttribute>> getAttributes();
-      ::std::list<::std::shared_ptr<ls::std::io::XmlNode>> getChildren();
-      ::std::list<::std::shared_ptr<ls::std::io::XmlNode>> getChildren(const ::std::string &_name);
-      ::std::string getName();
-      ::std::string getValue();
-      bool hasAttribute(const ::std::string &_name);
-      bool hasChild(const ::std::string &_name);
-      bool hasChild(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
-      bool removeFirstAttribute();
-      bool removeLastAttribute();
-      bool removeFirstChild();
-      bool removeLastChild();
+      [[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::XmlNode>> getChildren(const ::std::string &_name);
+      [[nodiscard]] ::std::string getName();
+      [[nodiscard]] ::std::string getValue();
+      [[nodiscard]] bool hasAttribute(const ::std::string &_name);
+      [[nodiscard]] bool hasChild(const ::std::string &_name);
+      [[nodiscard]] bool hasChild(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
+      bool removeFirstAttribute(); // nodiscard is optional here
+      bool removeLastAttribute(); // nodiscard is optional here
+      bool removeFirstChild(); // nodiscard is optional here
+      bool removeLastChild(); // nodiscard is optional here
       void setName(const ::std::string &_name);
       void setValue(const ::std::string &_value);
-      ::std::string toXml();
+      [[nodiscard]] ::std::string toXml();
 
     protected:
 
@@ -67,16 +67,16 @@ namespace ls::std::io
       static void _checkIfAttributeReferenceIsValid(const ::std::shared_ptr<ls::std::io::XmlAttribute> &_attribute);
       static void _checkIfNameIsNotEmpty(const ::std::string &_name);
       static void _checkIfNodeReferenceIsValid(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
-      static ::std::string _getTab(uint8_t _tabSize);
-      bool _hasAttribute(const ::std::string &_name);
-      bool _hasChild(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
-      bool _hasChild(const ::std::string &_name);
-      ::std::string _toXmlAttributes();
-      ::std::string _toXmlChildren(uint8_t _tabSize);
-      ::std::string _toXmlCloseTag();
-      ::std::string _toXmlOpenTag();
-      ::std::string _toXmlOpenTagClose();
-      ::std::string _toXmlValue();
+      [[nodiscard]] static ::std::string _getTab(uint8_t _tabSize);
+      [[nodiscard]] bool _hasAttribute(const ::std::string &_name);
+      [[nodiscard]] bool _hasChild(const ::std::shared_ptr<ls::std::io::XmlNode> &_child);
+      [[nodiscard]] bool _hasChild(const ::std::string &_name);
+      [[nodiscard]] ::std::string _toXmlAttributes();
+      [[nodiscard]] ::std::string _toXmlChildren(uint8_t _tabSize);
+      [[nodiscard]] ::std::string _toXmlCloseTag();
+      [[nodiscard]] ::std::string _toXmlOpenTag();
+      [[nodiscard]] ::std::string _toXmlOpenTagClose();
+      [[nodiscard]] ::std::string _toXmlValue();
   };
 }
 

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-25
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -27,14 +27,14 @@ namespace ls::std::io
       explicit XmlParser(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       ~XmlParser() override;
 
-      ::std::shared_ptr<ls::std::io::XmlDocument> getDocument();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlDocument> getDocument();
       void parse(const ls::std::core::type::byte_field &_data);
       void setDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
 
     protected:
 
-      static ::std::pair<::std::string, ::std::string> _readAttribute_(const ls::std::core::type::byte_field &_data);
-      static ::std::list<::std::pair<::std::string, ::std::string>> _readAttributes_(ls::std::core::type::byte_field _data);
+      [[nodiscard]] static ::std::pair<::std::string, ::std::string> _readAttribute_(const ls::std::core::type::byte_field &_data);
+      [[nodiscard]] static ::std::list<::std::pair<::std::string, ::std::string>> _readAttributes_(ls::std::core::type::byte_field _data);
 
     private:
 
@@ -46,13 +46,13 @@ namespace ls::std::io
 
       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);
-      static bool _contains(const ::std::string &_text, const ::std::string &_searchText);
-      static ::std::shared_ptr<ls::std::io::XmlDeclaration> _createDeclaration(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes);
-      static ::std::shared_ptr<ls::std::io::XmlNode> _createNode(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes, const ::std::string &_name);
-      static bool _endsWith(const ::std::string &_text, const ::std::string &_ending);
-      static ::std::pair<::std::string, ::std::string> _findAttribute(const ::std::list<::std::pair<::std::string, ::std::string>> &_attributes, const ::std::string &_name);
-      static size_t _findAttributeEndPosition(const ls::std::core::type::byte_field &_data);
-      static ls::std::core::type::byte_field _getNextTagString(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
+      [[nodiscard]] static bool _contains(const ::std::string &_text, const ::std::string &_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::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::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 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);
@@ -61,13 +61,13 @@ namespace ls::std::io
       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 _parse(const ls::std::core::type::byte_field &_data);
-      static ::std::pair<::std::string, ::std::string> _parseAttribute(const ls::std::core::type::byte_field &_data);
-      static ::std::list<::std::pair<::std::string, ::std::string>> _parseAttributes(ls::std::core::type::byte_field _data);
-      size_t _parseClosingTag(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
-      size_t _parseDeclaration(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
-      size_t _parseOpeningTag(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
-      static ls::std::core::type::byte_field _parseTagName(const ls::std::core::type::byte_field &_data);
-      size_t _parseValue(const ls::std::core::type::byte_field &_data, ::std::string::size_type _index);
+      [[nodiscard]] static ::std::pair<::std::string, ::std::string> _parseAttribute(const 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 _parseDeclaration(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);
       void _reset();
       void _setMaxLevel();
   };

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

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-10-08
- * Changed:         2023-02-04
+ * Changed:         2023-02-06
  *
  * */
 
@@ -34,7 +34,7 @@ namespace ls::std::io
 
       // additional functionality
 
-      ::std::shared_ptr<ls::std::io::XmlDocument> getDocument();
+      [[nodiscard]] ::std::shared_ptr<ls::std::io::XmlDocument> getDocument();
       void setDocument(const ::std::shared_ptr<ls::std::io::XmlDocument> &_document);
       void setFile(const ls::std::io::File &_xmlFile);
 

+ 2 - 2
source/ls-std/io/File.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-08-15
- * Changed:         2023-02-05
+ * Changed:         2023-02-06
  *
  * */
 
@@ -200,7 +200,7 @@ void ls::std::io::File::makeDirectories()
 
     if (!ls::std::io::File::_exists(currentHierarchy))
     {
-      ls::std::io::File::_mkdir(currentHierarchy);
+      ls::std::io::File::_mkdir(currentHierarchy); // TODO: think of return type usage, maybe change to bool?
     }
 
     currentHierarchy += separator;

+ 1 - 1
test/cases/io/FileTest.cpp

@@ -98,7 +98,7 @@ namespace
         {
           try
           {
-            file.canRead();
+            bool isReadable = file.canRead();
           }
           catch (const FileOperationException &_exception)
           {

+ 4 - 4
test/cases/io/xml/XmlNodeTest.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-25
- * Changed:         2023-02-05
+ * Changed:         2023-02-06
  *
  * */
 
@@ -654,7 +654,7 @@ namespace
         {
           try
           {
-            dialogNode.hasAttribute("");
+            bool hasAttribute = dialogNode.hasAttribute("");
           }
           catch (const IllegalArgumentException &_exception)
           {
@@ -690,7 +690,7 @@ namespace
         {
           try
           {
-            dialogNode.hasChild("");
+            bool hasChild = dialogNode.hasChild("");
           }
           catch (const IllegalArgumentException &_exception)
           {
@@ -728,7 +728,7 @@ namespace
         {
           try
           {
-            dialogNode.hasChild(searchNode);
+            bool hasChild = dialogNode.hasChild(searchNode);
           }
           catch (const IllegalArgumentException &_exception)
           {