From c96dec9ebdd734273c8991e19aed0dc7696a946c Mon Sep 17 00:00:00 2001 From: Ivan Vazhenin Date: Sun, 21 Jan 2024 20:01:24 +0300 Subject: [PATCH] First commit --- CMakeLists.txt | 10 ++++++++++ main.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..be53a06 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.27) +project(bptest) + +set(CMAKE_CXX_STANDARD 17) +find_package(Python3 REQUIRED COMPONENTS Interpreter Development) +find_package(Boost REQUIRED python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR} REQUIRED) + +add_library(bptest SHARED main.cpp) +target_link_libraries(bptest PUBLIC Boost::python Python3::Python) +# target_include_directories(bptest PUBLIC ${Python3_INCLUDE_DIRS}) diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..39b321a --- /dev/null +++ b/main.cpp @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include + +class SomeClass { +public: + explicit SomeClass(std::string n) : name(std::move(n)), mNumber(0.0) {} + + std::string name; + + double getNumber() const; + + void setNumber(double n) { + if (n > 3.141592654) + n = -1; + mNumber = n; + } + + std::string testTime(int secs) { + std::this_thread::sleep_for(std::chrono::seconds(secs)); + return "asdzxc"; + } + +private: + double mNumber; +}; + +double SomeClass::getNumber() const { return mNumber; } + + +#include +#include + +using namespace boost::python; + +BOOST_PYTHON_MODULE (libbptest) { + class_("SomeClass", init()) + .def_readwrite("name", &SomeClass::name) + .add_property("number", &SomeClass::getNumber, &SomeClass::setNumber) + .def("test_time", &SomeClass::testTime) + ; + +} + +int main() { + std::cout << "Hello, World!" << std::endl; + return 0; +}