modm_data.header2svd.header
1# Copyright 2022, Niklas Hauser 2# SPDX-License-Identifier: MPL-2.0 3 4import re 5from ..utils import root_path 6from collections import defaultdict 7 8 9class Header: 10 CMSIS_PATH = root_path("ext/cmsis/header/CMSIS/Core/Include") 11 CACHE_HEADER = defaultdict(dict) 12 13 def __init__(self, filename, substitutions=None): 14 self.filename = filename 15 self.substitutions = {r"__(IO|IM|I|O)": ""} 16 if substitutions is not None: 17 self.substitutions.update(substitutions) 18 19 @property 20 def _cache(self): 21 return Header.CACHE_HEADER[self.filename] 22 23 @property 24 def header(self): 25 from CppHeaderParser import CppHeader 26 if "header" not in self._cache: 27 content = self.filename.read_text(encoding="utf-8-sig", errors="replace") 28 for pattern, subs in self.substitutions.items(): 29 content = re.sub(pattern, subs, content, flags=(re.DOTALL | re.MULTILINE)) 30 self._cache["header"] = CppHeader(content, "string") 31 return self._cache["header"]
class
Header:
10class Header: 11 CMSIS_PATH = root_path("ext/cmsis/header/CMSIS/Core/Include") 12 CACHE_HEADER = defaultdict(dict) 13 14 def __init__(self, filename, substitutions=None): 15 self.filename = filename 16 self.substitutions = {r"__(IO|IM|I|O)": ""} 17 if substitutions is not None: 18 self.substitutions.update(substitutions) 19 20 @property 21 def _cache(self): 22 return Header.CACHE_HEADER[self.filename] 23 24 @property 25 def header(self): 26 from CppHeaderParser import CppHeader 27 if "header" not in self._cache: 28 content = self.filename.read_text(encoding="utf-8-sig", errors="replace") 29 for pattern, subs in self.substitutions.items(): 30 content = re.sub(pattern, subs, content, flags=(re.DOTALL | re.MULTILINE)) 31 self._cache["header"] = CppHeader(content, "string") 32 return self._cache["header"]
CMSIS_PATH =
PosixPath('/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/site-packages/ext/cmsis/header/CMSIS/Core/Include')
header
24 @property 25 def header(self): 26 from CppHeaderParser import CppHeader 27 if "header" not in self._cache: 28 content = self.filename.read_text(encoding="utf-8-sig", errors="replace") 29 for pattern, subs in self.substitutions.items(): 30 content = re.sub(pattern, subs, content, flags=(re.DOTALL | re.MULTILINE)) 31 self._cache["header"] = CppHeader(content, "string") 32 return self._cache["header"]