diff --git a/lib/tdm_ripper.hpp b/lib/tdm_ripper.hpp index b8152d3..0443bfa 100644 --- a/lib/tdm_ripper.hpp +++ b/lib/tdm_ripper.hpp @@ -203,6 +203,21 @@ public: return units_[obtain_channel_id(groupid,channelid)-1]; } + int channel_exists(int groupid, std::string channel_name) + { + assert( groupid > 0 && groupid <= num_channels_ ); + + int channelid = 0; + for ( int i = 0; i < num_channels_group_[groupid-1]; i++) + { + if ( channel_name_[obtain_channel_id(groupid,i+1)-1].compare(channel_name) == 0 ) + { + channelid = i+1; + } + } + return channelid; + } + void list_datatypes(); // convert array of chars to single integer or floating point double diff --git a/pytdm_ripper.pyx b/pytdm_ripper.pyx index e7ebb18..d1e4738 100644 --- a/pytdm_ripper.pyx +++ b/pytdm_ripper.pyx @@ -16,6 +16,9 @@ cdef class pytdmripper: def show_channels(self): self.cripp.list_channels() + def show_groups(self): + self.cripp.list_groups() + def num_channels(self): return self.cripp.num_channels() @@ -35,6 +38,9 @@ cdef class pytdmripper: def channel_unit(self,int groupid,int channelid): return (self.cripp.channel_unit(groupid+1,channelid+1)) + def channel_exists(self,int groupid, string channelname): + return self.cripp.channel_exists(groupid+1,channelname) + def get_channel(self, int channelid): return np.asarray(self.cripp.get_channel(channelid)) diff --git a/tdm_ripper.pxd b/tdm_ripper.pxd index 3e57732..5d1386a 100644 --- a/tdm_ripper.pxd +++ b/tdm_ripper.pxd @@ -12,12 +12,14 @@ cdef extern from "tdm_ripper.hpp": cdef cppclass tdm_ripper: tdm_ripper(string) except + void list_channels() + void list_groups() int num_channels() int no_channels(int) int num_groups() int no_channel_groups() string channel_name(int,int) string channel_unit(int,int) + int channel_exists(int,string) vector[double] get_channel(int) vector[double] channel(int,int) void print_channel(int,const char*)