diff options
author | chai <chaifix@163.com> | 2018-10-12 20:15:15 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-10-12 20:15:15 +0800 |
commit | 05e500a0d6df6fdc30e00ca3bd487380d64f6ada (patch) | |
tree | bb0b74b5e990c676f557a190c61d840e6349f64a | |
parent | f2c6791ab4f2f6c4d14aa425355cb6732898375c (diff) |
*update
-rw-r--r-- | libjin/Graphics/Unicode.cpp | 57 | ||||
-rw-r--r-- | libjin/Graphics/Unicode.h | 15 |
2 files changed, 68 insertions, 4 deletions
diff --git a/libjin/Graphics/Unicode.cpp b/libjin/Graphics/Unicode.cpp index ad7c6eb..0514636 100644 --- a/libjin/Graphics/Unicode.cpp +++ b/libjin/Graphics/Unicode.cpp @@ -53,16 +53,73 @@ namespace unicode // iterator ///////////////////////////////////////////////////////////////////////////// + Iterator::Iterator(const Iterator& itor) + : _data(itor._data) + , _length(itor._length) + , _p(itor._data) + { + } + + Iterator::Iterator(Encode encode, const void* const data, unsigned int length) + : _data(data) + { + switch (encode) + { + case Encode::UTF8: _decoder = new Utf8(); break; + } + } + Iterator::~Iterator() { delete _decoder; } + Codepoint Iterator::get() + { + + } + Codepoint Iterator::operator*() { } + Iterator Iterator::begin() + { + + } + + Iterator Iterator::end() + { + + } + + void Iterator::operator = (const Iterator& itor) + { + + } + + Iterator& Iterator::operator ++() + { + + return *this; + } + + Iterator Iterator::operator ++(int) + { + + } + + Iterator Iterator::operator !=(const Iterator& itor) + { + + } + + Iterator Iterator::operator ==(const Iterator& itor) + { + + } + } } }
\ No newline at end of file diff --git a/libjin/Graphics/Unicode.h b/libjin/Graphics/Unicode.h index 1ea3667..d5ffb14 100644 --- a/libjin/Graphics/Unicode.h +++ b/libjin/Graphics/Unicode.h @@ -27,24 +27,28 @@ namespace unicode { public: virtual const void* decode(const void* data, unsigned int length, Codepoint* c) = 0; + virtual const void* next(const void* data, unsigned int length) = 0; }; class Utf8 : public Decoder { public: const void* decode(const void* data, unsigned int length, Codepoint* c) override; + const void* next(const void* data, unsigned int lengthm) override; }; class Utf16 : public Decoder { public: const void* decode(const void* data, unsigned int length, Codepoint* c) override; + const void* next(const void* data, unsigned int lengthm) override; }; class Ucs16 : public Decoder { public: const void* decode(const void* data, unsigned int length, Codepoint* c) override; + const void* next(const void* data, unsigned int lengthm) override; }; class Iterator @@ -55,18 +59,21 @@ namespace unicode ~Iterator(); Codepoint get(); - bool next(); + Iterator begin(); + Iterator end(); Codepoint operator *(); - void operator ++(); + /* prefix ++ */ + Iterator& operator ++(); + /* postfix ++ */ + Iterator operator ++(int); Iterator operator !=(const Iterator& itor); Iterator operator ==(const Iterator& itor); - Iterator begin(); void operator = (const Iterator& itor); private: const Decoder* _decoder; // decoder const void* _p; // pointer - const void* _data; // weak pointer + const void* const _data; // weak pointer unsigned int _length; // data length }; |