mirror of
https://github.com/muerwre/orchidmap-front.git
synced 2025-04-25 02:56:41 +07:00
osrm startup helpers added
This commit is contained in:
parent
d9f83425f6
commit
eb091cc1a4
14 changed files with 1928 additions and 0 deletions
139
osrm/lib/profile_debugger.lua
Normal file
139
osrm/lib/profile_debugger.lua
Normal file
|
@ -0,0 +1,139 @@
|
|||
-- Enable calling our lua profile code directly from the lua command line,
|
||||
-- which makes it easier to debug.
|
||||
-- We simulate the normal C++ environment by defining the required globals and functions.
|
||||
|
||||
-- See debug_example.lua for an example of how to require and use this file.
|
||||
|
||||
-- for more convenient printing of tables
|
||||
local pprint = require('lib/pprint')
|
||||
|
||||
|
||||
-- globals that are normally set from C++
|
||||
|
||||
-- profiles code modifies this table
|
||||
properties = {}
|
||||
|
||||
-- should match values defined in include/extractor/guidance/road_classification.hpp
|
||||
road_priority_class = {
|
||||
motorway = 0,
|
||||
trunk = 2,
|
||||
primary = 4,
|
||||
secondary = 6,
|
||||
tertiary = 8,
|
||||
main_residential = 10,
|
||||
side_residential = 11,
|
||||
link_road = 14,
|
||||
bike_path = 16,
|
||||
foot_path = 18,
|
||||
connectivity = 31,
|
||||
}
|
||||
|
||||
-- should match values defined in include/extractor/travel_mode.hpp
|
||||
mode = {
|
||||
inaccessible = 0,
|
||||
driving = 1,
|
||||
cycling = 2,
|
||||
walking = 3,
|
||||
ferry = 4,
|
||||
train = 5,
|
||||
pushing_bike = 6,
|
||||
}
|
||||
|
||||
-- Mock C++ helper functions which are called from LUA.
|
||||
-- TODO
|
||||
-- Debugging LUA code that uses these will not work correctly
|
||||
-- unless we reimplement the methods in LUA.
|
||||
|
||||
function durationIsValid(str)
|
||||
return true
|
||||
end
|
||||
|
||||
function parseDuration(str)
|
||||
return 1
|
||||
end
|
||||
|
||||
function canonicalizeStringList(str)
|
||||
return str
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- debug helper
|
||||
local Debug = {}
|
||||
|
||||
-- helpers for sorting associative array
|
||||
function Debug.get_keys_sorted_by_value(tbl, sortFunction)
|
||||
local keys = {}
|
||||
for key in pairs(tbl) do
|
||||
table.insert(keys, key)
|
||||
end
|
||||
|
||||
table.sort(keys, function(a, b)
|
||||
return sortFunction(tbl[a], tbl[b])
|
||||
end)
|
||||
|
||||
return keys
|
||||
end
|
||||
|
||||
-- helper for printing sorted array
|
||||
function Debug.print_sorted(sorted,associative)
|
||||
for _, key in ipairs(sorted) do
|
||||
print(associative[key], key)
|
||||
end
|
||||
end
|
||||
|
||||
function Debug.report_tag_fetches()
|
||||
print("Tag fetches:")
|
||||
sorted_counts = Debug.get_keys_sorted_by_value(Debug.tags.counts, function(a, b) return a > b end)
|
||||
Debug.print_sorted(sorted_counts, Debug.tags.counts)
|
||||
print(Debug.tags.total, 'total')
|
||||
end
|
||||
|
||||
function Debug.load_profile(profile)
|
||||
require(profile)
|
||||
end
|
||||
|
||||
function Debug.reset_tag_fetch_counts()
|
||||
Debug.tags = {
|
||||
total = 0,
|
||||
counts = {}
|
||||
}
|
||||
end
|
||||
|
||||
function Debug.register_tag_fetch(k)
|
||||
if Debug.tags.total then
|
||||
Debug.tags.total = Debug.tags.total + 1
|
||||
else
|
||||
Debug['tags']['total'] = 1
|
||||
end
|
||||
|
||||
if Debug['tags']['counts'][k] then
|
||||
Debug['tags']['counts'][k] = Debug['tags']['counts'][k] + 1
|
||||
else
|
||||
Debug['tags']['counts'][k] = 1
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function Debug.way_function(way,result)
|
||||
|
||||
-- setup result table
|
||||
result.road_classification = {}
|
||||
result.forward_speed = -1
|
||||
result.backward_speed = -1
|
||||
result.duration = 0
|
||||
|
||||
-- intercept tag function normally provided via C++
|
||||
function way:get_value_by_key(k)
|
||||
Debug.register_tag_fetch(k)
|
||||
return self[k]
|
||||
end
|
||||
|
||||
-- reset tag counts
|
||||
Debug:reset_tag_fetch_counts()
|
||||
|
||||
-- call the global method defined in the profile file
|
||||
way_function(way,result)
|
||||
end
|
||||
|
||||
return Debug
|
Loading…
Add table
Add a link
Reference in a new issue