MCPcopy Create free account
hub / github.com/comaps/comaps / MwmPython

Class MwmPython

tools/python/mwm/mwm_python.py:20–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18
19
20class MwmPython(mi.Mwm):
21 def __init__(self, filename: str, parse: bool = False):
22 super().__init__(filename)
23
24 self.f = open(filename, "rb")
25 self.file = mmap.mmap(self.f.fileno(), 0, access=mmap.ACCESS_READ)
26
27 self.tags = self._read_sections_info()
28
29 self.seek_tag("header")
30 coord_bits = read_varuint(self.file)
31 self.coord_size = (1 << coord_bits) - 1
32 self.base_point = mwm_bitwise_split(read_varuint(self.file))
33 self.bounds_ = read_bounds(self.file, self.coord_size)
34 self.scales = read_uint_array(self.file)
35 self.langs = [mi.LANGS[code] for code in read_uint_array(self.file)]
36 self.map_type = mi.MapType(read_varint(self.file))
37
38 self.version_ = self._read_version()
39 self.metadata_offsets = self._read_metadata_offsets()
40
41 def version(self) -> mi.MwmVersion:
42 return self.version_
43
44 def type(self) -> mi.MapType:
45 return self.map_type
46
47 def bounds(self) -> mi.Rect:
48 return self.bounds_
49
50 def sections_info(self) -> Dict[str, mi.SectionInfo]:
51 return self.tags
52
53 def __len__(self) -> int:
54 old_pos = self.file.tell()
55 pos, end = self._get_features_offset_and_size()
56 size = 0
57 while pos < end:
58 self.file.seek(pos)
59 feature_size = read_varuint(self.file)
60 pos = self.file.tell() + feature_size
61 size += 1
62 self.file.seek(old_pos)
63 return size
64
65 def __iter__(self) -> Iterable:
66 return MwmPythonIter(self)
67
68 def get_tag(self, name: str) -> mi.SectionInfo:
69 return self.tags[name]
70
71 def seek_tag(self, name: str):
72 self.file.seek(self.tags[name].offset)
73
74 def has_tag(self, name: str) -> bool:
75 return name in self.tags and self.tags[name].size > 0
76
77 def _read_sections_info(self) -> Dict[str, mi.SectionInfo]:

Callers 1

get_region_infoFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected