Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Generic / String / String.h
diff options
context:
space:
mode:
Commit3098e987d83a7fa2ea33e66b901e6941233a9879 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-05-28 09:33:26 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-05-28 09:33:26 +0300
Files8fe54cd3f7c29b24b822762d7249e6310ae97d6a /src/Generic/String/String.h
FMI-OOP-P2_Tables-3098e987d83a7fa2ea33e66b901e6941233a9879.tar
FMI-OOP-P2_Tables-3098e987d83a7fa2ea33e66b901e6941233a9879.tar.gz
FMI-OOP-P2_Tables-3098e987d83a7fa2ea33e66b901e6941233a9879.zip
Parent12df7aa3b9ec4bc6d9b74ae86ef0248d049f8785 (diff)
Added generic stuff from previous project
1 files changed, 56 insertions, 0 deletions
-rw-r--r--src/Generic/String/String.h56
diff --git a/src/Generic/String/String.h b/src/Generic/String/String.h
new file mode 100644
index 0000000..84fbe9c
--- /dev/null
+++ b/src/Generic/String/String.h
@@ -0,0 +1,56 @@
+#ifndef HEADER_STRING
+#define HEADER_STRING
+
+/*! \file String.h
+ * \brief Stores declaration of class String
+ */
+
+#include <istream>
+#include <ostream>
+
+class String {
+ char* str;
+ unsigned length;
+
+ void free();
+ void copyFrom(const String& other);
+
+public:
+ //! The underlying array is allocated with length (+ 1) size
+ String(unsigned length);
+ //! Copies str
+ String(const char* str);
+ //! Returns internal C-style string
+ const char* get_cstr() const;
+ //! Returns number of characters in string
+ unsigned get_length() const;
+ //! Returns a character reference (from the underlying C-style string) at the given index
+ char& operator[](unsigned index);
+
+ //! Appends a C-style string
+ String& operator+=(const char* str);
+ //! Appends a number
+ String& operator+=(unsigned number);
+
+ String();
+ String(const String& other);
+ String& operator=(const String& other);
+ ~String();
+
+ String(String&& other);
+ String& operator=(String&& other);
+
+ //! Reads String from stream
+ void read(std::istream& istr);
+ //! Writes String to stream
+ void write(std::ostream& ostr) const;
+ //! Compares two strings
+ int compare(const String& other) const;
+
+ //! Reads String from stream with >> operator
+ friend std::istream& operator>>(std::istream& istr, String& event);
+ //! Writes String to stream with << operator
+ friend std::ostream& operator<<(std::ostream& ostr, const String& event);
+};
+
+#endif