3#ifndef AWKWARDPY_CONTENT_H_
4#define AWKWARDPY_CONTENT_H_
6#include <pybind11/numpy.h>
7#include <pybind11/pybind11.h>
8#include <pybind11/stl.h>
13namespace py = pybind11;
19 return self.tostring();
38py::class_<ak::ArrayBuilder>
44 py::dict container() {
49 empty_buffer(
const std::string& name, int64_t num_bytes)
override {
50 py::object pyarray = py::module::import(
"numpy").attr(
"empty")(num_bytes,
"u1");
51 py::array_t<uint8_t> rawarray = pyarray.cast<py::array_t<uint8_t>>();
52 py::buffer_info rawinfo = rawarray.request();
53 container_[py::str(name)] = pyarray;
58 copy_buffer(
const std::string& name,
const void* source, int64_t num_bytes)
override {
59 py::object pyarray = py::module::import(
"numpy").attr(
"empty")(num_bytes,
"u1");
60 py::array_t<uint8_t> rawarray = pyarray.cast<py::array_t<uint8_t>>();
61 py::buffer_info rawinfo = rawarray.request();
62 std::memcpy(rawinfo.ptr, source, num_bytes);
63 container_[py::str(name)] = pyarray;
67 full_buffer(
const std::string& name, int64_t length, int64_t value,
const std::string& dtype)
override {
68 py::object pyarray = py::module::import(
"numpy").attr(
"full")(py::int_(length), py::int_(value), py::str(dtype));
69 container_[py::str(name)] = pyarray;
79 empty_buffer(
const std::string& , int64_t )
override {
84 copy_buffer(
const std::string& ,
const void* , int64_t )
override { }
87 full_buffer(
const std::string& , int64_t , int64_t ,
const std::string& )
override { }
Abstract class to represent the output of ak.to_buffers. In Python, this would be a dict of NumPy arr...
Definition: Builder.h:20
py::class_< ak::ArrayBuilder > make_ArrayBuilder(const py::handle &m, const std::string &name)
Makes an ArrayBuilder class in Python that mirrors the one in C++.
ak::util::Parameters dict2parameters(const py::object &in)
int64_t len(const T &self)
Definition: content.h:24
int64_t check_maxdecimals(const py::object &maxdecimals)
py::dict parameters2dict(const ak::util::Parameters &in)
std::string repr(const T &self)
Definition: content.h:18
Definition: ArrayBuilder.h:14