initialize cython interface for tdm_reaper

This commit is contained in:
Mario Fink 2021-01-25 18:18:39 +01:00
parent 529b80f4f9
commit 1ec81cafe6
3 changed files with 80 additions and 5 deletions

View File

@ -3,17 +3,17 @@ from distutils.extension import Extension
from Cython.Build import cythonize
extensions = Extension(
name="tdm_ripper",
sources=["pytdm_ripper.pyx"],
name="tdm_reaper",
sources=["cython/tdm_reaper.pyx"],
# libraries=[""],
library_dirs=["lib"],
include_dirs=["lib"],
language='c++',
extra_compile_args=['-std=c++11','-Wno-unused-variable'],
extra_link_args=['-std=c++11'],
extra_compile_args=['-std=c++17','-Wno-unused-variable'],
extra_link_args=['-std=c++17'],
)
setup(
name="tdm_ripper",
name="tdm_reaper",
ext_modules=cythonize(extensions)
)

29
cython/tdm_reaper.pxd Normal file
View File

@ -0,0 +1,29 @@
# cython: language_level = 3
# distutils: language = c++
# use some C++ STL libraries
from libcpp.string cimport string
from libcpp.vector cimport vector
from libcpp cimport bool
cdef extern from "../lib/tdm_reaper.hpp":
cdef cppclass raw_eater:
# constructor(s)
raw_eater() except +
# set new file for decoding
# void set_file(string)
# # perform conversion (pass any C++ exceptions to Python)
# void setup_and_conversion() except +
# # get validity of data format
# bool get_valid()
# # get channel name and unit
# string get_name()
# string get_unit()
# # get time step and time unit
# double get_dt()
# string get_temp_unit()
# # get data array of time and measured quantity's channel
# vector[double] get_time()
# vector[double] get_data()
# # dump all data to .csv
# void write_table(const char*,char delimiter)

46
cython/tdm_reaper.pyx Normal file
View File

@ -0,0 +1,46 @@
from tdm_reaper cimport tdmreaper
import numpy as np
import re
import os
cdef class tdmripper:
# C++ instance of class => stack allocated (requires nullary constructor!)
cdef tdm_reaper tdminst
# constructor
def __cinit__(self):
self.tdminst = tdm_reaper()
# def set_file(self, string rawfile):
# if not os.path.isfile(rawfile) :
# raise ValueError("'" + str(rawfile) + "' does not exist")
# self.rawit.set_file(rawfile)
#
# def do_conversion(self):
# self.rawit.setup_and_conversion()
#
# def validity(self):
# return self.rawit.get_valid()
#
# def channel_name(self):
# return self.rawit.get_name()
#
# def unit(self):
# return self.rawit.get_unit()
#
# def dt(self):
# return self.rawit.get_dt()
#
# def time_unit(self):
# return self.rawit.get_temp_unit()
#
# def get_time(self):
# return self.rawit.get_time()
#
# def get_channel(self):
# return self.rawit.get_data()
#
# def write_table(self, const char* csvfile, char delimiter):
# self.rawit.write_table(csvfile,delimiter)