Beispiel #1
0
// Loads an encapsulated block into a temporary list
INXObjList* BlockOperations::LoadBlock(INXString Info) {
	ifstream datafile(Info);
	INXObjList* encapsulated = new INXObjList;
	char type[256];
	long int id;

	// store the id value
	id = ConData::uniqueidgenerator;


	if(datafile.is_open())
	{
		int i = 0;
		while ((!datafile.eof()) && (!datafile.bad())) {
			i++;
			datafile >> type;
		//	TRACE(type);
			if (strcmp(type,"END_OF_BLOCKS")==0) break;
			else
			if (strcmp(type,"BEGIN_BLOCK")==0) {
				ConData *blob = new ConData;
				blob->Load(&datafile);
				encapsulated->AddTail((CObject*) blob);
			}
			if(i>500)
			{
			//	TRACE("hang\n");

			}

		}
	}
Beispiel #2
0
void SODL::Copy2Flattened() {	
	ConData* blob;
	long int id = 0;
	INXPOSITION pos;
		char * type =new char[256];
		int blankcount=0;

	// Copy the condata list to the flattened list
	// save the condata list and then load it back in to flattened
	// Alternatively could use a copy constructor
	pos = flattened->GetHeadPosition();
	while(pos) {
		blob = (ConData *) (flattened->GetNext(pos));
		delete blob;
	}
	flattened->RemoveAll();
	// need to do save in view class
	//SaveProg(workDir + TEMPDIR + "temp");
	ifstream datafile(workDir + TEMPDIR + "temp");


	while ((!datafile.eof()) && (!datafile.bad()) && (blankcount<1000000)) {
		datafile >> type;
		if (strcmp(type,"END_OF_BLOCKS")==0)
			break;
		else
			if (strcmp(type,"BEGIN_BLOCK")==0) {
				blob = new ConData;
				blob->Load(&datafile);
				flattened->AddTail((INXObject*) blob);
				id = blob->identnum;
			} else {
				blankcount++;
			}
	}
	
	// set the uniqueidgenerator to the identnum of the last icon
	// This is necessary as it is possible that this value may be greater than
	// the number of icons loaded, due to icons being deleted previously. This
	// prevents icon IDs being duplicated
	// Need to add 1, since uniqueidgenerator is incremented after a new icon is
	// instantiated.
	id++;
	ConData::uniqueidgenerator = id;
	delete type;
}
Beispiel #3
0
INXObjList* EditList::LoadTemp() {	
	ConData* blob;
	long int id = 0;
	INXObjList* temp = new INXObjList;

	// Copy the condata list to the flattened list
	// save the condata list and then load it back in to flattened
	// Alternatively could use a copy constructor
	temp->RemoveAll();
	//SaveProg(workDir + TEMPDIR + "temp");
	ifstream datafile(workDir + TEMPDIR + "temp");
	char type[256];

	while ((!datafile.eof()) && (!datafile.fail())) {
		datafile >> type;
		if (strcmp(type,"END_OF_BLOCKS")==0) break;
		else
		if (strcmp(type,"BEGIN_BLOCK")==0) 
		{
			blob = new ConData;
			
			if(blob)
			{	blob->Load(&datafile);
				temp->AddTail((CObject*) blob);
				id = blob->identnum;
			}
			else
			{
				//delete blob;
				break;
			}
		}
	}
	
	// set the uniqueidgenerator to the identnum of the last icon
	// This is necessary as it is possible that this value may be greater than
	// the number of icons loaded, due to icons being deleted previously. This
	// prevents icon IDs being duplicated
	// Need to add 1, since uniqueidgenerator is incremented after a new icon is
	// instantiated.
	//id++;
	//ConData::uniqueidgenerator = id;
	return temp;
}
Beispiel #4
0
// Loads the saved copySelList into the pasteList
INXObjList* EditList::LoadPaste(INXString Info) {
	ifstream datafile(Info);
	char type[256] = {'\0'};
	long int id;
	INXObjList* pasteList = NULL;

	datafile >> type;
	// if a file is empty don't load it
	if ((INXString)type == "") {
		return NULL;
	}
	datafile.close();

	datafile.open(Info);

	// store the id value
	id = ConData::uniqueidgenerator;

	while ((!datafile.eof()) && (!datafile.bad())) {
		datafile >> type;
		if (strcmp(type,"END_OF_BLOCKS")==0) break;
		else
		if (strcmp(type,"BEGIN_BLOCK")==0) {
			ConData *blob = new ConData;
			blob->Load(&datafile);
			if (!pasteList) {
				pasteList = new INXObjList;
			}
			pasteList->AddTail((CObject*) blob);
		}
	}

	// restore the id value, since it will have been increased when creating flattened
	ConData::uniqueidgenerator = id;

	return pasteList;
}