Bindee

RESOURCE

Abstract

Bindee is a clang tool that outputs a simple pybind11 template given a C++ file for efficient generation of C++-Python bindings. Bindee is intended to be a helper tool for minimizing initial user effort and safeguarding against common runtime errors. Bindee relies on two open-source software to produce bindings. Clang's LibTooling enables bindee to traverse a C++ file's AST to pick out bindable variables and functions, or "bindees." PyBind11 is templated, header-only library for generating C++-Python bindings for variables and functions. Operating purely in C++, bindee does not require learning any new API for accomplishing its task. Additionally, picking the correct pybind11 API for a given bindable element is handled without interaction from the user. Any user input is denoted by '@TEXT@' string substitution. Bindee is capable of generating modular bindings for public class methods, public class variables, enumerations, and free functions and variables. Bindings for templates are also supported. For those familiar with pybind11, bindee does not handle trampolines, C++ extensions through lambdas, or custom type casters.
Developers:
Kimkno, Jason [1]
  1. Lawrence Livermore National Lab. (LLNL), Livermore, CA (United States)
Release Date:
2020-01-24
Project Type:
Open Source, Publicly Available Repository
Software Type:
Scientific
Version:
2.0
Licenses:
MIT License
Sponsoring Org.:
Code ID:
34247
Site Accession Number:
1007867
Research Org.:
Lawrence Livermore National Laboratory (LLNL), Livermore, CA (United States)
Country of Origin:
United States

RESOURCE

Citation Formats

Kimkno, Jason S. Bindee. Computer Software. https://github.com/llnl/bindee. USDOE National Nuclear Security Administration (NNSA). 24 Jan. 2020. Web. doi:10.11578/dc.20200207.2.
Kimkno, Jason S. (2020, January 24). Bindee. [Computer software]. https://github.com/llnl/bindee. https://doi.org/10.11578/dc.20200207.2.
Kimkno, Jason S. "Bindee." Computer software. January 24, 2020. https://github.com/llnl/bindee. https://doi.org/10.11578/dc.20200207.2.
@misc{ doecode_34247,
title = {Bindee},
author = {Kimkno, Jason S.},
abstractNote = {Bindee is a clang tool that outputs a simple pybind11 template given a C++ file for efficient generation of C++-Python bindings. Bindee is intended to be a helper tool for minimizing initial user effort and safeguarding against common runtime errors. Bindee relies on two open-source software to produce bindings. Clang's LibTooling enables bindee to traverse a C++ file's AST to pick out bindable variables and functions, or "bindees." PyBind11 is templated, header-only library for generating C++-Python bindings for variables and functions. Operating purely in C++, bindee does not require learning any new API for accomplishing its task. Additionally, picking the correct pybind11 API for a given bindable element is handled without interaction from the user. Any user input is denoted by '@TEXT@' string substitution. Bindee is capable of generating modular bindings for public class methods, public class variables, enumerations, and free functions and variables. Bindings for templates are also supported. For those familiar with pybind11, bindee does not handle trampolines, C++ extensions through lambdas, or custom type casters. },
doi = {10.11578/dc.20200207.2},
url = {https://doi.org/10.11578/dc.20200207.2},
howpublished = {[Computer Software] \url{https://doi.org/10.11578/dc.20200207.2}},
year = {2020},
month = {jan}
}