9 #ifndef CIRCT_DIALECT_ESI_ESISERVICES_H
10 #define CIRCT_DIALECT_ESI_ESISERVICES_H
15 #include "mlir/Pass/Pass.h"
28 ServiceImplementReqOp, ServiceDeclOpInterface, ServiceImplRecordOp)>;
46 LogicalResult
generate(ServiceImplementReqOp, ServiceDeclOpInterface);
56 std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
Class which "dispatches" a service implementation request to its specified generator.
ServiceGeneratorDispatcher(DenseMap< StringRef, ServiceGeneratorFunc > genLookupTable, bool failIfNotFound)
void registerGenerator(StringRef implType, ServiceGeneratorFunc gen)
Add a generator to this registry.
LogicalResult generate(ServiceImplementReqOp, ServiceDeclOpInterface)
Generate a service implementation if a generator exists in this registry.
static ServiceGeneratorDispatcher & globalDispatcher()
Get the global dispatcher.
DenseMap< StringRef, ServiceGeneratorFunc > genLookupTable
ServiceGeneratorDispatcher(const ServiceGeneratorDispatcher &that)=default
std::function< LogicalResult(ServiceImplementReqOp, ServiceDeclOpInterface, ServiceImplRecordOp)> ServiceGeneratorFunc
std::unique_ptr< OperationPass< ModuleOp > > createESIConnectServicesPass()
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.