hi Saul -- I think the easiest solution here is the buffer/memoryview protocol. You won't have to touch the Cython or C++ API from pyarrow if you do this.
You can interact with a Buffer object like any other Python object implementing the buffer protocol. See numpy.frombuffer as an example of a function that interacts with such objects. I would suggest adding a method to xnd method for this. If you need to interact with Plasma from C then things will be more complicated -- Robert or Philipp should be able to advise in this case. - Wes On Tue, Mar 6, 2018 at 4:55 PM, Saul Shanabrook <s.shanabr...@gmail.com> wrote: > Hey Wes, > > I don't have much experience doing C + Python + Cython development, so I am > probably missing something obvious, but reading the Cython docs, > <https://cython.readthedocs.io/en/latest/src/userguide/external_C_code.html#public-declarations> > it > seems like I can only access types marked as public from C code. When I > compile arrow locally, I do get some C++ headers for the plasma code, but I > don't think I can use them from C code either. > > Best, > Saul > > > > On Tue, Mar 6, 2018 at 3:12 PM Wes McKinney <wesmck...@gmail.com> wrote: > >> hi Saul, >> >> Are you able to use the buffer/memoryview protocol? Instances of >> pyarrow.Buffer, like PlasmaBuffer, support this >> >> https://github.com/apache/arrow/blob/master/python/pyarrow/plasma.pyx#L182 >> >> - Wes >> >> On Tue, Mar 6, 2018 at 3:09 PM, Saul Shanabrook <s.shanabr...@gmail.com> >> wrote: >> > I am trying to use the Plasma store to back xnd objects. Xnd ( >> > https://xnd.readthedocs.io/en/latest/xnd/index.html) is a container >> library >> > in C that has Python bindings. I would like to get a pointer to the >> > allocated memory after creating or get an object in Plasma. I see that >> this >> > is supported in the C++ API ( >> > >> https://arrow.apache.org/docs/cpp/classplasma_1_1_plasma_client.html#ac18ab9cc792c620a97a3dcb165e0ecd7 >> ) >> > but not in the python API (as far as I can tell). Is it possible to use >> the >> > C++ Plasma API from a C project? If not, would it make sense to expose >> > pointer access on the Python API using capsules >> > https://docs.python.org/3.6/c-api/capsule.html >> > <https://docs.python.org/3.6/c-api/capsule.html#capsules>? >>