diff --git a/protos/types.proto b/protos/types.proto index ee730a6c4..e1a67aa5e 100644 --- a/protos/types.proto +++ b/protos/types.proto @@ -9,13 +9,17 @@ message String { } message Double { - double data = 1; + double data = 1; } // Empty used to represent a None object message Empty { } +message Bool { + bool data = 1; +} + message PyObj { bytes data = 1; } @@ -25,6 +29,7 @@ message Obj { String string_data = 1; Int int_data = 2; Double double_data = 3; + Bool bool_data = 10; Tuple tuple_data = 7; List list_data = 4; Dict dict_data = 8; diff --git a/src/orchpylib.cc b/src/orchpylib.cc index da16655ad..10bceb9c7 100644 --- a/src/orchpylib.cc +++ b/src/orchpylib.cc @@ -195,6 +195,13 @@ int serialize(PyObject* worker_capsule, PyObject* val, Obj* obj, std::vectormutable_double_data(); double d = PyFloat_AsDouble(val); data->set_data(d); + } else if (PyBool_Check(val)) { + Bool* data = obj->mutable_bool_data(); + if (val == Py_False) { + data->set_data(false); + } else { + data->set_data(true); + } } else if (PyTuple_Check(val)) { Tuple* data = obj->mutable_tuple_data(); for (size_t i = 0, size = PyTuple_Size(val); i < size; ++i) { @@ -321,6 +328,12 @@ PyObject* deserialize(PyObject* worker_capsule, const Obj& obj, std::vector