/* * Author: Patrick-Christopher Mattulat * Company: Lynar Studios * E-Mail: webmaster@lynarstudios.com * Created: 2020-08-14 * Changed: 2023-05-17 * * */ #ifndef LS_STD_STRING_HPP #define LS_STD_STRING_HPP #include #include #include #include #include #include #include #include namespace ls::std::boxing { class LS_STD_DYNAMIC_GOAL String : public ls::std::core::Class, public ls::std::core::interface_type::IBoxing { public: String(); explicit String(::std::string _value); ~String() noexcept override; // assignment operators ls::std::boxing::String &operator=(::std::string _value); // arithmetic operators ::std::string operator+(ls::std::boxing::String _string) const; ::std::string operator+(const ::std::string &_string) const; ::std::string operator+(const char *_string) const; ::std::string operator-(int _number) const; // compound operators ls::std::boxing::String &operator+=(ls::std::boxing::String _string); ls::std::boxing::String &operator+=(const ::std::string &_text); // comparison operators 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 void parse(const ::std::string &_parseText) override; [[nodiscard]] ::std::string toString() override; // additional functionality [[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 getByteData(); [[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: ::std::string value{}; [[nodiscard]] static ::std::string _buildCharacterChain(size_t _amount, char _fillCharacter); [[nodiscard]] static ::std::string _createFillContent(::std::string_view _text, size_t _width, char _fillCharacter); }; } #endif