00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <cstddef>
00026
00027 #include <sstream>
00028 #include <string>
00029
00030 #include <boost/shared_ptr.hpp>
00031
00032 #include "../common/exceptions/WOutOfBounds.h"
00033 #include "WEEG2Segment.h"
00034 #include "WEEGValueMatrix.h"
00035 #include "WRecording.h"
00036 #include "exceptions/WDHException.h"
00037 #include "io/WPagerEEG.h"
00038
00039 WEEG2Segment::WEEG2Segment( std::size_t segmentID, boost::shared_ptr< WPagerEEG > pager )
00040 : m_segmentID( segmentID ),
00041 m_pager( pager )
00042 {
00043 if( !m_pager )
00044 {
00045 throw WDHException( std::string( "Couldn't construct new EEG segment: pager invalid" ) );
00046 }
00047
00048 if( m_segmentID >= m_pager->getNumberOfSegments() )
00049 {
00050 std::ostringstream stream;
00051 stream << "The EEG has no segment number " << m_segmentID;
00052 throw WOutOfBounds( stream.str() );
00053 }
00054
00055 m_nbSamples = m_pager->getNumberOfSamples( m_segmentID );
00056 if( m_nbSamples <= 0 || WRecording::MAX_RECORDING_SAMPLES < m_nbSamples )
00057 {
00058 throw WDHException( std::string( "Couldn't construct new EEG segment: invalid number of samples" ) );
00059 }
00060 }
00061
00062 std::size_t WEEG2Segment::getNumberOfSamples() const
00063 {
00064 return m_nbSamples;
00065 }
00066
00067 boost::shared_ptr< WEEGValueMatrix > WEEG2Segment::getValues( std::size_t start, std::size_t length ) const
00068 {
00069
00070
00071 return m_pager->getValues( m_segmentID, start, length );
00072 }