Adapts TableParameters and its validation to new API
This commit is contained in:
		
							parent
							
								
									66d241a2d8
								
							
						
					
					
						commit
						d69bad9cb2
					
				| @ -3,6 +3,10 @@ | |||||||
| 
 | 
 | ||||||
| #include "engine/api/base_parameters.hpp" | #include "engine/api/base_parameters.hpp" | ||||||
| 
 | 
 | ||||||
|  | #include <cstddef> | ||||||
|  | 
 | ||||||
|  | #include <algorithm> | ||||||
|  | #include <iterator> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
| namespace osrm | namespace osrm | ||||||
| @ -14,14 +18,40 @@ namespace api | |||||||
| 
 | 
 | ||||||
| struct TableParameters : public BaseParameters | struct TableParameters : public BaseParameters | ||||||
| { | { | ||||||
|     std::vector<bool> is_source; |     std::vector<std::size_t> sources; | ||||||
|     std::vector<bool> is_destination; |     std::vector<std::size_t> destinations; | ||||||
| 
 | 
 | ||||||
|     bool IsValid() const; |     bool IsValid() const | ||||||
|  |     { | ||||||
|  |         if (!BaseParameters::IsValid()) | ||||||
|  |             return false; | ||||||
|  | 
 | ||||||
|  |         // 1/ The user is able to specify duplicates in srcs and dsts, in that case it's her fault
 | ||||||
|  | 
 | ||||||
|  |         // 2/ len(srcs) and len(dsts) smaller or equal to len(locations)
 | ||||||
|  |         if (sources.size() > coordinates.size()) | ||||||
|  |             return false; | ||||||
|  | 
 | ||||||
|  |         if (destinations.size() > coordinates.size()) | ||||||
|  |             return false; | ||||||
|  | 
 | ||||||
|  |         // 3/ 0 <= index < len(locations)
 | ||||||
|  |         const auto is_not_in_range = [](const std::size_t x) | ||||||
|  |         { | ||||||
|  |             return x >= coordinates.size(); | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|  |         if (std::any_of(begin(sources), end(sources), not_in_range)) | ||||||
|  |             return false; | ||||||
|  | 
 | ||||||
|  |         if (std::any_of(begin(destinations), end(destinations), not_in_range)) | ||||||
|  |             return false; | ||||||
|  | 
 | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | }; | ||||||
| } | } | ||||||
| } | } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #endif // ROUTE_PARAMETERS_HPP
 | #endif // ENGINE_API_TABLE_PARAMETERS_HPP
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user