Match the requested symbol reverse piecewise (split on ::) against the tag names to ensure they match exactly (modulo ambiguity)
So, if in the mapping there is PolyVox::Volume::FloatVolume and PolyVox::Volume they would be split into:
Now, to disambiguate between PolyVox::Array<1,ElementType>::operator and PolyVox::Array::operator matching operator, we will ignore templated (as in C++ templates) tag names by removing names containing <
Return a mapping to a single URL in the form. This is needed since mapping entries for functions are more complicated due to function overriding.
If the mapping to be returned is not a function, this will simply return the mapping entry intact. If the entry is a function it will attempt to get the right version based on the function signature.
should be a single entry from the large mapping file corresponding to a single symbol. If the symbol is a function, then mappingentry['arglist'] will be a dictionary mapping normalised signatures to URLs
the normalised form of the arglist that the user has requested. This can be empty in which case the function will return just the first element of mappingentry['arglist']. This parameter is ignored if mappingentry['kind']!='function'