introduce actual default/nullary constructor in cython wrapper

This commit is contained in:
Mario Fink
2020-09-15 14:01:53 +02:00
parent 956bf8ee58
commit 17e8df68ef
41 changed files with 232 additions and 24 deletions

View File

@@ -6,14 +6,22 @@ from libcpp.string cimport string
from libcpp.vector cimport vector
from libcpp cimport bool
#cdef extern from "raweat.hpp":
# to include implemenation/definition file
#cdef extern from "raweat.cpp":
# pass
# these method names have to match the C definitions of the methods!!
#
# for how to overload the constructor see
# https://cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html
cdef extern from "../lib/raweat.hpp":
cdef cppclass raw_eater:
# constructor(s)
raw_eater() except+
raw_eater(string) except +
# set new file for decoding
void set_file(string)
# get validity of data format
bool get_valid()
# get channel name and unit

View File

@@ -2,38 +2,54 @@
from raw_eater cimport raweater
import numpy as np
import re
import os
cdef class raweater:
# pointer to C++ instance (since there's no nullary constructor)
cdef raw_eater *rawit
# C++ instance of class => stack allocated (requires nullary constructor!)
cdef raw_eater rawit
def __cinit__(self, string rawfile):
self.rawit = new raw_eater(rawfile)
# pointer to C++ instance (if there's no nullary constructor)
# cdef raw_eater *rawit
def __dealloc__(self):
del self.rawit
def __cinit__(self, string rawfile = b''):
if rawfile.decode() == "":
self.rawit = raw_eater()
# self.rawit = new raw_eater()
else:
if not os.path.isfile(rawfile) :
raise ValueError("'" + str(rawfile) + "' does not exist")
self.rawit = raw_eater(rawfile)
# self.rawit = new raw_eater(rawfile)
def validity(self):
return self.rawit.get_valid()
# def __dealloc__(self):
# del self.rawit
def channel_name(self):
return self.rawit.get_name()
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 unit(self):
return self.rawit.get_unit()
def validity(self):
return self.rawit.get_valid()
def dt(self):
return self.rawit.get_dt()
def channel_name(self):
return self.rawit.get_name()
def time_unit(self):
return self.rawit.get_temp_unit()
def unit(self):
return self.rawit.get_unit()
def get_time(self):
return self.rawit.get_time()
def dt(self):
return self.rawit.get_dt()
def get_channel(self):
return self.rawit.get_data()
def time_unit(self):
return self.rawit.get_temp_unit()
def write_table(self, const char* csvfile, char delimiter):
return self.rawit.write_table(csvfile,delimiter)
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)