Coverage for src/pystencilssfg/lang/headers.py: 100%
23 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-04 07:16 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-04 07:16 +0000
1from __future__ import annotations
2from dataclasses import dataclass
5@dataclass(frozen=True)
6class HeaderFile:
7 """Represents a C++ header file."""
9 filepath: str
10 """(Relative) path of this header file"""
12 system_header: bool = False
13 """Whether or not this is a system header."""
15 def __str__(self) -> str:
16 if self.system_header:
17 return f"<{self.filepath}>"
18 else:
19 return self.filepath
21 @staticmethod
22 def parse(header: str | HeaderFile):
23 if isinstance(header, HeaderFile):
24 return header
26 system_header = False
27 if header.startswith('"') and header.endswith('"'):
28 header = header[1:-1]
30 if header.startswith("<") and header.endswith(">"):
31 header = header[1:-1]
32 system_header = True
34 return HeaderFile(header, system_header=system_header)