From 05e500a0d6df6fdc30e00ca3bd487380d64f6ada Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 12 Oct 2018 20:15:15 +0800 Subject: *update --- libjin/Graphics/Unicode.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++ 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 }; -- cgit v1.1-26-g67d0