[med-svn] [SCM] aghermann branch, master, updated. 551e213a23b59b71cba6a9c3a282d1b60e21b854

Andrei Zavada johnhommer at gmail.com
Sun Apr 21 23:18:01 UTC 2013


The following commit has been merged in the master branch:
commit 6ac9e1abb6bba27ab86f629f44a1e4168e80bd57
Author: Andrei Zavada <johnhommer at gmail.com>
Date:   Wed Apr 17 17:47:40 2013 +0300

    use const string& in preference to const char* in arguments

diff --git a/src/libsigfile/edf.cc b/src/libsigfile/edf.cc
index 881b4fe..f7c9378 100644
--- a/src/libsigfile/edf.cc
+++ b/src/libsigfile/edf.cc
@@ -31,33 +31,33 @@
 using namespace std;
 
 template valarray<TFloat> sigfile::CEDFFile::get_region_original_( int, size_t, size_t) const;
-template valarray<TFloat> sigfile::CEDFFile::get_region_original_( const char*, size_t, size_t) const;
+template valarray<TFloat> sigfile::CEDFFile::get_region_original_( const string&, size_t, size_t) const;
 template valarray<TFloat> sigfile::CEDFFile::get_region_filtered_( int, size_t, size_t) const;
-template valarray<TFloat> sigfile::CEDFFile::get_region_filtered_( const char*, size_t, size_t) const;
+template valarray<TFloat> sigfile::CEDFFile::get_region_filtered_( const string&, size_t, size_t) const;
 template int sigfile::CEDFFile::put_region_( int, const valarray<TFloat>&, size_t) const;
-template int sigfile::CEDFFile::put_region_( const char*, const valarray<TFloat>&, size_t) const;
-template int sigfile::CEDFFile::export_original_( int, const char*) const;
-template int sigfile::CEDFFile::export_original_( const char*, const char*) const;
+template int sigfile::CEDFFile::put_region_( const string&, const valarray<TFloat>&, size_t) const;
+template int sigfile::CEDFFile::export_original_( int, const string&) const;
+template int sigfile::CEDFFile::export_original_( const string&, const string&) const;
 
 int
 sigfile::CEDFFile::
-set_patient_id( const char* s)
+set_patient_id( const string& s)
 {
 	memcpy( header.patient_id, agh::str::pad( s, 80).c_str(), 80);
-	return strlen(s) > 80;
+	return s.size() > 80;
 }
 
 int
 sigfile::CEDFFile::
-set_recording_id( const char* s)
+set_recording_id( const string& s)
 {
 	memcpy( header.recording_id, agh::str::pad( s, 80).c_str(), 80);
-	return strlen(s) > 80;
+	return s.size() > 80;
 }
 
 int
 sigfile::CEDFFile::
-set_episode( const char* s)
+set_episode( const string& s)
 {
 	_episode.assign( s);
 	return set_recording_id( (_session + '/' + _episode).c_str());
@@ -65,7 +65,7 @@ set_episode( const char* s)
 
 int
 sigfile::CEDFFile::
-set_session( const char* s)
+set_session( const string& s)
 {
 	_session.assign( s);
 	return set_recording_id( (_session + '/' + _episode).c_str());
@@ -73,10 +73,10 @@ set_session( const char* s)
 
 int
 sigfile::CEDFFile::
-set_reserved( const char *s)
+set_reserved( const string&s)
 {
 	memcpy( header.reserved, agh::str::pad( s, 44).c_str(), 44);
-	return strlen(s) > 44;
+	return s.size() > 44;
 }
 
 int
@@ -112,19 +112,19 @@ const char version_string[8]  = {'0',' ',' ',' ', ' ',' ',' ',' '};
 }
 
 sigfile::CEDFFile::
-CEDFFile (const char *fname_, int flags_)
+CEDFFile (const string& fname_, int flags_)
       : CSource (fname_, flags_)
 {
 	{
 		struct stat stat0;
-		int stst = stat( fname_, &stat0);
+		int stst = stat( fname_.c_str(), &stat0);
 		if ( stst == -1 ) {
 			_status |= TStatus::sysfail;
 			throw runtime_error (explain_edf_status(_status));
 		}
 		_fsize = stat0.st_size;
 	}
-	_fd = open( fname_, O_RDWR);
+	_fd = open( fname_.c_str(), O_RDWR);
 	if ( _fd == -1 ) {
 		_status |= TStatus::sysfail;
 		throw runtime_error (explain_edf_status(_status));
@@ -148,7 +148,7 @@ CEDFFile (const char *fname_, int flags_)
 			munmap( _mmapping, _fsize);
 			throw runtime_error (explain_edf_status(_status));
 		} else
-			fprintf( stderr, "CEDFFile::CEDFFile(\"%s\") Warning: parse header failed, but proceeding anyway\n", fname_);
+			fprintf( stderr, "CEDFFile::CEDFFile(\"%s\") Warning: parse header failed, but proceeding anyway\n", fname_.c_str());
 	}
 	// channels now available
 
@@ -161,7 +161,7 @@ CEDFFile (const char *fname_, int flags_)
 			total_samples_per_record += H.samples_per_record;
 		size_t	expected_fsize = header_length + sizeof(int16_t) * total_samples_per_record * n_data_records;
 		if ( _fsize < expected_fsize ) {
-			fprintf( stderr, "CEDFFile::CEDFFile(\"%s\") file size less than declared in header\n", fname_);
+			fprintf( stderr, "CEDFFile::CEDFFile(\"%s\") file size less than declared in header\n", fname_.c_str());
 			close( _fd);
 			munmap( _mmapping, _fsize);
 			_status |= file_truncated;
@@ -169,10 +169,12 @@ CEDFFile (const char *fname_, int flags_)
 		} else if ( _fsize > expected_fsize ) {
 			_status |= trailing_junk;
 			fprintf( stderr, "CEDFFile::CEDFFile(\"%s\") Warning: %zu bytes of trailing junk\n",
-				 fname_, _fsize - expected_fsize);
+				 fname_.c_str(), _fsize - expected_fsize);
 		}
 	}
 
+	_extract_embedded_annotations();
+
       // ancillary files:
 	if ( flags_ & sigfile::CTypedSource::no_ancillary_files )
 		;
@@ -244,7 +246,7 @@ CEDFFile (const char *fname_, int flags_)
 
 
 sigfile::CEDFFile::
