scottpurdy / capnp-swig-example

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Example Hybrid Python/C++ Application with Cap'n Proto

This project is to illustrate how to use Cap'n Proto in a Python/C++/SWIG environment where you can pass Cap'n Proto objects between Python and C++ code.

Install

I just hacked this together so you may need to modify the Makefile path for the Python includes. You must also have the latest Cap'n Proto installed. To install, run:

make

This will build the C++ test binary, generate SWIG bindings for the outer.h and inner.h, and build a shared library with Python wrapper.

Running It

The tests show all the different scenarios:

# Run a simple test of the pure-C++ code
./test

# Run a simple test of the pure-Python code
./example/test_python.py

# Run a simple test of the C++ bindings. This test is in Python but uses
# the C++ Outer class (which then uses the C++ Inner class).
./example/test_bindings.py

# Run a hybrid Python/C++ test. This uses a Python Outer class with the
# SWIGed C++ Inner class. It creates a pycapnp OuterProto and passes the
# InnerProto struct to the C++ code. Conversion from the pycapnp struct
# to the appropriate C++ class happens in the bindings.i file.
./example/test_hybrid.py

About


Languages

Language:C++ 55.6%Language:Python 35.6%Language:Makefile 7.5%Language:Cap'n Proto 1.3%