⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symbmath.cpp

📁 Mobile STK for Symbian OS V0.1
💻 CPP
字号:

#include "symbmath.h"
#include "debug.h"

#undef DEBUG3
#undef DEBUG

#ifndef SYMB_ANSIMATH
TReal cos(TReal t2)
{
	TReal temp;

	Math::Cos(temp, t2);
	return temp;
}

TReal sin(TReal t2)
{
	TReal temp;

	Math::Sin(temp, t2);
	return temp;
}

TReal sqrt(TReal t2)
{
	TReal temp;

	Math::Sqrt(temp, t2);
	return temp;
}

TReal pow(TReal t2, TReal t3)
{
	TReal temp;

	Math::Pow(temp, t2, t3);
	return temp;
}

TReal exp(TReal t2)
{
	TReal temp;

	Math::Exp(temp, t2);
	return temp;
}

TReal fabs(TReal t2)
{
	return t2 >= 0.0 ? t2 : -t2;
}

TReal floor(TReal t2)
{
	TInt temp = t2;

	return (TReal) temp;
}

TReal ceil(TReal t2)
{
	TInt temp = t2+1;
	return (TReal) temp;
}

TReal atan2(TReal t2, TReal t3)
{
	TReal temp;

	Math::ATan(temp, t2, t3);
	return temp;
}

TReal log(TReal t2)
{
	TReal temp;

	Math::Log(temp, t2);
	return temp;
}

TUint32 rand()
{
//	TInt64 seed = 0;
//	return Math::Rand(seed);
	return Math::Random(); 
}

TInt srand(unsigned int &aSeed)
{
	TInt64 seed = aSeed;
	return Math::Rand(seed);
}
#endif

// IntVector

IntVector::IntVector() : _size(0), _pos(0), /*_vector(0),*/ iErr(-17.00)
{
//	resize(40);
//  _size=40;
	dcnt = 0;
}
IntVector::IntVector(int size, TInt init)
{
//	_vector = new (ELeave) TInt[size];
	_size = 0;
	_pos = 0;
	for(int i=0; i<size;i++)
		push_back(init); //_vector[i] = init;
//	_pos = i;
//	_size = i;
	dcnt = 0;
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("const:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteInfo(_L("-"));		CStaticDebug::WriteIntN(_size);		dcnt ++;	}#endif}

void IntVector::resize(int size)
{
	int i;
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif	if(size<_size)
	{
		if(_pos > size)
			_pos = size;
	}
	else
	{
		TInt *tvector;

		tvector=_vector;

		_vector = new (ELeave) TInt[size];

		if(_size>0)
		{
			for(i=0; i<_pos;i++)
				_vector[i]=tvector[i];
			delete [] tvector;
		}

		_size = size;
		_pos = size;

	}
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize2:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);	}#endif}

IntVector::~IntVector()
{
/*	if(_size>0)
		delete [] _vector;*/
}

TInt& IntVector::operator[]( unsigned long idx )
{
   if( idx >= 0 && idx < _pos )
      return _vector[idx];
   else
   {
	   return iErr;//iErr; // Error returns -17.0;
   }
}


void IntVector::push_back(const TInt &t)
{
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("pb:"));		CStaticDebug::WriteInt(t);		CStaticDebug::WriteInfo(_L(":"));		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif
	if(_pos<_size)
		_vector[_pos++]=t;
	else
	{
		this->resize(_size+1);
		_vector[_pos-1]=t;
	}
}

void IntVector::clear()
{
#ifdef DEBUG2	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("clr:"));		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif	for(int i=0; i<_pos; i++)
	{
		_vector[i] = 0.0;
	}
}

const int IntVector::size()
{
	return _pos;
}

// FloatVector

FloatVector::FloatVector() : _size(0), _pos(0), /*_vector(0),*/ iErr(-17.00)
{
//	resize(40);
//  _size=40;
	dcnt = 0;
}
FloatVector::FloatVector(int size, TReal init)
{
//	_vector = new (ELeave) TReal[size];
	_size = 0;
	_pos = 0;
	for(int i=0; i<size;i++)
		push_back(init); //_vector[i] = init;
//	_pos = i;
//	_size = i;
	dcnt = 0;
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("const:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteInfo(_L("-"));		CStaticDebug::WriteIntN(_size);		dcnt ++;	}#endif}

void FloatVector::resize(int size)
{
	int i;
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif	if(size<_size)
	{
		if(_pos > size)
			_pos = size;
	}
	else
	{
		TReal *tvector;

		tvector=_vector;

		_vector = new (ELeave) TReal[size];

		if(_size>0)
		{
			for(i=0; i<_pos;i++)
				_vector[i]=tvector[i];
			delete [] tvector;
		}

		_size = size;
		_pos = size;

	}
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize2:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);	}#endif}

FloatVector::~FloatVector()
{
/*	if(_size>0)
		delete [] _vector;*/
}

TReal& FloatVector::operator[]( unsigned long idx )
{
   if( idx >= 0 && idx < _pos )
      return _vector[idx];
   else
   {
	   return iErr;//iErr; // Error returns -17.0;
   }
}


void FloatVector::push_back(const TReal &t)
{
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("pb:"));		CStaticDebug::WriteReal(t);		CStaticDebug::WriteInfo(_L(":"));		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif
	if(_pos<_size)
		_vector[_pos++]=t;
	else
	{
		this->resize(_size+1);
		_vector[_pos-1]=t;
	}
}