-CEDFFile (const char *fname_, TSubtype subtype_, int flags_,
+CEDFFile (const string& fname_, TSubtype subtype_, int flags_,
 	  const list<pair<string, size_t>>& channels_,
 	  size_t data_record_size_,
 	  size_t n_data_records_)
@@ -253,7 +255,7 @@ CEDFFile (const char *fname_, TSubtype subtype_, int flags_,
 	n_data_records (n_data_records_),
 	_subtype (subtype_)
 {
-	_fd = open( fname_, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP);
+	_fd = open( fname_.c_str(), O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP);
 	if ( _fd == -1 ) {
 		_status |= TStatus::sysfail;
 		throw invalid_argument ("CEDFFile::CEDFFile(): file open error");
diff --git a/src/libsigfile/edf.hh b/src/libsigfile/edf.hh
index e764d55..c80e5f2 100644
--- a/src/libsigfile/edf.hh
+++ b/src/libsigfile/edf.hh
@@ -80,9 +80,9 @@ class CEDFFile
 		no_field_consistency_check	= 1<<5,
 	};
 	// open existing
-	CEDFFile (const char *fname, int flags = 0);
+	CEDFFile (const string& fname, int flags = 0);
 	// create new
-	CEDFFile (const char *fname, TSubtype subtype_, int flags,
+	CEDFFile (const string& fname, TSubtype subtype_, int flags,
 		  const list<pair<string, size_t>>& channels,
 		  size_t data_record_size = 1,
 		  size_t n_data_records = 0);
@@ -118,12 +118,12 @@ class CEDFFile
 		{ return n_data_records * data_record_size; }
 
 	// setters
-	int set_patient_id( const char*);
-	int set_recording_id( const char*);
-	int set_episode( const char*);
-	int set_session( const char*);
-	int set_reserved( const char*);
-	int set_comment( const char* s)
+	int set_patient_id( const string&);
+	int set_recording_id( const string&);
+	int set_episode( const string&);
+	int set_session( const string&);
+	int set_reserved( const string&);
+	int set_comment( const string& s)
 		{ return set_reserved( s); }
 
 	int set_start_time( time_t);
@@ -139,10 +139,10 @@ class CEDFFile
 			return ret;
 		}
 	bool
-	have_channel( const char *h) const
+	have_channel( const string& h) const
 		{ return find( channels.cbegin(), channels.cend(), h) != channels.cend(); }
 	int
-	channel_id( const char *h) const
+	channel_id( const string& h) const
 		{
 			for ( size_t i = 0; i < channels.size(); i++ )
 				if ( channels[i].label == h )
@@ -161,27 +161,27 @@ class CEDFFile
 	signal_type( int h) const
 		{ return (*this)[h].signal_type; }
 	SChannel::TType
-	signal_type( const char* h) const
+	signal_type( const string& h) const
 		{ return (*this)[h].signal_type; }
 
 	size_t
 	samplerate( int h) const
 		{ return (*this)[h].samples_per_record / data_record_size; }
 	size_t
-	samplerate( const char* h) const
+	samplerate( const string& h) const
 		{ return (*this)[h].samples_per_record / data_record_size; }
 
 	list<SAnnotation>&
 	annotations( int h)
 		{ return (*this)[h].annotations; }
 	list<SAnnotation>&
-	annotations( const char* h)
+	annotations( const string& h)
 		{ return (*this)[h].annotations; }
 	const list<SAnnotation>&
 	annotations( int h) const
 		{ return (*this)[h].annotations; }
 	const list<SAnnotation>&
-	annotations( const char* h) const
+	annotations( const string& h) const
 		{ return (*this)[h].annotations; }
 
 	// artifacts
@@ -189,13 +189,13 @@ class CEDFFile
 	artifacts( int h)
 		{ return (*this)[h].artifacts; }
 	SArtifacts&
-	artifacts( const char* h)
+	artifacts( const string& h)
 		{ return (*this)[h].artifacts; }
 	const SArtifacts&
 	artifacts( int h) const
 		{ return (*this)[h].artifacts; }
 	const SArtifacts&
-	artifacts( const char* h) const
+	artifacts( const string& h) const
 		{ return (*this)[h].artifacts; }
 
 	// filters
@@ -203,26 +203,26 @@ class CEDFFile
 	filters( int h)
 		{ return (*this)[h].filters; }
 	SFilterPack&
-	filters( const char* h)
+	filters( const string& h)
 		{ return (*this)[h].filters; }
 	const SFilterPack&
 	filters( int h) const
 		{ return (*this)[h].filters; }
 	const SFilterPack&
-	filters( const char* h) const
+	filters( const string& h) const
 		{ return (*this)[h].filters; }
 
 
       // signal data extractors
-	template <class Th>  // accommodates int or const char* as Th
+	template <class Th>  // accommodates int or const string& as Th
 	valarray<TFloat>
 	get_region_original_( Th h, size_t smpla, size_t smplz) const;
 	valarray<TFloat>
 	get_region_original( int h, size_t smpla, size_t smplz) const
 		{ return get_region_original_<int>( h, smpla, smplz); }
 	valarray<TFloat>
-	get_region_original( const char* h, size_t smpla, size_t smplz) const
-		{ return get_region_original_<const char*>( h, smpla, smplz); }
+	get_region_original( const string& h, size_t smpla, size_t smplz) const
+		{ return get_region_original_<const string&>( h, smpla, smplz); }
 
 	template <class Th>
 	valarray<TFloat>
@@ -238,9 +238,9 @@ class CEDFFile
 			     float timea, float timez) const
 		{ return get_region_original_<int>( h, timea, timez); }
 	valarray<TFloat>
-	get_region_original( const char* h,
+	get_region_original( const string& h,
 			     float timea, float timez) const
-		{ return get_region_original_<const char*>( h, timea, timez); }
+		{ return get_region_original_<const string&>( h, timea, timez); }
 
 	template <class Th>
 	valarray<TFloat>
@@ -250,7 +250,7 @@ class CEDFFile
 	get_signal_original( int h) const
 		{ return get_signal_original_( h); }
 	valarray<TFloat>
-	get_signal_original( const char* h) const
+	get_signal_original( const string& h) const
 		{ return get_signal_original_( h); }
 
 	template <class Th>
@@ -262,7 +262,7 @@ class CEDFFile
 			     size_t smpla, size_t smplz) const
 		{ return get_region_filtered_( h, smpla, smplz); }
 	valarray<TFloat>
-	get_region_filtered( const char* h,
+	get_region_filtered( const string& h,
 			     size_t smpla, size_t smplz) const
 		{ return get_region_filtered_( h, smpla, smplz); }
 	template <class Th>
@@ -279,7 +279,7 @@ class CEDFFile
 			     float timea, float timez) const
 		{ return get_region_filtered_( h, timea, timez); }
 	valarray<TFloat>
-	get_region_filtered( const char* h,
+	get_region_filtered( const string& h,
 			     float timea, float timez) const
 		{ return get_region_filtered_( h, timea, timez); }
 	template <class Th>
@@ -295,7 +295,7 @@ class CEDFFile
 	put_region( int h, const valarray<TFloat>& src, size_t offset) const
 		{ return put_region_( h, src, offset); }
 	int
-	put_region( const char* h, const valarray<TFloat>& src, size_t offset) const
+	put_region( const string& h, const valarray<TFloat>& src, size_t offset) const
 		{ return put_region_( h, src, offset); }
 
 	template <class Th>
@@ -313,12 +313,12 @@ class CEDFFile
 	put_signal( int h, const valarray<TFloat>& src) const
 		{ return put_signal_( h, src); }
 	int
-	put_signal( const char* h, const valarray<TFloat>& src) const
+	put_signal( const string& h, const valarray<TFloat>& src) const
 		{ return put_signal_( h, src); }
 
       // signal data info
 	pair<TFloat, TFloat>
-	get_real_original_signal_range( const char* h) const
+	get_real_original_signal_range( const string& h) const
 		{ return get_real_original_signal_range( channel_id(h)); }
 	pair<TFloat, TFloat>
 	get_real_original_signal_range( int h) const
@@ -328,7 +328,7 @@ class CEDFFile
 		}
 
 	pair<TFloat, TFloat>
-	get_max_original_signal_range( const char* h) const
+	get_max_original_signal_range( const string& h) const
 		{ return get_max_original_signal_range( channel_id(h)); }
 	pair<TFloat, TFloat>
 	get_max_original_signal_range( int h) const
@@ -336,7 +336,7 @@ class CEDFFile
 
 
 	pair<TFloat, TFloat>
-	get_real_filtered_signal_range( const char* h) const
+	get_real_filtered_signal_range( const string& h) const
 		{ return get_real_filtered_signal_range( channel_id(h)); }
 	pair<TFloat, TFloat>
 	get_real_filtered_signal_range( int h) const
@@ -346,7 +346,7 @@ class CEDFFile
 		}
 
 	pair<TFloat, TFloat>
-	get_max_filtered_signal_range( const char* h) const
+	get_max_filtered_signal_range( const string& h) const
 		{ return get_max_filtered_signal_range( channel_id(h)); }
 	pair<TFloat, TFloat>
 	get_max_filtered_signal_range( int h) const
@@ -361,21 +361,21 @@ class CEDFFile
 
       // export
 	int
-	export_original( int h, const char *fname) const
+	export_original( int h, const string& fname) const
 		{ return export_original_( h, fname); }
 	int
-	export_filtered( int h, const char *fname) const
+	export_filtered( int h, const string& fname) const
 		{ return export_filtered_( h, fname); }
 	int
-	export_original( const char* h, const char *fname) const
+	export_original( const string& h, const string& fname) const
 		{ return export_original_( h, fname); }
 	int
-	export_filtered( const char* h, const char *fname) const
+	export_filtered( const string& h, const string& fname) const
 		{ return export_filtered_( h, fname); }
 	template <class Th>
-	int export_original_( Th h, const char *fname) const;
+	int export_original_( Th h, const string& fname) const;
 	template <class Th>
-	int export_filtered_( Th h, const char *fname) const;
+	int export_filtered_( Th h, const string& fname) const;
 
 
       // reporting & misc
@@ -440,7 +440,7 @@ class CEDFFile
 		void set_digital_range( int16_t, int16_t);
 		size_t	samples_per_record;
 
-		bool operator==( const char *h) const
+		bool operator==( const string& h) const
 			{
 				return label == h;
 			}
@@ -472,14 +472,14 @@ class CEDFFile
 				throw out_of_range ("Signal index out of range");
 			return channels[i];
 		}
-	SSignal& operator[]( const char *h)
+	SSignal& operator[]( const string& h)
 		{
 			auto S = find( channels.begin(), channels.end(), h);
 			if ( S == channels.end() )
 				throw out_of_range (string ("Unknown channel ") + h);
 			return *S;
 		}
-	const SSignal& operator[]( const char *h) const
+	const SSignal& operator[]( const string& h) const
 		{
 			return (*const_cast<CEDFFile*>(this)) [h];
 		}
diff --git a/src/libsigfile/edf.ii b/src/libsigfile/edf.ii
index ead7ed5..4d5807d 100644
--- a/src/libsigfile/edf.ii
+++ b/src/libsigfile/edf.ii
@@ -11,13 +11,13 @@
 
 
 extern template valarray<TFloat> CEDFFile::get_region_original_( int, size_t, size_t) const;
-extern template valarray<TFloat> CEDFFile::get_region_original_( const char*, size_t, size_t) const;
+extern template valarray<TFloat> CEDFFile::get_region_original_( const string&, size_t, size_t) const;
 extern template valarray<TFloat> CEDFFile::get_region_filtered_( int, size_t, size_t) const;
-extern template valarray<TFloat> CEDFFile::get_region_filtered_( const char*, size_t, size_t) const;
+extern template valarray<TFloat> CEDFFile::get_region_filtered_( const string&, size_t, size_t) const;
 extern template int CEDFFile::put_region_( int, const valarray<TFloat>&, size_t) const;
-extern template int CEDFFile::put_region_( const char*, const valarray<TFloat>&, size_t) const;
-extern template int CEDFFile::export_original_( int, const char*) const;
-extern template int CEDFFile::export_original_( const char*, const char*) const;
+extern template int CEDFFile::put_region_( const string&, const valarray<TFloat>&, size_t) const;
+extern template int CEDFFile::export_original_( int, const string&) const;
+extern template int CEDFFile::export_original_( const string&, const string&) const;
 
 
 template <typename A>
@@ -224,10 +224,10 @@ template <typename Th>
 int
 CEDFFile::
 export_original_( Th h,
-		  const char *fname) const
+		  const string& fname) const
 {
 	valarray<TFloat> signal = get_signal_original( h);
-	FILE *fd = fopen( fname, "w");
+	FILE *fd = fopen( fname.c_str(), "w");
 	if ( fd ) {
 		for ( size_t i = 0; i < signal.size(); ++i )
 			fprintf( fd, "%g\n", signal[i]);
@@ -242,10 +242,10 @@ template <typename Th>
 int
 CEDFFile::
 export_filtered_( Th h,
-		  const char *fname) const
+		  const string& fname) const
 {
 	valarray<TFloat> signal = get_signal_filtered( h);
-	FILE *fd = fopen( fname, "w");
+	FILE *fd = fopen( fname.c_str(), "w");
 	if ( fd ) {
 		for ( size_t i = 0; i < signal.size(); ++i )
 			fprintf( fd, "%g\n", signal[i]);
diff --git a/src/libsigfile/source-base.hh b/src/libsigfile/source-base.hh
index 80ffeb1..e35b693 100644
--- a/src/libsigfile/source-base.hh
+++ b/src/libsigfile/source-base.hh
@@ -144,7 +144,7 @@ struct SAnnotation {
 inline void
 mark_annotation( list<SAnnotation>& annotations,
 		 size_t aa, size_t az,
-		 const char* label,
+		 const string& label,
 		 SAnnotation::TType t = SAnnotation::TType::plain)
 {
 	annotations.emplace_back( aa, az, label, t);
@@ -239,22 +239,22 @@ class CSource {
       // channels
 	virtual size_t n_channels()			const = 0;
 	virtual list<SChannel> channel_list()		const = 0;
-	virtual bool have_channel( const char*) 	const = 0;
-	virtual int channel_id( const char*)		const = 0;
+	virtual bool have_channel( const string&) 	const = 0;
+	virtual int channel_id( const string&)		const = 0;
 	virtual const char* channel_by_id( int)		const = 0;
 	virtual SChannel::TType
-	signal_type( const char*)			const = 0;
+	signal_type( const string&)			const = 0;
 	virtual SChannel::TType
 	signal_type( int)				const = 0;
-	virtual size_t samplerate( const char*)		const = 0;
+	virtual size_t samplerate( const string&)	const = 0;
 	virtual size_t samplerate( int)			const = 0;
 
 	// the following methods are pass-through:
 	// annotations
 	virtual list<SAnnotation>&
-	annotations( const char*)		      = 0;
+	annotations( const string&)		      = 0;
 	virtual const list<SAnnotation>&
-	annotations( const char*) const		      = 0;
+	annotations( const string&) const	      = 0;
 	virtual list<SAnnotation>&
 	annotations( int)			      = 0;
 	virtual const list<SAnnotation>&
@@ -262,21 +262,21 @@ class CSource {
 
 	// artifacts
 	virtual SArtifacts&
-	artifacts( const char*)			      = 0;
+	artifacts( const string&)		      = 0;
 	virtual SArtifacts&
 	artifacts( int)				      = 0;
 	virtual const SArtifacts&
-	artifacts( const char*)			const = 0;
+	artifacts( const string&)		const = 0;
 	virtual const SArtifacts&
 	artifacts( int)				const = 0;
 
 	// filters
 	virtual SFilterPack&
-	filters( const char*)			      = 0;
+	filters( const string&)			      = 0;
 	virtual SFilterPack&
 	filters( int)				      = 0;
 	virtual const SFilterPack&
-	filters( const char*)			const = 0;
+	filters( const string&)			const = 0;
 	virtual const SFilterPack&
 	filters( int)				const = 0;
 
@@ -288,17 +288,17 @@ class CSource {
 		}
 
       // setters
-	virtual int set_patient_id( const char*)      = 0;
-	virtual int set_recording_id( const char*)    = 0;
-	virtual int set_episode( const char*)	      = 0;
-	virtual int set_session( const char*)	      = 0;
-	virtual int set_comment( const char*)	      = 0;
+	virtual int set_patient_id( const string&)    = 0;
+	virtual int set_recording_id( const string&)  = 0;
+	virtual int set_episode( const string&)	      = 0;
+	virtual int set_session( const string&)	      = 0;
+	virtual int set_comment( const string&)	      = 0;
 	virtual int set_start_time( time_t)	      = 0;
 
       // get samples
 	// original
 	virtual valarray<TFloat>
-	get_region_original( const char* h, size_t, size_t) const = 0;
+	get_region_original( const string& h, size_t, size_t) const = 0;
 	virtual valarray<TFloat>
 	get_region_original( int h, size_t, size_t) const = 0;
 
@@ -326,7 +326,7 @@ class CSource {
 
 	// filtered
 	virtual valarray<TFloat>
-	get_region_filtered( const char* h, size_t, size_t) const = 0;
+	get_region_filtered( const string& h, size_t, size_t) const = 0;
 	virtual valarray<TFloat>
 	get_region_filtered( int h, size_t, size_t) const = 0;
 
@@ -358,7 +358,7 @@ class CSource {
 		    const valarray<TFloat>& src,
 		    size_t offset)		const = 0;
 	virtual int
-	put_region( const char* h,
+	put_region( const string& h,
 		    const valarray<TFloat>& src,
 		    size_t offset)		const = 0;
 
@@ -369,7 +369,7 @@ class CSource {
 			return put_region( h, src, 0);
 		}
 	int
-	put_signal( const char* h,
+	put_signal( const string& h,
 		    const valarray<TFloat>& src)
 		{
 			return put_region( h, src, 0);
@@ -382,7 +382,7 @@ class CSource {
 	virtual pair<TFloat, TFloat>
 	get_real_original_signal_range( int) const = 0;
 	virtual pair<TFloat, TFloat>
-	get_real_original_signal_range( const char*) const = 0;
+	get_real_original_signal_range( const string&) const = 0;
 
 	template <typename T>
 	pair<TFloat, TFloat>
@@ -390,7 +390,7 @@ class CSource {
 	virtual pair<TFloat, TFloat>
 	get_max_original_signal_range( int) const = 0;
 	virtual pair<TFloat, TFloat>
-	get_max_original_signal_range( const char*) const = 0;
+	get_max_original_signal_range( const string&) const = 0;
 
 	template <typename T>
 	pair<TFloat, TFloat>
@@ -398,7 +398,7 @@ class CSource {
 	virtual pair<TFloat, TFloat>
 	get_real_filtered_signal_range( int) const = 0;
 	virtual pair<TFloat, TFloat>
-	get_real_filtered_signal_range( const char*) const = 0;
+	get_real_filtered_signal_range( const string&) const = 0;
 
 	template <typename T>
 	pair<TFloat, TFloat>
@@ -406,17 +406,17 @@ class CSource {
 	virtual pair<TFloat, TFloat>
 	get_max_filtered_signal_range( int) const = 0;
 	virtual pair<TFloat, TFloat>
-	get_max_filtered_signal_range( const char*) const = 0;
+	get_max_filtered_signal_range( const string&) const = 0;
 
       // export
 	virtual int
-	export_original( int, const char* fname) const = 0;
+	export_original( int, const string& fname) const = 0;
 	virtual int
-	export_original( const char*, const char* fname) const = 0;
+	export_original( const string&, const string& fname) const = 0;
 	virtual int
-	export_filtered( int, const char* fname) const = 0;
+	export_filtered( int, const string& fname) const = 0;
 	virtual int
-	export_filtered( const char*, const char* fname) const = 0;
+	export_filtered( const string&, const string& fname) const = 0;
 
       // filenames
 	string make_fname_artifacts( const SChannel& channel) const
diff --git a/src/libsigfile/source.cc b/src/libsigfile/source.cc
index 37da818..e364667 100644
--- a/src/libsigfile/source.cc
+++ b/src/libsigfile/source.cc
@@ -15,7 +15,7 @@
 using namespace std;
 
 sigfile::CTypedSource::
-CTypedSource (const char* fname,
+CTypedSource (const string& fname,
 	      size_t pagesize,
 	      int flags)
       : CHypnogram (pagesize)
@@ -43,7 +43,7 @@ CTypedSource (const char* fname,
 			if ( CHypnogram::pages() > 0 )
 				fprintf( stderr, "CSource(\"%s\"): number of scorable pages @pagesize=%zu (%lu / %zu = %zu) "
 					 "differs from the number read from hypnogram file (%zu); adjusting hypnogram size\n",
-					 fname, pagesize, _obj->recording_time(), pagesize, scorable_pages, CHypnogram::pages());
+					 fname.c_str(), pagesize, _obj->recording_time(), pagesize, scorable_pages, CHypnogram::pages());
 			CHypnogram::_pages.resize( scorable_pages);
 		}
 	}
@@ -90,9 +90,9 @@ sigfile::CTypedSource::
 
 
 sigfile::CTypedSource::TType
-sigfile::CTypedSource::source_file_type( const char* fname)
+sigfile::CTypedSource::source_file_type( const string& fname)
 {
-	if ( strlen(fname) > 4 && strcasecmp( &fname[strlen(fname)-4], ".edf") == 0 )
+	if ( fname.size() > 4 && strcasecmp( &fname[fname.size()-4], ".edf") == 0 )
 		return TType::edf;
 	return TType::unrecognised;
 }
diff --git a/src/libsigfile/source.hh b/src/libsigfile/source.hh
index adda774..449269a 100644
--- a/src/libsigfile/source.hh
+++ b/src/libsigfile/source.hh
@@ -52,7 +52,7 @@ class CTypedSource
 		}
       // ctor
 	enum { no_ancillary_files = 1 };
-	CTypedSource (const char* fname, size_t pagesize, int flags = 0);
+	CTypedSource (const string& fname, size_t pagesize, int flags = 0);
 	CTypedSource (CTypedSource&& rv);
        ~CTypedSource ();
 
@@ -70,7 +70,7 @@ class CTypedSource
 			return sigfile::make_fname_hypnogram( _obj->filename(), pagesize());
 		}
 
-	static TType source_file_type( const char* fname) __attribute__ ((pure));
+	static TType source_file_type( const string& fname) __attribute__ ((pure));
 };
 
 
diff --git a/src/ui/sf/channel.cc b/src/ui/sf/channel.cc
index 7fa2631..e27c1d4 100644
--- a/src/ui/sf/channel.cc
+++ b/src/ui/sf/channel.cc
@@ -404,7 +404,7 @@ detect_artifacts( const metrics::mc::SArtifactDetectionPP& P)
 		get_raw_profile();
 
 		// if ( this == channel currently displayed on measurements overview )
-		if ( strcmp( name, _p._p.AghH()) == 0 )
+		if ( name == _p._p.AghH() )
 			_p.redraw_ssubject_timeline();
 	}
 }
@@ -445,7 +445,7 @@ mark_flat_regions_as_artifacts( double minsize, double pad)
 		get_mc_course();
 
 		// if ( this == channel currently displayed on measurements overview )
-		if ( strcmp( name, _p._p.AghH()) == 0 )
+		if ( name == _p._p.AghH() )
 			_p.redraw_ssubject_timeline();
 	}
 
@@ -476,14 +476,14 @@ mark_region_as_artifact( bool do_mark)
 		get_swu_course();
 		get_mc_course();
 
-		if ( strcmp( name, _p._p.AghH()) == 0 )
+		if ( name == _p._p.AghH() )
 			_p.redraw_ssubject_timeline();
 	}
 }
 
 void
 aghui::SScoringFacility::SChannel::
-mark_region_as_annotation( const char *label, sigfile::SAnnotation::TType type)
+mark_region_as_annotation( const string& label, sigfile::SAnnotation::TType type)
 {
 	sigfile::mark_annotation(
 		crecording.F().annotations(_h),
diff --git a/src/ui/sf/d/artifacts_cb.cc b/src/ui/sf/d/artifacts_cb.cc
index a4d98f6..6b4e867 100644
--- a/src/ui/sf/d/artifacts_cb.cc
+++ b/src/ui/sf/d/artifacts_cb.cc
@@ -215,7 +215,7 @@ wSFAD_show_cb( GtkWidget*, gpointer userdata)
 	gtk_toggle_button_set_active( AD.bSFADPreview, FALSE);
 	AD.suppress_preview_handler = false;
 
-	snprintf_buf( "Artifact detection in channel %s", SF.using_channel->name);
+	snprintf_buf( "Artifact detection in channel %s", SF.using_channel->name.c_str());
 	gtk_label_set_text( AD.lSFADInfo, __buf__);
 	snprintf_buf( "%4.2f%% marked", SF.using_channel->calculate_dirty_percent() * 100);
 	gtk_label_set_text( AD.lSFADDirtyPercent, __buf__);
diff --git a/src/ui/sf/d/patterns-construct.cc b/src/ui/sf/d/patterns-construct.cc
index eb36516..0f1eef1 100644
--- a/src/ui/sf/d/patterns-construct.cc
+++ b/src/ui/sf/d/patterns-construct.cc
@@ -87,7 +87,7 @@ SPatternsDialogWidgets (SScoringFacility& SF)
 		GtkTreeIter iter;
 		gtk_list_store_append( mSFFDChannels, &iter);
 		gtk_list_store_set( mSFFDChannels, &iter,
-				    0, H.name,
+				    0, H.name.c_str(),
 				    -1);
 	}
 	gtk_combo_box_set_model_properly( eSFFDChannel, mSFFDChannels);
diff --git a/src/ui/sf/d/patterns_cb.cc b/src/ui/sf/d/patterns_cb.cc
index 50a3d10..354668f 100644
--- a/src/ui/sf/d/patterns_cb.cc
+++ b/src/ui/sf/d/patterns_cb.cc
@@ -361,7 +361,7 @@ eSFFD_any_criteria_value_changed_cb( GtkSpinButton* button, gpointer userdata)
 		snprintf_buf(
 			"%zu match%s in <b>%s</b>",
 			FD.occurrences.size(), (FD.occurrences.size() == 1) ? "" : "es",
-			FD.field_channel->name);
+			FD.field_channel->name.c_str());
 		gtk_label_set_markup( FD.lSFFDFoundInfo, __buf__);
 
 		FD.set_profile_manage_buttons_visibility();
diff --git a/src/ui/sf/d/phasediff-construct.cc b/src/ui/sf/d/phasediff-construct.cc
index 0aa297e..89d2c78 100644
--- a/src/ui/sf/d/phasediff-construct.cc
+++ b/src/ui/sf/d/phasediff-construct.cc
@@ -40,7 +40,7 @@ SPhasediffDialogWidgets (SScoringFacility& SF)
 			GtkTreeIter iter;
 			gtk_list_store_append( mSFPDChannels, &iter);
 			gtk_list_store_set( mSFPDChannels, &iter,
-					    0, H.name,
+					    0, H.name.c_str(),
 					    -1);
 		}
 
diff --git a/src/ui/sf/d/phasediff.cc b/src/ui/sf/d/phasediff.cc
index 471bb60..b401aa4 100644
--- a/src/ui/sf/d/phasediff.cc
+++ b/src/ui/sf/d/phasediff.cc
@@ -92,7 +92,7 @@ channel_from_cbox( GtkComboBox *cbox)
 			    0, &entry,
 			    -1);
 	for ( auto &H : _p.channels )
-		if ( strcmp( entry, H.name) == 0 )
+		if ( entry == H.name )
 			return &H;
 	return nullptr;
 }
@@ -100,7 +100,7 @@ channel_from_cbox( GtkComboBox *cbox)
 
 void
 aghui::SScoringFacility::SPhasediffDialog::
-preselect_channel( GtkComboBox *cbox, const char *ch)
+preselect_channel( GtkComboBox *cbox, const string& ch)
 {
 	GtkTreeModel *model = gtk_combo_box_get_model( cbox);
 	GtkTreeIter iter;
@@ -112,7 +112,7 @@ preselect_channel( GtkComboBox *cbox, const char *ch)
 		gtk_tree_model_get( model, &iter,
 				    0, &entry,
 				    -1);
-		if ( strcmp( entry, ch) == 0 ) {
+		if ( entry == ch ) {
 			gtk_combo_box_set_active_iter( cbox, &iter);
 			return;
 		}
diff --git a/src/ui/sf/d/phasediff.hh b/src/ui/sf/d/phasediff.hh
index 39a3e90..526044b 100644
--- a/src/ui/sf/d/phasediff.hh
+++ b/src/ui/sf/d/phasediff.hh
@@ -74,7 +74,7 @@ struct SScoringFacility::SPhasediffDialog
 	void update_course();
 
 	const SScoringFacility::SChannel* channel_from_cbox( GtkComboBox *cbox);
-	void preselect_channel( GtkComboBox *cbox, const char *ch);
+	void preselect_channel( GtkComboBox *cbox, const string& ch);
 
 	void draw( cairo_t* cr, int wd, int ht);
 
diff --git a/src/ui/sf/d/phasediff_cb.cc b/src/ui/sf/d/phasediff_cb.cc
index 0ed6b49..a67a827 100644
--- a/src/ui/sf/d/phasediff_cb.cc
+++ b/src/ui/sf/d/phasediff_cb.cc
@@ -150,8 +150,8 @@ wSFPD_show_cb( GtkWidget *wid, gpointer userdata)
 	     gtk_combo_box_get_active( PD.eSFPDChannelB) == -1 ) {
 		PD.channel1 = &*SF.channels.begin();
 		PD.channel2 = &*next(SF.channels.begin());
-		PD.preselect_channel( PD.eSFPDChannelA, PD.channel1->name);
-		PD.preselect_channel( PD.eSFPDChannelB, PD.channel2->name);
+		PD.preselect_channel( PD.eSFPDChannelA, PD.channel1->name.c_str());
+		PD.preselect_channel( PD.eSFPDChannelB, PD.channel2->name.c_str());
 	} else {
 		// they have been nicely set before, havent't they
 		// PD.channel1 = PD.channel_from_cbox( eSFPDChannelA);
diff --git a/src/ui/sf/ica.cc b/src/ui/sf/ica.cc
index 0d1a209..5c82fe8 100644
--- a/src/ui/sf/ica.cc
+++ b/src/ui/sf/ica.cc
@@ -98,7 +98,7 @@ setup_ica()
 	gtk_container_foreach( (GtkContainer*)iiSFICAPage, (GtkCallback)gtk_widget_destroy, NULL);
 	GSList *group = NULL;
 	for ( auto &H : channels ) {
-		auto item = (GtkWidget*)gtk_radio_menu_item_new_with_label( group, H.name);
+		auto item = (GtkWidget*)gtk_radio_menu_item_new_with_label( group, H.name.c_str());
 		group = gtk_radio_menu_item_get_group( (GtkRadioMenuItem*)item);
 		g_object_set( (GObject*)item,
 			      "visible", TRUE,
diff --git a/src/ui/sf/montage.cc b/src/ui/sf/montage.cc
index e6f3ea0..93565f6 100644
--- a/src/ui/sf/montage.cc
+++ b/src/ui/sf/montage.cc
@@ -182,9 +182,9 @@ expand_by_factor( double fac)
 
 void
 aghui::SScoringFacility::SChannel::
-draw_for_montage( const char *fname, int width, int height) // to a file
+draw_for_montage( const string& fname, int width, int height) // to a file
 {
-	cairo_surface_t *cs = cairo_svg_surface_create( fname, width, height);
+	cairo_surface_t *cs = cairo_svg_surface_create( fname.c_str(), width, height);
 	cairo_t *cr = cairo_create( cs);
 
 	draw_page( cr, width, height/2, false); // or maybe *with* selection?
@@ -565,7 +565,7 @@ draw_page( cairo_t *cr,
 	{
 		int x = 15, y = y0 - 16;
 
-		snprintf_buf( "[%s] %s", sigfile::SChannel::kemp_signal_types[type], name);
+		snprintf_buf( "[%s] %s", sigfile::SChannel::kemp_signal_types[type], name.c_str());
 		cairo_select_font_face( cr, "serif", CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_BOLD);
 		cairo_set_font_size( cr, 14);
 
@@ -630,9 +630,9 @@ draw_page( cairo_t *cr,
 
 void
 aghui::SScoringFacility::
-draw_montage( const char *fname) // to a file
+draw_montage( const string& fname) // to a file
 {
-	cairo_surface_t *cs = cairo_svg_surface_create( fname, da_wd, da_ht);
+	cairo_surface_t *cs = cairo_svg_surface_create( fname.c_str(), da_wd, da_ht);
 	cairo_t *cr = cairo_create( cs);
 	draw_montage( cr);
 	cairo_destroy( cr);
@@ -672,7 +672,7 @@ _draw_matrix_to_montage( cairo_t *cr, const itpp::Mat<T>& mat)
 				cairo_set_font_size( cr, 28);
 				cairo_move_to( cr, 30, our_y-10);
 				cairo_set_source_rgba( cr, .3, .1, .2, .65);
-				cairo_show_text( cr, channel_by_idx(ica_map[r].m).name);
+				cairo_show_text( cr, channel_by_idx(ica_map[r].m).name.c_str());
 			    break;
 			default:
 				cairo_move_to( cr, da_wd * .06, our_y - gap/2.5);
diff --git a/src/ui/sf/montage_cb.cc b/src/ui/sf/montage_cb.cc
index bf18141..ef78cdc 100644
--- a/src/ui/sf/montage_cb.cc
+++ b/src/ui/sf/montage_cb.cc
@@ -82,7 +82,7 @@ daSFMontage_button_press_event_cb( GtkWidget *wid, GdkEventButton *event, gpoint
 		} else if ( SF.remix_mode == aghui::SScoringFacility::TICARemixMode::map ) {
 			const char *mapped =
 				(SF.ica_map[SF.using_ic].m != -1)
-				? SF.channel_by_idx( SF.ica_map[SF.using_ic].m) . name
+				? SF.channel_by_idx( SF.ica_map[SF.using_ic].m) . name.c_str()
 				: aghui::SScoringFacility::ica_unmapped_menu_item_label;
 			SF.suppress_redraw = true;
 			gtk_container_foreach(
@@ -261,7 +261,7 @@ daSFMontage_motion_notify_event_cb( GtkWidget *wid, GdkEventMotion *event, gpoin
 	if ( SF.mode == aghui::SScoringFacility::TMode::scoring ) {
 		gtk_label_set_text(
 			SF.lSFOverChannel,
-			SF.channel_near( event->y) -> name);
+			SF.channel_near( event->y) -> name.c_str());
 	} else
 		gtk_label_set_text( SF.lSFOverChannel, "");
 
@@ -521,7 +521,7 @@ iSFPageHide_activate_cb( GtkMenuItem*, gpointer userdata)
 	SF.using_channel->hidden = true;
 	// add an item to iSFPageHidden
 	auto item = (GtkWidget*)(SF.using_channel->menu_item_when_hidden =
-				 (GtkMenuItem*)gtk_menu_item_new_with_label( SF.using_channel->name));
+				 (GtkMenuItem*)gtk_menu_item_new_with_label( SF.using_channel->name.c_str()));
 	g_object_set( (GObject*)item,
 		      "visible", TRUE,
 		      NULL);
@@ -668,7 +668,7 @@ iSFPageFilter_activate_cb( GtkMenuItem *menuitem, gpointer userdata)
 	FD.P = H.filters;
 	FD.W_V.up();
 
-	snprintf_buf( "<big>Filters for channel <b>%s</b></big>", SF.using_channel->name);
+	snprintf_buf( "<big>Filters for channel <b>%s</b></big>", SF.using_channel->name.c_str());
 	gtk_label_set_markup( FD.lSFFilterCaption,
 			      __buf__);
 
@@ -685,7 +685,7 @@ iSFPageFilter_activate_cb( GtkMenuItem *menuitem, gpointer userdata)
 		}
 		gtk_widget_queue_draw( (GtkWidget*)SF.daSFMontage);
 
-		if ( strcmp( SF.using_channel->name, SF._p.AghH()) == 0 )
+		if ( SF.using_channel->name == SF._p.AghH() )
 			SF.redraw_ssubject_timeline();
 	}
 }
@@ -727,7 +727,7 @@ iSFPageArtifactsClear_activate_cb( GtkMenuItem *menuitem, gpointer userdata)
 {
 	auto& SF = *(SScoringFacility*)userdata;
 
-	char* chnamee = g_markup_escape_text( SF.using_channel->name, -1);
+	char* chnamee = g_markup_escape_text( SF.using_channel->name.c_str(), -1);
 	if ( GTK_RESPONSE_YES == pop_question(
 		     SF.wSF,
 		     "All marked artifacts will be lost in channel <b>%s</b>.\n\n"
@@ -900,7 +900,7 @@ iSFPageAnnotationClearAll_activate_cb( GtkMenuItem *menuitem, gpointer userdata)
 {
 	auto& SF = *(SScoringFacility*)userdata;
 
-	char* chnamee = g_markup_escape_text( SF.using_channel->name, -1);
+	char* chnamee = g_markup_escape_text( SF.using_channel->name.c_str(), -1);
 	if ( GTK_RESPONSE_YES
 	     == pop_question( SF.wSF,
 			      "Sure you want to delete all annotations in channel <b>%s</b>?",
@@ -965,7 +965,7 @@ iSFICAPageMapIC_activate_cb( GtkRadioMenuItem* i, gpointer u)
 	int target = -1;
 	int h = 0;
 	for ( auto H = SF.channels.begin(); H != SF.channels.end(); ++H, ++h )
-		if ( strcmp( H->name, label) == 0 ) {
+		if ( H->name == label ) {
 			target = h;
 			break;
 		}
diff --git a/src/ui/sf/sf.cc b/src/ui/sf/sf.cc
index 7290db5..3b4bc42 100644
--- a/src/ui/sf/sf.cc
+++ b/src/ui/sf/sf.cc
@@ -221,7 +221,7 @@ SScoringFacility (agh::CSubject& J,
 		if ( H.hidden ) {
 			++n_hidden;
 			auto item = (GtkWidget*)(H.menu_item_when_hidden =
-						 (GtkMenuItem*)gtk_menu_item_new_with_label( H.name));
+						 (GtkMenuItem*)gtk_menu_item_new_with_label( H.name.c_str()));
 			g_object_set( (GObject*)item,
 				      "visible", TRUE,
 				      NULL);
@@ -318,7 +318,7 @@ redraw_ssubject_timeline() const
 
 aghui::SScoringFacility::SChannel&
 aghui::SScoringFacility::
-operator[]( const char *ch)
+operator[]( const string& ch)
 {
 	auto iter = find( channels.begin(), channels.end(), ch);
 	if ( unlikely (iter == channels.end()) )
@@ -698,10 +698,10 @@ save_montage()
 
 void
 aghui::SScoringFacility::
-sb_message( const char* msg) const
+sb_message( const string& msg) const
 {
 	gtk_statusbar_pop(  sbSF, sbSFContextIdGeneral);
-	gtk_statusbar_push( sbSF, sbSFContextIdGeneral, msg);
+	gtk_statusbar_push( sbSF, sbSFContextIdGeneral, msg.c_str());
 }
 
 void
diff --git a/src/ui/sf/sf.hh b/src/ui/sf/sf.hh
index 80c34e6..4ebb220 100644
--- a/src/ui/sf/sf.hh
+++ b/src/ui/sf/sf.hh
@@ -72,11 +72,10 @@ class SScoringFacility
 
 		DELETE_DEFAULT_METHODS (SChannel);
 
-		const char
-			*name;
+		string	name;
 		sigfile::SChannel::TType
 			type;
-		bool operator==( const char *) const;
+		bool operator==( const string&) const;
 		bool operator==( const SChannel&) const;
 
 		agh::CRecording&
@@ -200,7 +199,7 @@ class SScoringFacility
 
 	      // region
 		void mark_region_as_artifact( bool do_mark);
-		void mark_region_as_annotation( const char*, sigfile::SAnnotation::TType);
+		void mark_region_as_annotation( const string&, sigfile::SAnnotation::TType);
 		void mark_region_as_pattern();
 
 	      // ctor, dtor
@@ -274,7 +273,7 @@ class SScoringFacility
 			*menu_item_when_hidden;
 
 	      // comprehensive draw
-		void draw_for_montage( const char *fname, int width, int height); // to a file
+		void draw_for_montage( const string& fname, int width, int height); // to a file
 		void draw_for_montage( cairo_t*); // to montage
 
 	    protected:
@@ -304,7 +303,7 @@ class SScoringFacility
 	list<SChannel>
 		channels;
 	size_t	n_eeg_channels;
-	SChannel& operator[]( const char*);
+	SChannel& operator[]( const string&);
 	SChannel& operator[]( size_t i)
 		{
 			return channel_by_idx(i);
@@ -471,7 +470,7 @@ class SScoringFacility
 	void reset_montage();
 	// draw
 	void draw_montage( cairo_t*);
-	void draw_montage( const char *fname); // to a file (uses da_wd and da_ht
+	void draw_montage( const string& fname); // to a file (uses da_wd and da_ht
     private:
 	template <class T>
 	void _draw_matrix_to_montage( cairo_t*, const itpp::Mat<T>&);
@@ -486,7 +485,7 @@ class SScoringFacility
 	void do_score_back( char score_ch);
 
       // status bar
-	void sb_message( const char*) const;
+	void sb_message( const string&) const;
 	void sb_clear() const;
 
       // tips
@@ -572,19 +571,22 @@ class SScoringFacility
 
 
 inline bool
-SScoringFacility::SChannel::operator==( const char *_name) const
+SScoringFacility::SChannel::
+operator==( const string& _name) const
 {
-	return 0 == strcmp( name, _name);
+	return name == _name;
 }
 inline bool
-SScoringFacility::SChannel::operator==( const SChannel& rv) const
+SScoringFacility::SChannel::
+operator==( const SChannel& rv) const
 {
-	return 0 == strcmp( name, rv.name);
+	return name == rv.name;
 }
 
 
 inline bool
-SScoringFacility::SChannel::have_low_pass() const
+SScoringFacility::SChannel::
+have_low_pass() const
 {
 	return isfinite(filters.low_pass_cutoff)
 		&& filters.low_pass_cutoff > 0.
@@ -592,46 +594,53 @@ SScoringFacility::SChannel::have_low_pass() const
 }
 
 inline bool
-SScoringFacility::SChannel::have_high_pass() const
+SScoringFacility::SChannel::
+have_high_pass() const
 {
 	return isfinite(filters.high_pass_cutoff)
 		&& filters.high_pass_cutoff > 0.
 		&& filters.high_pass_order > 0;
 }
 inline bool
-SScoringFacility::SChannel::have_notch_filter() const
+SScoringFacility::SChannel::
+have_notch_filter() const
 {
 	return filters.notch_filter != sigfile::SFilterPack::TNotchFilter::none;
 }
 
 inline size_t
-SScoringFacility::SChannel::n_samples() const
+SScoringFacility::SChannel::
+n_samples() const
 {
 	return signal_filtered.size();
 }
 
 
 inline bool
-SScoringFacility::SChannel::operator<( const SChannel& rv) const
+SScoringFacility::SChannel::
+operator<( const SChannel& rv) const
 {
 	return zeroy < rv.zeroy;
 }
 
 
 inline float
-SScoringFacility::SChannel::spp() const
+SScoringFacility::SChannel::
+spp() const
 {
 	return (float)samplerate() * _p.vpagesize() / _p.da_wd;
 }
 inline float
-SScoringFacility::SChannel::fine_line() const
+SScoringFacility::SChannel::
+fine_line() const
 {
 	return ((not resample_signal) and spp() > 1.)
 		? agh::alg::value_within( .6 / (spp() + .2), .1, 3.)
 		: .6;
 }
 inline int
-SScoringFacility::SChannel::sample_at_click( double x) const
+SScoringFacility::SChannel::
+sample_at_click( double x) const
 {
 	return _p.time_at_click( x) * samplerate();
 }
@@ -640,7 +649,8 @@ SScoringFacility::SChannel::sample_at_click( double x) const
 
 
 inline size_t
-SScoringFacility::SChannel::samplerate() const
+SScoringFacility::SChannel::
+samplerate() const
 {
 	return crecording.F().samplerate(_h);
 }
@@ -648,34 +658,40 @@ SScoringFacility::SChannel::samplerate() const
 
 
 inline size_t
-SScoringFacility::vpagesize() const
+SScoringFacility::
+vpagesize() const
 {
 	return DisplayPageSizeValues[pagesize_item];
 }
 inline bool
-SScoringFacility::pagesize_is_right() const
+SScoringFacility::
+pagesize_is_right() const
 {
 	return pagesize() == vpagesize();
 }
 
 inline size_t
-SScoringFacility::cur_vpage_start() const // in seconds
+SScoringFacility::
+cur_vpage_start() const // in seconds
 {
 	return _cur_vpage * vpagesize();
 }
 inline size_t
-SScoringFacility::cur_vpage_end() const // in seconds
+SScoringFacility::
+cur_vpage_end() const // in seconds
 {
 	return (_cur_vpage + 1) * vpagesize();
 }
 inline size_t
-SScoringFacility::p2ap( size_t p) const // page to visible_page
+SScoringFacility::
+p2ap( size_t p) const // page to visible_page
 {
 	return (size_t)(p * (float)pagesize() / vpagesize());
 }
 
 inline size_t
-SScoringFacility::ap2p( size_t p) const
+SScoringFacility::
+ap2p( size_t p) const
 {
 	return (size_t)((p) * (float)vpagesize() / pagesize());
 }
@@ -683,28 +699,33 @@ SScoringFacility::ap2p( size_t p) const
 
 
 inline float
-SScoringFacility::xvpagesize() const
+SScoringFacility::
+xvpagesize() const
 {
 	return (1. + 2*skirting_run_per1) * vpagesize();
 }
 inline double
-SScoringFacility::cur_xvpage_start() const
+SScoringFacility::
+cur_xvpage_start() const
 {
 	return cur_vpage_start() - skirting_run_per1 * vpagesize();
 }
 inline double
-SScoringFacility::cur_xvpage_end() const
+SScoringFacility::
+cur_xvpage_end() const
 {
 	return cur_vpage_end() + skirting_run_per1 * vpagesize();
 }
 inline double
-SScoringFacility::time_at_click( double x) const
+SScoringFacility::
+time_at_click( double x) const
 {
 	return cur_xvpage_start() + x/da_wd * xvpagesize();
 }
 
 inline void
-SScoringFacility::set_vpagesize( size_t seconds, bool touch_self)
+SScoringFacility::
+set_vpagesize( size_t seconds, bool touch_self)
 {
 	set_vpagesize_item( figure_display_pagesize_item( seconds), touch_self);
 }
@@ -712,7 +733,8 @@ SScoringFacility::set_vpagesize( size_t seconds, bool touch_self)
 
 
 inline size_t
-SScoringFacility::n_ics() const
+SScoringFacility::
+n_ics() const
 {
 	return ica->obj() . get_nrof_independent_components();
 }
@@ -722,7 +744,8 @@ SScoringFacility::n_ics() const
 template <class T>
 float
 __attribute__ ((pure))
-SScoringFacility::channel_y0( const T& h) const
+SScoringFacility::
+channel_y0( const T& h) const
 {
 	auto H = find( channels.begin(), channels.end(), h);
 	return ( H != channels.end() ) ? H->zeroy : NAN;

-- 
Sleep experiment manager



More information about the debian-med-commit mailing list