Module: ICU::Lib::Util
- Defined in:
- lib/ffi-icu/lib/util.rb
Class Method Summary collapse
- .read_null_terminated_array_of_strings(pointer) ⇒ Object
- .read_string_buffer(length) ⇒ Object
- .read_uchar_buffer(length, &blk) ⇒ Object
- .read_uchar_buffer_as_ptr(length, &blk) ⇒ Object
Class Method Details
.read_null_terminated_array_of_strings(pointer) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/ffi-icu/lib/util.rb', line 4 def self.read_null_terminated_array_of_strings(pointer) offset = 0 result = [] until (ptr = pointer.get_pointer(offset)).null? result << ptr.read_string offset += FFI::Pointer.size end result end |
.read_string_buffer(length) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/ffi-icu/lib/util.rb', line 16 def self.read_string_buffer(length) attempts = 0 begin result = FFI::MemoryPointer.new(:char, length) Lib.check_error { |status| length = yield result, status } rescue BufferOverflowError attempts += 1 retry if attempts < 2 raise BufferOverflowError, "needed: #{length}" end result.read_string(length) end |
.read_uchar_buffer(length, &blk) ⇒ Object
31 32 33 34 |
# File 'lib/ffi-icu/lib/util.rb', line 31 def self.read_uchar_buffer(length, &blk) buf, len = read_uchar_buffer_as_ptr_impl(length, &blk) buf.string(len) end |
.read_uchar_buffer_as_ptr(length, &blk) ⇒ Object
36 37 38 39 |
# File 'lib/ffi-icu/lib/util.rb', line 36 def self.read_uchar_buffer_as_ptr(length, &blk) buf, _ = read_uchar_buffer_as_ptr_impl(length, &blk) buf end |