void FloatVector::clear()
{
#ifdef DEBUG2	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("clr:"));		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif	for(int i=0; i<_pos; i++)
	{
		_vector[i] = 0.0;
	}
}

const int FloatVector::size()
{
	return _pos;
}

// ADSR Vector

ADSRVector::ADSRVector() : _size(0), _pos(0), /*_vector(0),*/ iErr(0)
{
//	resize(40);
//  _size=40;
	dcnt = 0;
}
ADSRVector::ADSRVector(int size, ADSR *init)
{
//	_vector = new (ELeave) TReal[size];
	_size = 0;
	_pos = 0;
	for(int i=0; i<size;i++)
		push_back(init); //_vector[i] = init;
//	_pos = i;
//	_size = i;
	dcnt = 0;
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("const:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteInfo(_L("-"));		CStaticDebug::WriteIntN(_size);		dcnt ++;	}#endif}

void ADSRVector::resize(int size)
{
	int i;
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif	if(size<_size)
	{
		if(_pos > size)
			_pos = size;
	}
	else
	{
		ADSR **tvector;

		tvector=_vector;

		_vector = new (ELeave) ADSR*[size];

		if(_size>0)
		{
			for(i=0; i<_pos;i++)
				_vector[i]=tvector[i];
			delete [] tvector;
		}

		_size = size;
		_pos = size;

	}
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize2:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);	}#endif}

ADSRVector::~ADSRVector()
{
/*	if(_size>0)
		delete [] _vector;*/
}

ADSR*& ADSRVector::operator[]( unsigned long idx )
{
   if( idx >= 0 && idx < _pos )
      return _vector[idx];
   else
   {
	   return iErr; // Error returns -17.0;
   }
}


void ADSRVector::push_back(ADSR *t)
{
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("pb:"));		CStaticDebug::WriteReal(t);		CStaticDebug::WriteInfo(_L(":"));		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif
	if(_pos<_size)
		_vector[_pos++]=t;
	else
	{
		this->resize(_size+1);
		_vector[_pos-1]=t;
	}
}

const int ADSRVector::size()
{
	return _pos;
}

// WaveLoop Vector

WaveLoopVector::WaveLoopVector() : _size(0), _pos(0), /*_vector(0),*/ iErr(0)
{
//	resize(40);
//  _size=40;
	dcnt = 0;
}
WaveLoopVector::WaveLoopVector(int size, WaveLoop *init)
{
//	_vector = new (ELeave) TReal[size];
	_size = 0;
	_pos = 0;
	for(int i=0; i<size;i++)
		push_back(init); //_vector[i] = init;
//	_pos = i;
//	_size = i;
	dcnt = 0;
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("const:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteInfo(_L("-"));		CStaticDebug::WriteIntN(_size);		dcnt ++;	}#endif}

void WaveLoopVector::resize(int size)
{
	int i;
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif	if(size<_size)
	{
		if(_pos > size)
			_pos = size;
	}
	else
	{
		WaveLoop **tvector;

		tvector=_vector;

		_vector = new (ELeave) WaveLoop*[size];

		if(_size>0)
		{
			for(i=0; i<_pos;i++)
				_vector[i]=tvector[i];
			delete [] tvector;
		}

		_size = size;
		_pos = size;

	}
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize2:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);	}#endif}

WaveLoopVector::~WaveLoopVector()
{
/*	if(_size>0)
		delete [] _vector;*/
}

WaveLoop*& WaveLoopVector::operator[]( unsigned long idx )
{
   if( idx >= 0 && idx < _pos )
      return _vector[idx];
   else
   {
	   return iErr; // Error returns -17.0;
   }
}


void WaveLoopVector::push_back(WaveLoop *t)
{
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("pb:"));		CStaticDebug::WriteReal(t);		CStaticDebug::WriteInfo(_L(":"));		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif
	if(_pos<_size)
		_vector[_pos++]=t;
	else
	{
		this->resize(_size+1);
		_vector[_pos-1]=t;
	}
}

const int WaveLoopVector::size()
{
	return _pos;
}

// Grain Vector

