build/generic_platform: allows to dynamically extends connectors dictionary

This commit is contained in:
Gwenhael Goavec-Merou 2022-08-29 13:37:48 +02:00
parent 50a5e137ff
commit d3368d7fab
1 changed files with 12 additions and 0 deletions

View File

@ -132,6 +132,12 @@ def _resource_type(resource):
class ConnectorManager: class ConnectorManager:
def __init__(self, connectors): def __init__(self, connectors):
self.connector_table = dict() self.connector_table = dict()
self.add_connector(connectors)
def add_connector(self, connectors):
if isinstance(connectors, tuple):
connectors = [connectors]
for connector in connectors: for connector in connectors:
cit = iter(connector) cit = iter(connector)
conn_name = next(cit) conn_name = next(cit)
@ -193,6 +199,9 @@ class ConstraintManager:
def add_extension(self, io): def add_extension(self, io):
self.available.extend(io) self.available.extend(io)
def add_connector(self, connectors):
self.connector_manager.add_connector(connectors)
def request(self, name, number=None, loose=False): def request(self, name, number=None, loose=False):
resource = _lookup(self.available, name, number, loose) resource = _lookup(self.available, name, number, loose)
if resource is None: if resource is None:
@ -356,6 +365,9 @@ class GenericPlatform:
def add_extension(self, *args, **kwargs): def add_extension(self, *args, **kwargs):
return self.constraint_manager.add_extension(*args, **kwargs) return self.constraint_manager.add_extension(*args, **kwargs)
def add_connector(self, *args, **kwargs):
self.constraint_manager.add_connector(*args, **kwargs)
def finalize(self, fragment, *args, **kwargs): def finalize(self, fragment, *args, **kwargs):
if self.finalized: if self.finalized:
raise ConstraintError("Already finalized") raise ConstraintError("Already finalized")