Example #1
0
bool Skim_File::Set_Table (int num_org, int num_des, int periods)
{
	Clear_Table ();
	if (num_org < 1 || num_des < 1 || periods < 1) return (false);

	Num_Org (0);
	Num_Des (0);

	if (table_flag) {
		ttime = new Dtime ** [num_org];
		if (ttime == 0) return (false);

		for (int org=0; org < num_org; org++) {
			ttime [org] = new Dtime * [num_des];
			if (ttime [org] == 0) return (false);

			for (int des=0; des < num_des; des++) {
				ttime [org] [des] = new Dtime [periods];
				if (ttime [org] [des] == 0) return (false);

				memset (ttime [org] [des], '\0', periods * sizeof (Dtime));
			}
		}
	} else {
		table = new Skim_Data ** [num_org];
		if (table == 0) return (false);

		for (int org=0; org < num_org; org++) {
			table [org] = new Skim_Data * [num_des];
			if (table [org] == 0) return (false);

			for (int des=0; des < num_des; des++) {
				table [org] [des] = new Skim_Data [periods];
				if (table [org] [des] == 0) return (false);

				memset (table [org] [des], '\0', periods * sizeof (Skim_Data));
			}
		}
	}
	Num_Org (num_org);
	Num_Des (num_des);
	return (true);
}
Example #2
0
void Skim_File::Clear_Table (void)
{
	if (table != 0) {
		for (int org=0; org < Num_Org (); org++) {
			for (int des=0; des < Num_Des (); des++) {
				delete [] table [org] [des];
			}
			delete [] table [org];
		}
		delete [] table;
		table = 0;
	}
	if (ttime != 0) {
		for (int org=0; org < Num_Org (); org++) {
			for (int des=0; des < Num_Des (); des++) {
				delete [] ttime [org] [des];
			}
			delete [] ttime [org];
		}
		delete [] ttime;
		ttime = 0;
	}
}
Example #3
0
bool TransCAD_Matrix::Read_Row (void *data, int org, int table, int period)
{
	period = 0;
	MATRIX_SetCore (fh, (short) table);
	org = Org_Index (org);
	if (org < 0) {
		if (org < -1) return (false);
		int size;
		switch (Type ()) {
			default:
			case DB_DOUBLE:
				size = sizeof (double);
				break;
			case DB_FLOAT:
				size = sizeof (float);
				break;
			case DB_INTEGER:
				size = sizeof (int);
				break;
			case DB_SHORT:
				size = sizeof (short);
				break;
		}
		size *= Num_Des ();
		memset (data, '\0', size);
		return (true);
	}

	switch (Type ()) {
		default:
		case DB_DOUBLE:
			MATRIX_GetBaseVector (fh, org, MATRIX_ROW, DOUBLE_TYPE, data);
			break;
		case DB_FLOAT:
			MATRIX_GetBaseVector (fh, org, MATRIX_ROW, FLOAT_TYPE, data);
			break;
		case DB_INTEGER:
			MATRIX_GetBaseVector (fh, org, MATRIX_ROW, LONG_TYPE, data);
			break;
		case DB_SHORT:
			MATRIX_GetBaseVector (fh, org, MATRIX_ROW, SHORT_TYPE, data);
			break;
	}
	return (tc_status == TC_OKAY);
}
Example #4
0
	bool   Set_Table (void)              { return (Set_Table (Num_Org (), Num_Des (), Num_Periods ())); }
Example #5
0
	int    Table_Size (void)             { return (Num_Org () * Num_Des () * Num_Periods ()); }
