Skip to content

Commit 3caf111

Browse files
committed
Add languageStandard to target compileGroups
1 parent fc02aa8 commit 3caf111

File tree

1 file changed

+28
-3
lines changed
  • cmake_file_api/kinds/codemodel/target

1 file changed

+28
-3
lines changed

cmake_file_api/kinds/codemodel/target/v2.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,29 @@ def __repr__(self) -> str:
255255
)
256256

257257

258+
class TargetLanguageStandard:
259+
__slots__ = ("backtraces", "standard")
260+
261+
def __init__(self, standard: str, backtraces: Optional[list[BacktraceNode]]):
262+
self.standard = standard
263+
self.backtraces = backtraces
264+
265+
@classmethod
266+
def from_dict(cls, dikt: dict[str, Any], backtraceGraph: BacktraceGraph) -> "TargetLanguageStandard":
267+
standard = dikt["standard"]
268+
backtraces = None
269+
if "backtraces" in dikt:
270+
backtraces = [backtraceGraph.nodes[backtrace] for backtrace in dikt["backtraces"]]
271+
return cls(standard, backtraces)
272+
273+
def __repr__(self) -> str:
274+
return "{}(standard={}, backtraces={})".format(
275+
type(self).__name__,
276+
self.standard,
277+
self.backtraces,
278+
)
279+
280+
258281
class TargetCompileGroupInclude:
259282
__slots__ = ("path", "isSystem", "backtrace")
260283

@@ -328,14 +351,15 @@ def __repr__(self) -> str:
328351

329352

330353
class TargetCompileGroup:
331-
__slots__ = ("sources", "language", "compileCommandFragments", "includes", "precompileHeaders", "defines", "sysroot")
354+
__slots__ = ("sources", "language", "languageStandard", "compileCommandFragments", "includes", "precompileHeaders", "defines", "sysroot")
332355

333-
def __init__(self, sources: list["TargetSource"], language: str,
356+
def __init__(self, sources: list["TargetSource"], language: str, languageStandard: Optional[TargetLanguageStandard],
334357
compileCommandFragments: list[TargetCompileFragment], includes: list[TargetCompileGroupInclude],
335358
precompileHeaders: list[TargetCompileGroupPCH], defines: list[TargetCompileGroupDefine],
336359
sysroot: Optional[Path]):
337360
self.sources = sources
338361
self.language = language
362+
self.languageStandard = languageStandard
339363
self.compileCommandFragments = compileCommandFragments
340364
self.includes = includes
341365
self.precompileHeaders = precompileHeaders
@@ -351,7 +375,8 @@ def from_dict(cls, dikt: dict[str, Any], target_sources: list["TargetSource"], b
351375
defines = list(TargetCompileGroupDefine.from_dict(tcdef, backtraceGraph) for tcdef in dikt.get("defines", ()))
352376
sysroot = Path(dikt["sysroot"]["path"]) if "sysroot" in dikt and "path" in dikt["sysroot"] else None
353377
sources = list(target_sources[tsi] for tsi in dikt["sourceIndexes"])
354-
return cls(sources, language, compileCommandFragments, includes, precompileHeaders, defines, sysroot)
378+
languageStandard = TargetLanguageStandard.from_dict(dikt.get("languageStandard", {}), backtraceGraph) if "languageStandard" in dikt else None
379+
return cls(sources, language, languageStandard, compileCommandFragments, includes, precompileHeaders, defines, sysroot)
355380

356381
def __repr__(self) -> str:
357382
return "{}(sources={}, language='{}', compileCommandFragments={}, #includes={}, #precompileHeaders={}, #defines={}, sysroot={})".format(

0 commit comments

Comments
 (0)