Esempio n. 1
0
void Data_Service::Initialize_Lane_Uses (Lane_Use_File &file)
{
	Required_File_Check (file, LINK);
	Required_File_Check (file, VEHICLE_TYPE);

	if (file.Version () <= 40) {
		Required_File_Check (file, POCKET);
	}
	int percent = System_Data_Reserve (LANE_USE);

	if (lane_use_array.capacity () == 0 && percent > 0) {
		int num = file.Num_Records ();

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		} else if (file.Version () <= 40) {
			num = (int) (num / 1.5);
		}
		if (num > 1) {
			lane_use_array.reserve (num);
			if (num > (int) lane_use_array.capacity ()) Mem_Error (file.File_ID ());
		}
	} else {
		Dir_Itr dir_itr;
		Lane_Use_Itr use_itr;

		for (dir_itr = dir_array.begin (); dir_itr != dir_array.end (); dir_itr++) {
			dir_itr->First_Lane_Use (-1);
		}
		for (use_itr = lane_use_array.begin (); use_itr != lane_use_array.end (); use_itr++) {
			use_itr->Next_Index (-1);
		}
	}
}
Esempio n. 2
0
void Data_Service::Initialize_Events (Event_File &file)
{
	int percent = System_Data_Reserve (EVENT);

	if (event_array.capacity () == 0 && percent > 0) {
		int num = file.Num_Records ();

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		}
		if (num > 1) {
			event_array.reserve (num);
			if (num > (int) event_array.capacity ()) Mem_Error (file.File_ID ());
		}
	}
}
Esempio n. 3
0
void Data_Service::Initialize_Veh_Types (Veh_Type_File &file)
{
	int percent = System_Data_Reserve (VEHICLE_TYPE);

	if (veh_type_array.capacity () == 0 && percent > 0) {
		int num = file.Num_Records ();

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		}
		if (num > 1) {
			veh_type_array.reserve (num);
			if (num > (int) veh_type_array.capacity ()) Mem_Error (file.File_ID ());
		}
	}
}
Esempio n. 4
0
void Data_Service::Initialize_Zones (Zone_File &file)
{
	int percent = System_Data_Reserve (ZONE);

	if (zone_array.capacity () == 0 && percent > 0) {
		int num = file.Num_Records ();

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		}
		if (num > 1) {
			zone_array.reserve (num);
			if (num > (int) zone_array.capacity ()) Mem_Error (file.File_ID ());
		}
	}
}
Esempio n. 5
0
void Data_Service::Initialize_Locations (Location_File &file)
{
	Required_File_Check (file, LINK);
	
	int percent = System_Data_Reserve (LOCATION);

	if (location_array.capacity () == 0 && percent > 0) {
		int num = file.Num_Records ();

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		}
		if (num > 1) {
			location_array.reserve (num);
			if (num > (int) location_array.capacity ()) Mem_Error (file.File_ID ());
		}
	}
}
Esempio n. 6
0
void Data_Service::Initialize_Shapes (Shape_File &file)
{
	int percent = System_Data_Reserve (SHAPE);

	if (shape_array.capacity () == 0 && percent > 0) {
		int num = file.Num_Records ();

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		} else {
			num /= 20;
		}
		if (num > 1) {
			shape_array.reserve (num);
			if (num > (int) shape_array.capacity ()) Mem_Error (file.File_ID ());
		}
	}
}
Esempio n. 7
0
void Data_Service::Initialize_Trips (Trip_File &file)
{
	Required_File_Check (file, LOCATION);
	Required_File_Check (file, VEHICLE_TYPE);

	int percent = System_Data_Reserve (TRIP);

	if (trip_array.capacity () == 0 && percent > 0) {
		int num = file.Estimate_Records ();

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		}
		if (num > 1) {
			trip_array.reserve (num);
			if (num > (int) trip_array.capacity ()) Mem_Error (file.File_ID ());
		}
	}
}
Esempio n. 8
0
void Data_Service::Initialize_Lines (Line_File &file)
{
	Required_File_Check (file, TRANSIT_STOP);
	if (file.Version () > 40) {
		Required_File_Check (file, VEHICLE_TYPE);
	}
	int percent = System_Data_Reserve (TRANSIT_ROUTE);

	if (line_array.capacity () == 0 && percent > 0) {
		int num = file.Num_Records () / 25;

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		}
		if (num > 1) {
			line_array.reserve (num);
			if (num > (int) line_array.capacity ()) Mem_Error (file.File_ID ());
		}
	}
}
Esempio n. 9
0
void Data_Service::Initialize_Connects (Connect_File &file)
{
	Required_File_Check (file, LINK);
	if (file.Version () <= 40) {
		Required_File_Check (file, POCKET);
	}
	int percent = System_Data_Reserve (CONNECTION);

	if (connect_array.capacity () == 0 && percent > 0) {
		int num = file.Num_Records ();

		if (percent != 100) {
			num = (int) ((double) num * percent / 100.0);
		} else if (file.Version () <= 40) {
			num = (int) (num / 2.25);
		}
		if (num > 1) {
			connect_array.reserve (num);
			if (num > (int) connect_array.capacity ()) Mem_Error (file.File_ID ());
		}
	}
}
Esempio n. 10
0
	void    Mem_Error (string type)                         { Mem_Error (type.c_str ()); }