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); } } }
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 ()); } } }
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 ()); } } }
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 ()); } } }
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 ()); } } }
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 ()); } } }
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 ()); } } }
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 ()); } } }
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 ()); } } }
void Mem_Error (string type) { Mem_Error (type.c_str ()); }