www.pudn.com > matlab7.x.rar > dataelement.cpp


#include  
#include "dataelement.h" 
 
DataElement::DataElement() 
{ 
	bComplex = false; 
	bGlobal = false; 
	bLogical = false; 
	arrayClass = 0; 
	numDimensions = 1; 
	arrayDim = NULL; 
	totalLength = 0L; 
	arrayName = ""; 
	realPart = NULL; 
	imagPart = NULL; 
} 
 
DataElement::~DataElement() 
{ 
	if ( arrayDim != NULL ) 
	{ 
		delete [] arrayDim; 
		arrayDim = NULL; 
	} 
	 
	if ( realPart != NULL ) 
	{ 
		FreeRealPart(); 
	} 
	 
	if ( imagPart != NULL ) 
	{ 
		FreeImagPart(); 
	} 
} 
 
int DataElement::SetFlags(unsigned int* flags) 
{ 
	if ( flags == NULL ) 
	{ 
		return -1; 
	} 
	 
	// test for complex data 
	if ( flags[0] & 0x0800 ) 
	{ 
		bComplex = true; 
		//std::cout << "Data is complex" << std::endl; 
	} 
	else 
	{ 
		bComplex = false; 
		//std::cout << "Data is real" << std::endl; 
	} 
		 
	// test for global data 
	if (flags[0] & 0x0400) 
	{ 
		bGlobal = true; 
		//std::cout << "Data is global" << std::endl; 
	} 
	else 
	{ 
		bGlobal = false; 
		//std::cout << "Data is not a global" << std::endl; 
	} 
		 
	// test for logical 
	if ( flags[0] & 0x0100) 
	{ 
		bLogical = true; 
		//std::cout <<"Data is logical" << std::endl; 
	} 
	else 
	{ 
		bLogical = false; 
		//std::cout << "Data is not logical" <(ptr); 
	return retVal; 
} 
                              	 
int DataElement::SetDoublePi(double* ptr) 
{ 
	int retVal = 0; 
	 
	// clear the old data 
	if ( imagPart != NULL ) 
	{ 
		FreeImagPart(); 
	} 
	 
	imagPart = static_cast(ptr); 
	return retVal; 
} 
                 
                 
void DataElement::FreeRealPart() 
{ 
	if ( realPart != NULL ) 
	{ 
		switch ( arrayClass ) 
		{ 
		case 4: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 6: 
			delete [] (static_cast(realPart));		 
			break; 
		 
		case 7: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 8: 
			delete [] (static_cast(realPart));		 
			break; 
		 
		case 9: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 10: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 11: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 12: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 13: 
			delete [] (static_cast(realPart)); 
			break; 
		} 
	} 
} 
 
void DataElement::FreeImagPart() 
{ 
	if ( imagPart != NULL ) 
	{ 
		switch ( arrayClass ) 
		{ 
		case 4: 
			delete [] (static_cast(imagPart)); 
			break; 
		 
		case 6: 
			delete [] (static_cast(imagPart));		 
			break; 
		 
		case 7: 
			delete [] (static_cast(imagPart)); 
			break; 
		 
		case 8: 
			delete [] (static_cast(imagPart));		 
			break; 
		 
		case 9: 
			delete [] (static_cast(imagPart)); 
			break; 
		 
		case 10: 
			delete [] (static_cast(imagPart)); 
			break; 
		 
		case 11: 
			delete [] (static_cast(imagPart)); 
			break; 
		 
		case 12: 
			delete [] (static_cast(imagPart)); 
			break; 
		 
		case 13: 
			delete [] (static_cast(imagPart)); 
			break; 
		} 
	} 
} 
 
void DataElement::PrintFirstColReal() 
{ 
	if ( realPart != NULL ) 
	{ 
		switch ( arrayClass ) 
		{ 
		case 4: 
		{ 
			char * data = static_cast(realPart); 
			int numRows = arrayDim[0]; 
			for (int i=0; i(realPart); 
			int numRows = arrayDim[0]; 
			for (int i=0; i(realPart)); 
			break; 
		 
		case 8: 
			delete [] (static_cast(realPart));		 
			break; 
		 
		case 9: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 10: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 11: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 12: 
			delete [] (static_cast(realPart)); 
			break; 
		 
		case 13: 
			delete [] (static_cast(realPart)); 
			break; 
		} 
	}	 
}