|
|
@ -1,5 +1,5 @@ |
|
|
|
# functions common among cars |
|
|
|
# functions common among cars |
|
|
|
from collections import namedtuple |
|
|
|
from collections import defaultdict, namedtuple |
|
|
|
from dataclasses import dataclass |
|
|
|
from dataclasses import dataclass |
|
|
|
from enum import IntFlag, ReprEnum |
|
|
|
from enum import IntFlag, ReprEnum |
|
|
|
from dataclasses import replace |
|
|
|
from dataclasses import replace |
|
|
@ -301,3 +301,15 @@ class Platforms(str, ReprEnum): |
|
|
|
@classmethod |
|
|
|
@classmethod |
|
|
|
def with_flags(cls, flags: IntFlag) -> set['Platforms']: |
|
|
|
def with_flags(cls, flags: IntFlag) -> set['Platforms']: |
|
|
|
return {p for p in cls if p.config.flags & flags} |
|
|
|
return {p for p in cls if p.config.flags & flags} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
|
|
|
|
def print_debug(cls, flags): |
|
|
|
|
|
|
|
platforms_with_flag = defaultdict(list) |
|
|
|
|
|
|
|
for flag in flags: |
|
|
|
|
|
|
|
for platform in cls: |
|
|
|
|
|
|
|
if platform.config.flags & flag: |
|
|
|
|
|
|
|
assert flag.name is not None |
|
|
|
|
|
|
|
platforms_with_flag[flag.name].append(platform) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for flag, platforms in platforms_with_flag.items(): |
|
|
|
|
|
|
|
print(f"{flag:20s}: {', '.join(p.name for p in platforms)}") |
|
|
|