aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-10-12 20:15:15 +0800
committerchai <chaifix@163.com>2018-10-12 20:15:15 +0800
commit05e500a0d6df6fdc30e00ca3bd487380d64f6ada (patch)
treebb0b74b5e990c676f557a190c61d840e6349f64a
parentf2c6791ab4f2f6c4d14aa425355cb6732898375c (diff)
*update
-rw-r--r--libjin/Graphics/Unicode.cpp57
-rw-r--r--libjin/Graphics/Unicode.h15
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
};