diff options
Diffstat (limited to 'stdlib/string.h')
-rw-r--r-- | stdlib/string.h | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/stdlib/string.h b/stdlib/string.h deleted file mode 100644 index deb6fde..0000000 --- a/stdlib/string.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once -#include "types.h" - -constexpr size_t strlen(const char *str) { - int len = 0; - while (str[len]) - ++len; - return len; -} - -/* reverse: reverse string s in place */ -constexpr void reverse(char s[]) { - int i, j; - char c; - - for (i = 0, j = strlen(s) - 1; i < j; i++, j--) { - c = s[i]; - s[i] = s[j]; - s[j] = c; - } -} - -/* itoa: convert n to characters in s */ -template <int base = 10> constexpr void itoa(int n, char s[]) { - int i, sign; - - if ((sign = n) < 0) /* record sign */ - n = -n; /* make n positive */ - - i = 0; - do { /* generate digits in reverse order */ - s[i++] = "0123456789abcdef"[n % base]; /* get next digit */ - } while ((n /= base) > 0); /* delete it */ - - if (sign < 0) - s[i++] = '-'; - - s[i] = '\0'; - - reverse(s); -} - -class String { -public: - class Iterator { - friend class String; - - public: - char next() { return p->buffer[pos++]; } - operator bool() const { return (pos < p->m_length); } - - private: - Iterator(const String *s) : p(s) {} - - size_t pos = 0; - const String *p; - }; - - friend class Iterator; - - String(const char *d) : buffer{d}, m_length{strlen(d)} {} - String(const char *d, size_t l) : buffer{d}, m_length{l} {} - - Iterator begin() const { return Iterator(this); } - -private: - const char *const buffer; - const size_t m_length; -}; |