private ExternalProcedure LookupProcedure(string moduleName, string importName, IPlatform platform) { if (!string.IsNullOrEmpty(moduleName)) { foreach (var program in project.Programs) { if (program.EnvironmentMetadata.Modules.TryGetValue(moduleName, out var mod) && mod.ServicesByName.TryGetValue(importName, out var svc)) { return(new ExternalProcedure(svc.Name, svc.Signature, svc.Characteristics)); } } } foreach (var program in project.Programs) { if (program.EnvironmentMetadata.Signatures.TryGetValue(importName, out var sig)) { var chr = platform.LookupCharacteristicsByName(importName); if (chr != null) { return(new ExternalProcedure(importName, sig, chr)); } else { return(new ExternalProcedure(importName, sig)); } } } return(platform.LookupProcedureByName(moduleName, importName)); }
public ExternalProcedure ResolveProcedure(string moduleName, string importName, IPlatform platform) { if (!string.IsNullOrEmpty(moduleName)) { foreach (var program in project.Programs) { ModuleDescriptor mod; if (!program.EnvironmentMetadata.Modules.TryGetValue(moduleName, out mod)) continue; SystemService svc; if (mod.ServicesByName.TryGetValue(importName, out svc)) { return new ExternalProcedure(svc.Name, svc.Signature, svc.Characteristics); } } } foreach (var program in project.Programs) { FunctionType sig; if (program.EnvironmentMetadata.Signatures.TryGetValue(importName, out sig)) { var chr = platform.LookupCharacteristicsByName(importName); if (chr != null) return new ExternalProcedure(importName, sig, chr); else return new ExternalProcedure(importName, sig); } } return platform.LookupProcedureByName(moduleName, importName); }
public ExternalProcedure ResolveProcedure(string moduleName, string importName, IPlatform platform) { if (!string.IsNullOrEmpty(moduleName)) { foreach (var program in project.Programs) { ModuleDescriptor mod; if (!program.EnvironmentMetadata.Modules.TryGetValue(moduleName, out mod)) { continue; } SystemService svc; if (mod.ServicesByName.TryGetValue(importName, out svc)) { return(new ExternalProcedure(svc.Name, svc.Signature, svc.Characteristics)); } } } foreach (var program in project.Programs) { FunctionType sig; if (program.EnvironmentMetadata.Signatures.TryGetValue(importName, out sig)) { var chr = platform.LookupCharacteristicsByName(importName); if (chr != null) { return(new ExternalProcedure(importName, sig, chr)); } else { return(new ExternalProcedure(importName, sig)); } } } return(platform.LookupProcedureByName(moduleName, importName)); }