You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2017/04/20 14:06:21 UTC

arrow git commit: ARROW-863: [GLib] Use GBytes to implement zero-copy

Repository: arrow
Updated Branches:
  refs/heads/master a68f31b0f -> 3f9b26c0e


ARROW-863: [GLib] Use GBytes to implement zero-copy

Author: Kouhei Sutou <ko...@clear-code.com>

Closes #572 from kou/glib-buffer-use-gbytes and squashes the following commits:

dc37de3 [Kouhei Sutou] [GLib] Use GBytes to implement zero-copy


Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/3f9b26c0
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/3f9b26c0
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/3f9b26c0

Branch: refs/heads/master
Commit: 3f9b26c0edc84fb0d5c121937f966553bb12c0bf
Parents: a68f31b
Author: Kouhei Sutou <ko...@clear-code.com>
Authored: Thu Apr 20 10:06:15 2017 -0400
Committer: Wes McKinney <we...@twosigma.com>
Committed: Thu Apr 20 10:06:15 2017 -0400

----------------------------------------------------------------------
 c_glib/arrow-glib/buffer.cpp | 13 +++++++------
 c_glib/arrow-glib/buffer.h   |  3 +--
 c_glib/test/test-buffer.rb   |  6 +++---
 c_glib/test/test-tensor.rb   |  2 +-
 4 files changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/arrow/blob/3f9b26c0/c_glib/arrow-glib/buffer.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/buffer.cpp b/c_glib/arrow-glib/buffer.cpp
index 0ec52df..9853e89 100644
--- a/c_glib/arrow-glib/buffer.cpp
+++ b/c_glib/arrow-glib/buffer.cpp
@@ -167,18 +167,19 @@ garrow_buffer_get_capacity(GArrowBuffer *buffer)
 /**
  * garrow_buffer_get_data:
  * @buffer: A #GArrowBuffer.
- * @size: (out): The number of bytes of the data.
  *
- * Returns: (array length=size): The data of the buffer.
+ * Returns: (transfer full): The data of the buffer. The data is owned by
+ *   the buffer. You should not free or modify the data.
  *
  * Since: 0.3.0
  */
-const guint8 *
-garrow_buffer_get_data(GArrowBuffer *buffer, gint64 *size)
+GBytes *
+garrow_buffer_get_data(GArrowBuffer *buffer)
 {
   auto arrow_buffer = garrow_buffer_get_raw(buffer);
-  *size = arrow_buffer->size();
-  return arrow_buffer->data();
+  auto data = g_bytes_new_static(arrow_buffer->data(),
+                                 arrow_buffer->size());
+  return data;
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/arrow/blob/3f9b26c0/c_glib/arrow-glib/buffer.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/buffer.h b/c_glib/arrow-glib/buffer.h
index 1e7d551..83e1d0d 100644
--- a/c_glib/arrow-glib/buffer.h
+++ b/c_glib/arrow-glib/buffer.h
@@ -61,8 +61,7 @@ GArrowBuffer  *garrow_buffer_new          (const guint8 *data,
                                            gint64 size);
 gboolean       garrow_buffer_is_mutable   (GArrowBuffer *buffer);
 gint64         garrow_buffer_get_capacity (GArrowBuffer *buffer);
-const guint8  *garrow_buffer_get_data     (GArrowBuffer *buffer,
-                                           gint64 *size);
+GBytes        *garrow_buffer_get_data     (GArrowBuffer *buffer);
 gint64         garrow_buffer_get_size     (GArrowBuffer *buffer);
 GArrowBuffer  *garrow_buffer_get_parent   (GArrowBuffer *buffer);
 

http://git-wip-us.apache.org/repos/asf/arrow/blob/3f9b26c0/c_glib/test/test-buffer.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-buffer.rb b/c_glib/test/test-buffer.rb
index 1ea26f2..6bb9671 100644
--- a/c_glib/test/test-buffer.rb
+++ b/c_glib/test/test-buffer.rb
@@ -32,7 +32,7 @@ class TestBuffer < Test::Unit::TestCase
   end
 
   def test_data
-    assert_equal(@data, @buffer.data.pack("C*"))
+    assert_equal(@data, @buffer.data.to_s)
   end
 
   def test_size
@@ -45,11 +45,11 @@ class TestBuffer < Test::Unit::TestCase
 
   def test_copy
     copied_buffer = @buffer.copy(1, 3)
-    assert_equal(@data[1, 3], copied_buffer.data.pack("C*"))
+    assert_equal(@data[1, 3], copied_buffer.data.to_s)
   end
 
   def test_slice
     sliced_buffer = @buffer.slice(1, 3)
-    assert_equal(@data[1, 3], sliced_buffer.data.pack("C*"))
+    assert_equal(@data[1, 3], sliced_buffer.data.to_s)
   end
 end

http://git-wip-us.apache.org/repos/asf/arrow/blob/3f9b26c0/c_glib/test/test-tensor.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-tensor.rb b/c_glib/test/test-tensor.rb
index 3e1f541..225857b 100644
--- a/c_glib/test/test-tensor.rb
+++ b/c_glib/test/test-tensor.rb
@@ -49,7 +49,7 @@ class TestTensor < Test::Unit::TestCase
   end
 
   def test_buffer
-    assert_equal(@raw_data, @tensor.buffer.data)
+    assert_equal(@raw_data, @tensor.buffer.data.to_s.unpack("c*"))
   end
 
   def test_shape