diff --git a/usr/include/utf8.h b/usr/include/utf8.h deleted file mode 100644 index 94268b7..0000000 --- a/usr/include/utf8.h +++ /dev/null @@ -1,76 +0,0 @@ -// license: cc0 - -#include -#include -#include -#include -#include - -class char32 { - uint32_t fetch32(char** cstr) { - uint32_t r(0); - int i(1); - unsigned char compare = (unsigned char)**cstr; - if (compare >> 3 == 0b11110) i = 4; - if (compare >> 4 == 0b1110) i = 3; - if (compare >> 5 == 0b110) i = 2; - for (;i>0;i--) { - r <<= 8; - r += (unsigned char)**cstr; - (*cstr)++; - } - return r; - } -public: - uint32_t c; - char32(uint32_t i) {c = i;} - char32(const char* s) {c = fetch32((char**)&s);} - char32(char** s) {c = fetch32(s);} - bool operator==(char* cs) {return c==fetch32(&cs);} - bool operator==(char32 cs) {return c==cs.c;} - uint32_t operator>>(int a) const {return c>>a;} - char* toChar() const { - return new char[4]{(char)(c>>24), (char)(c>>16), (char)(c>>8), (char)c}; - } -}; - -std::ostream& operator<<(std::ostream& stream, const char32& c32) { - char* asChar = c32.toChar(); - for (int i(0);i<4;i++) - if (asChar[i]) - stream << asChar[i]; - delete asChar; - return stream; -} - -struct string32 { - std::vector cs; - string32(char* sd) { - while (sd[0]) - cs.push_back(char32(&sd)); - } - int size() const {return cs.size();} - char32 operator[](int i) const {return cs[i];} - void replace(string32 find, string32 with) { - int havematched(0); - int findsize = find.cs.size(); - for (int index(0); index < cs.size(); index++) { - if (cs.at(index) == find.cs.at(havematched)) - havematched++; - else - havematched=0; - if (havematched == findsize) { - index -= findsize-1; - cs.erase(cs.begin()+index, cs.begin()+index+findsize); - cs.insert(cs.begin()+index, with.cs.begin(), with.cs.end()); - break; - } - } - } -}; - -std::ostream& operator<<(std::ostream& stream, const string32& s32) { - for (int i=0;i