Commit 8d1585f0 authored by Antonio Borondo's avatar Antonio Borondo

Change implementation to use templates

parent ad3c216b
...@@ -126,7 +126,7 @@ class wide_string_input_adapter : public input_adapter_protocol ...@@ -126,7 +126,7 @@ class wide_string_input_adapter : public input_adapter_protocol
// check if buffer needs to be filled // check if buffer needs to be filled
if (utf8_bytes_index == utf8_bytes_filled) if (utf8_bytes_index == utf8_bytes_filled)
{ {
fill_buffer(sizeof(typename WideStringType::value_type)); fill_buffer<sizeof(typename WideStringType::value_type)>();
assert(utf8_bytes_filled > 0); assert(utf8_bytes_filled > 0);
assert(utf8_bytes_index == 0); assert(utf8_bytes_index == 0);
...@@ -139,16 +139,16 @@ class wide_string_input_adapter : public input_adapter_protocol ...@@ -139,16 +139,16 @@ class wide_string_input_adapter : public input_adapter_protocol
} }
private: private:
void fill_buffer(size_t size) template<size_t T>
void fill_buffer()
{ {
if (2 == size) fill_buffer_utf32();
{ }
fill_buffer_utf16();
} template<>
else void fill_buffer<2>()
{ {
fill_buffer_utf32(); fill_buffer_utf16();
}
} }
void fill_buffer_utf16() void fill_buffer_utf16()
......
...@@ -2004,7 +2004,7 @@ class wide_string_input_adapter : public input_adapter_protocol ...@@ -2004,7 +2004,7 @@ class wide_string_input_adapter : public input_adapter_protocol
// check if buffer needs to be filled // check if buffer needs to be filled
if (utf8_bytes_index == utf8_bytes_filled) if (utf8_bytes_index == utf8_bytes_filled)
{ {
fill_buffer(sizeof(typename WideStringType::value_type)); fill_buffer<sizeof(typename WideStringType::value_type)>();
assert(utf8_bytes_filled > 0); assert(utf8_bytes_filled > 0);
assert(utf8_bytes_index == 0); assert(utf8_bytes_index == 0);
...@@ -2017,18 +2017,18 @@ class wide_string_input_adapter : public input_adapter_protocol ...@@ -2017,18 +2017,18 @@ class wide_string_input_adapter : public input_adapter_protocol
} }
private: private:
void fill_buffer(size_t size) template<size_t T>
void fill_buffer()
{ {
if (2 == size) fill_buffer_utf32();
{
fill_buffer_utf16();
}
else
{
fill_buffer_utf32();
}
} }
template<>
void fill_buffer<2>()
{
fill_buffer_utf16();
}
void fill_buffer_utf16() void fill_buffer_utf16()
{ {
utf8_bytes_index = 0; utf8_bytes_index = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment