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)); } } if (project.LoadedMetadata.Modules.TryGetValue(moduleName !, out var module) && module.ServicesByName.TryGetValue(importName, out var service)) { return(new ExternalProcedure(service.Name !, service.Signature !, service.Characteristics)); } } foreach (var program in project.Programs) { if (program.EnvironmentMetadata.Signatures.TryGetValue(importName, out var sig)) { var chr = program.LookupCharacteristicsByName(importName); return(new ExternalProcedure(importName, sig, chr)); } } if (project.LoadedMetadata.Signatures.TryGetValue(importName, out var signature)) { return(new ExternalProcedure(importName, signature)); } return(platform.LookupProcedureByName(moduleName, importName)); }
public ExternalProcedure ResolveProcedure(string moduleName, string importName, IPlatform platform) { foreach (var program in project.Programs) { ModuleDescriptor mod; if (!program.Metadata.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) { ProcedureSignature sig; if (program.Metadata.Signatures.TryGetValue(importName, out sig)) { 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) { ProcedureSignature sig; if (program.EnvironmentMetadata.Signatures.TryGetValue(importName, out sig)) { 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); }