예제 #1
0
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void WaveformProcessor::reset() {
	Filter *tmp = _stream.filter;

	_stream = StreamState();

	if ( _operator ) _operator->reset();

	if ( tmp != NULL ) {
		_stream.filter = tmp->clone();
		delete tmp;
	}

	_status = WaitingForData;
	_statusValue = 0.;
}
예제 #2
0
void Snapshotable::SaveSnapshot(ostream* file)
{
	_stateVersion = SaveStateManager::FileFormatVersion;

	_streamSize = 0x1000;
	_stream = new uint8_t[_streamSize];
	_position = 0;
	_saving = true;

	StreamState(_saving);
	file->write((char*)&_position, sizeof(_position));
	file->write((char*)_stream, _position);

	delete[] _stream;

	if(_blockBuffer) {
		throw new std::runtime_error("A call to StreamEndBlock is missing.");
	}
}
예제 #3
0
void Snapshotable::LoadSnapshot(istream* file, uint32_t stateVersion)
{
	_stateVersion = stateVersion;

	_position = 0;
	_saving = false;

	file->read((char*)&_streamSize, sizeof(_streamSize));
	_stream = new uint8_t[_streamSize];
	file->read((char*)_stream, _streamSize);
	StreamState(_saving);

	AfterLoadState();

	delete[] _stream;

	if(_blockBuffer) {
		throw new std::runtime_error("A call to StreamEndBlock is missing.");
	}
}