Как вы конвертируете объект C ++ в PyObject?

У меня есть два объекта C ++

    int queueIndex
Timer timer_obj

и вот определение класса таймера

class Timer
{

private:
struct timeval tStart; /**< @brief Stores the system time when the timer is started */
struct timeval tFinish; /**< @brief Stores the system time when the timer is stopped */

protected:
float getElapsedTime(struct timeval, struct timeval);

public:
Timer();
string currentTime();
float currentElapsedTime();
void restart();
float stop();
int high_pres_usleep_untill(unsigned long long int);
string getStringStartTimer();
void setStartTimerFromString(string);
void sleep(long int);
unsigned long long int get_clock();

Мне нужно преобразовать эти два объекта в PyObj *. Я использовал для этого boost :: python. Теперь я хочу сделать это без boost или swig.
Я успешно конвертировал Индекс, но я ничего не понял с помощью timer_obj

    PyObject* pyo=PyInt_FromLong(queueIndex)

Я был бы благодарен, если бы кто-то мог помочь мне с этим. Мне просто нужен пример, который вам не нужен, чтобы дать мне полный код. Кроме того, функции, определенные в классе, немного сложны, поэтому я не давал их здесь. преобразовать timer_obj и затем назначить новую ссылку, или мне нужно получить новую ссылку для всех структур и функций в классе и создать новый класс с этими ссылками?

4

Решение

Что вам нужно сделать, это создать тип расширения. К сожалению, этот процесс относительно сложен и займет несколько сотен строк кода. Вот и весь питон boost :: python и SWIG, чтобы удалить весь шаблон.

1

Другие решения

Как сказал Натан, тип расширения относительно задействован. Вы хотели бы изучить Cython для этого, так как синтаксис проще, и он заботится о генерации шаблонного кода внутри. http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html

Вы также можете взглянуть на пример, опубликованный Никласом в https://stackoverflow.com/a/8933819/2156678

0

По вопросам рекламы [email protected]