introduce actual default/nullary constructor in cython wrapper
This commit is contained in:
@@ -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
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user