/// <inheritdoc/> public FunctionDefinition ImportFunction(ImportedFunction description, FunctionType signature) { if (moduleImporters.TryGetValue(description.ModuleName, out IImporter importer)) { return(importer.ImportFunction(description, signature)); } else { return(null); } }
/// <inheritdoc/> public FunctionDefinition ImportFunction(ImportedFunction description, FunctionType signature) { if (Module.ExportedFunctions.TryGetValue(description.FieldName, out FunctionDefinition result) && ConstFunctionTypeComparer.Instance.Equals(signature, new FunctionType(result.ParameterTypes, result.ReturnTypes))) { return(result); } else { return(null); } }
/// <inheritdoc/> public FunctionDefinition ImportFunction( ImportedFunction Description, FunctionType Signature) { if (Description.FieldName == "print") { return(new SpecTestPrintFunctionDefinition( Signature.ParameterTypes, Signature.ReturnTypes, PrintSuffix)); } else { return(null); } }
/// <inheritdoc/> public FunctionDefinition ImportFunction( ImportedFunction description, FunctionType signature) { switch (description.FieldName) { case "print": case "print_i32": case "print_i32_f32": case "print_f64_f64": case "print_f32": case "print_f64": return(new SpecTestPrintFunctionDefinition( signature.ParameterTypes, signature.ReturnTypes, PrintSuffix, PrintWriter)); default: return(null); } }
/// <inheritdoc/> public FunctionDefinition ImportFunction(ImportedFunction Description, FunctionType Signature) { return(ImportOrDefault <FunctionDefinition>(Description, funcDefDict)); }