/// <summary cref="IIntrinsicImplementationTransformer{TFirst, TSecond}.Transform(TFirst)"/> public IntrinsicMapping <TDelegate> Transform(IntrinsicImplementationManager.ImplementationEntry entry) { if (entry != null && CheckImplementations(Backend, entry, out var mainImplementation)) { if (!mappings.TryGetValue(mainImplementation, out var mapping)) { mapping = mainImplementation.ResolveMapping <TDelegate>(); mappings.Add(mainImplementation, mapping); } return(mapping); } return(null); }
private static bool CheckImplementations( Backend backend, IntrinsicImplementationManager.ImplementationEntry implementations, out IntrinsicImplementation mainImplementation) { mainImplementation = null; foreach (var implementation in implementations) { if (implementation.CanHandleBackend(backend)) { mainImplementation = implementation; return(true); } } return(false); }