int Data_Service::Put_Connect_Data (Connect_File &file, Connect_Data &data) { Dir_Data *dir_ptr; Link_Data *link_ptr; dir_ptr = &dir_array [data.Dir_Index ()]; link_ptr = &link_array [dir_ptr->Link ()]; file.Link (link_ptr->Link ()); file.Dir (dir_ptr->Dir ()); file.Lanes (Make_Lane_Range (dir_ptr, data.Low_Lane (), data.High_Lane ())); dir_ptr = &dir_array [data.To_Index ()]; link_ptr = &link_array [dir_ptr->Link ()]; file.To_Link (link_ptr->Link ()); file.To_Lanes (Make_Lane_Range (dir_ptr, data.To_Low_Lane (), data.To_High_Lane ())); file.Type (data.Type ()); file.Penalty (data.Penalty ()); file.Speed (UnRound (data.Speed ())); file.Capacity (data.Capacity ()); file.Notes (data.Notes ()); if (!file.Write ()) { Error (String ("Writing %s") % file.File_Type ()); } return (1); }
int Data_Service::Put_Lane_Use_Data (Lane_Use_File &file, Lane_Use_Data &data) { double rate, toll; Dir_Data *dir_ptr; Link_Data *link_ptr; Veh_Type_Data *veh_type_ptr; dir_ptr = &dir_array [data.Dir_Index ()]; link_ptr = &link_array [dir_ptr->Link ()]; file.Link (link_ptr->Link ()); file.Dir (dir_ptr->Dir ()); file.Lanes (Make_Lane_Range (dir_ptr, data.Low_Lane (), data.High_Lane ())); file.Use (data.Use ()); file.Type (data.Type ()); if (data.Min_Veh_Type () < 0) { file.Min_Veh_Type (0); } else if (veh_type_array.size () > 0) { veh_type_ptr = &veh_type_array [data.Min_Veh_Type ()]; file.Min_Veh_Type (veh_type_ptr->Type ()); } else { file.Min_Veh_Type (data.Min_Veh_Type ()); } if (data.Max_Veh_Type () < 0) { file.Max_Veh_Type (0); } else if (veh_type_array.size () > 0) { veh_type_ptr = &veh_type_array [data.Max_Veh_Type ()]; file.Max_Veh_Type (veh_type_ptr->Type ()); } else { file.Max_Veh_Type (data.Max_Veh_Type ()); } file.Min_Traveler (MAX (data.Min_Traveler (), 0)); file.Max_Traveler (MAX (data.Max_Traveler (), 0)); file.Start (data.Start ()); file.End (data.End ()); file.Length (UnRound (data.Length ())); file.Offset (UnRound (data.Offset ())); toll = UnRound (data.Toll ()); rate = UnRound (data.Toll_Rate ()); if (rate > 0) { if (Metric_Flag ()) { rate /= 1000.0; } else { rate /= MILETOFEET; } toll -= DTOI (rate * link_ptr->Length ()); } file.Toll (DTOI (toll)); file.Toll_Rate (rate); file.Min_Delay (UnRound (data.Min_Delay ())); file.Max_Delay (UnRound (data.Max_Delay ())); file.Speed (UnRound (data.Speed ())); file.Speed_Factor (UnRound (data.Spd_Fac ()) / 10.0); file.Capacity (data.Capacity ()); file.Cap_Factor (UnRound (data.Cap_Fac ()) / 10.0); file.Notes (data.Notes ()); if (!file.Write ()) { Error (String ("Writing %s") % file.File_Type ()); } return (1); }