-module(akh_source_map). -include("akh_source_map.hrl"). -export([ empty/0, insert/3, get_loc/2 ]). -spec empty() -> source_map(). empty() -> gb_trees:empty(). -spec insert(Offset :: non_neg_integer(), Line :: pos_integer(), source_map()) -> source_map(). insert(Offset, Line, SourceMap) -> gb_trees:insert(Offset, Line, SourceMap). -spec get_loc(Offset :: non_neg_integer(), source_map()) -> #loc{}. get_loc(Offset, SourceMap) -> case gb_trees:smaller(Offset, SourceMap) of {Start, Line} -> #loc{line = Line, col = Offset - Start - 1}; none -> #loc{line = 0, col = Offset} end.