Example #6
0
bool TransCAD_Matrix::Db_Open (string filename)
{
	int i;
	DATA_TYPE data_type;

	if (!Load_DLL ()) return (Status (NO_TRANSCAD));
	
	Set_Field_Numbers ();

	if (File_Access () == CREATE) {
		int len;
		char **core_names;
		Db_Field *fld_ptr;

		if (Num_Des () == 0 || Tables () == 0) return (false);

		if (Type () == DB_DOUBLE) {
			data_type = DOUBLE_TYPE;
		} else if (Type () == DB_FLOAT) {
			data_type = FLOAT_TYPE;
		} else if (Type () == DB_SHORT) {
			data_type = SHORT_TYPE;
		} else {
			data_type = LONG_TYPE;
		}
		core_names = new char * [Tables ()];

		for (i=0; i < Tables (); i++) {
			fld_ptr = Table_Field (i);
			len = (int) fld_ptr->Name ().length () + 1;
			core_names [i] = new char [len];
			strcpy_s (core_names [i], len, fld_ptr->Name ().c_str ());
		}
		if ((int) Org_Map ()->size () != Num_Org () || (int) Des_Map ()->size () != Num_Des ()) {
			for (i=1; i <= Num_Org (); i++) {
				Add_Org (i);
			}
			for (i=1; i <= Num_Des (); i++) {
				Add_Des (i);
			}
			fh = MATRIX_New ((char *) filename.c_str (), (char *) File_Type ().c_str (), 
				Num_Org (), 0, Num_Des (), 0, Tables (), core_names, data_type, 1);
		} else {
			int i;
			Integers row_ids, col_ids;
			Int_Map_Itr map_itr;

			row_ids.assign (Num_Org (), 0);

			for (i=0, map_itr = Org_Map ()->begin (); map_itr != Org_Map ()->end (); map_itr++, i++) {
				row_ids [i] = map_itr->first;
			}
			col_ids.assign (Num_Des (), 0);

			for (i=0, map_itr = Des_Map ()->begin (); map_itr != Des_Map ()->end (); map_itr++, i++) {
				col_ids [i] = map_itr->first;
			}
			fh = MATRIX_New ((char *) filename.c_str (), (char *) File_Type ().c_str (), 
				Num_Org (), (long *) &row_ids [0], Num_Des (), (long *) &col_ids [0], 
				Tables (), core_names, data_type, 1);
		}
		for (i=0; i < Tables (); i++) {
			delete [] core_names [i];
		}
		delete [] core_names;

	} else {
		fh = MATRIX_LoadFromFile ((char *) filename.c_str (), CONTROL_AUTOMATIC);

		if (tc_status != TC_OKAY || fh == 0) return (false);

		Num_Org (MATRIX_GetNRows (fh));
		Num_Des (MATRIX_GetNCols (fh));

		data_type = MATRIX_GetDataType (fh);
		if (data_type == DOUBLE_TYPE) {
			Type (DB_DOUBLE);
		} else if (data_type == FLOAT_TYPE) {
			Type (DB_FLOAT);
		} else if (data_type == SHORT_TYPE) {
			Type (DB_SHORT);
		} else {
			Type (DB_INTEGER);
		}
		Tables (MATRIX_GetNCores (fh));

		Integers ids;
		ids.assign (Num_Org (), 0);

		MATRIX_GetIDs(fh, MATRIX_ROW, (long *) &(ids [0]));

		for (i=0; i < Num_Org (); i++) {
			Add_Org (ids [i]);
		}
		ids.assign (Num_Des (), 0);

		MATRIX_GetIDs(fh, MATRIX_COL, (long *) &(ids [0]));

		for (i=0; i < Num_Des (); i++) {
			Add_Des (ids [i]);
		}
	}
	return (true);
}
Example #7
0
bool TPPlus_Matrix::Db_Open (string filename)
{
	int i, type;
    char *license = 0;

	if (!Load_DLL ()) return (Status (NO_TPPLUS));
	
	Set_Field_Numbers ();

	if (File_Access () == CREATE) {
		int len;
		unsigned char *header;
		Db_Field *fld_ptr;

		if (Num_Des () == 0 || Tables () == 0) return (false);

		if (Dbase_Format () == TRANPLAN) {
			type = TPLAN;
		} else {
			type = TPP;
		}
		TppMatMatSet (&fh, type, (char *) filename.c_str (), Num_Des (), Tables ());

		header = fh->Mnames;

		for (i=0; i < Tables (); i++) {
			fld_ptr = Table_Field (i);
			if (fld_ptr->Decimal () == 0) {
				fh->Mspecs [i] = 'D';
			} else {
				fh->Mspecs [i] = (unsigned char) fld_ptr->Decimal ();
			}
			len = (int) fld_ptr->Name ().length () + 1;
			memcpy (header, fld_ptr->Name ().c_str (), len);
			header += len;
		}
		if ((i = TppMatOpenOP (fh, (char *) File_ID ().c_str (), (char *) exe->Program (), 0, license, CUBE)) <= 0) {
			if (i < -1) {
				return (Status (TPPLUS_LICENSE));
			} else {
				return (false);
			}
		}
		TppMatMatResize (&fh);
	} else {
		if (FileInquire ((char *) filename.c_str (), &fh) <= 0) return (false);

		if ((i = TppMatOpenIP (fh, license, CUBE)) <= 0) {
			if (i < -1) {
				return (Status (TPPLUS_LICENSE));
			} else {
				return (false);
			}
		}
		Num_Org (fh->zones);
		Num_Des (fh->zones);
		Tables (fh->mats);
	}

	for (i=1; i <= Num_Des (); i++) {
		Add_Org (i);
		Add_Des (i);
	}
	fh->buffer = (void *) new char [fh->bufReq];

	return (true);
}