GrainVector::GrainVector() : _size(0), _pos(0)
{
//	resize(40);
//  _size=40;
	dcnt = 0;
}
GrainVector::GrainVector(int size, Grain &init)
{
//	_vector = new (ELeave) TReal[size];
	_size = 0;
	_pos = 0;
	for(int i=0; i<size;i++)
		push_back(init); //_vector[i] = init;
//	_pos = i;
//	_size = i;
	dcnt = 0;
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("const:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteInfo(_L("-"));		CStaticDebug::WriteIntN(_size);		dcnt ++;	}#endif}

void GrainVector::resize(int size)
{
	int i;
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif	if(size<_size)
	{
		if(_pos > size)
			_pos = size;
	}
	else
	{
		Grain *tvector;

		tvector=_vector;

		_vector = new (ELeave) Grain[size];

		if(_size>0)
		{
			for(i=0; i<_pos;i++)
				_vector[i]=tvector[i];
			delete [] tvector;
		}

		_size = size;
		_pos = size;

	}
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize2:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);	}#endif}

GrainVector::~GrainVector()
{
/*	if(_size>0)
		delete [] _vector;*/
}

Grain& GrainVector::operator[]( unsigned long idx )
{
   if( idx >= 0 && idx < _pos )
      return _vector[idx];
   else
   {
	   return iErr; // Error returns -17.0;
   }
}


void GrainVector::push_back(Grain &t)
{
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("pb:"));		CStaticDebug::WriteReal(t);		CStaticDebug::WriteInfo(_L(":"));		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif
	if(_pos<_size)
		_vector[_pos++]=t;
	else
	{
		this->resize(_size+1);
		_vector[_pos-1]=t;
	}
}

const int GrainVector::size()
{
	return _pos;
}


// FileWvIn Vector

FileWvInVector::FileWvInVector() : _size(0), _pos(0), /*_vector(0),*/ iErr(0)
{
//	resize(40);
//  _size=40;
	dcnt = 0;
}
FileWvInVector::FileWvInVector(int size, FileWvIn *init)
{
//	_vector = new (ELeave) TReal[size];
	_size = 0;
	_pos = 0;
	for(int i=0; i<size;i++)
		push_back(init); //_vector[i] = init;
//	_pos = i;
//	_size = i;
	dcnt = 0;
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("const:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteInfo(_L("-"));		CStaticDebug::WriteIntN(_size);		dcnt ++;	}#endif}

void FileWvInVector::resize(int size)
{
	int i;
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif	if(size<_size)
	{
		if(_pos > size)
			_pos = size;
	}
	else
	{
		FileWvIn **tvector;

		tvector=_vector;

		_vector = new (ELeave) FileWvIn*[size];

		if(_size>0)
		{
			for(i=0; i<_pos;i++)
				_vector[i]=tvector[i];
			delete [] tvector;
		}

		_size = size;
		_pos = size;

	}
#ifdef DEBUG	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("resize2:"));		CStaticDebug::WriteInt(size);		CStaticDebug::WriteIntN(_pos);	}#endif}

FileWvInVector::~FileWvInVector()
{
/*	if(_size>0)
		delete [] _vector;*/
}

FileWvIn*& FileWvInVector::operator[]( unsigned long idx )
{
   if( idx >= 0 && idx < _pos )
      return _vector[idx];
   else
   {
	   return iErr; // Error returns -17.0;
   }
}


void FileWvInVector::push_back(FileWvIn *t)
{
#ifdef DEBUG3	if(dcnt < 20)	{		CStaticDebug::WriteInfo(_L("pb:"));		CStaticDebug::WriteReal(t);		CStaticDebug::WriteInfo(_L(":"));		CStaticDebug::WriteIntN(_pos);		dcnt ++;	}#endif
	if(_pos<_size)
		_vector[_pos++]=t;
	else
	{
		this->resize(_size+1);
		_vector[_pos-1]=t;
	}
}

const int FileWvInVector::size()
{
	return _pos;
}


/*
// FILE replacement SYMBFILE

SYMBFILE::SYMBFILE() : _pos(0)
{
}

SYMBFILE::~SYMBFILE()
{
	iFile.Flush();
	iFile.Close();
	iRFs.Close();
}

int SYMBFILE::getMode(const char* mode

int SYMBFILE::open(const char* fname, const char* fmode)
{
	
	TPtr8 sname = fname;

	return iFile.Open(iRFs, sname, smode);
}

int SYMBFILE::seek(long offset, int origin)
{
	_pos = offset;
	return iFile.Seek(smode, _pos);
}

long SYMBFILE::read(void *buffer, long size, long count)
{

}

long SYMBFILE::write()
{
}

long SYMBFILE::tell()
{
	return _pos;
}

// Function interface (wrap)

int fclose( SYMBFILE *stream ) { return stream->close(); }

int fseek( SYMBFILE *stream, long offset, int origin ) { return stream->seek(offset, origin); }

size_t fread( void *buffer, size_t size, size_t count, SYMBFILE *stream ) { return stream->read(buffer,size, count); }

size_t fwrite( const void *buffer, size_t size, size_t count, SYMBFILE *stream ) { return stream->write(buffer,size,count); }

long ftell( SYMBFILE *stream ) { return stream->tell(); }

SYMBFILE *fopen( const char *filename, const char *mode )
{
	return new (ELeave) SYMBFILE(filename, mode);
}

*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -