コード例 #1
0
        public override ExternalProcedure ResolveImportedProcedure(
            IImportResolver resolver,
            Platform platform,
            AddressContext ctx)
        {
            var ep = resolver.ResolveProcedure(ModuleName, ImportName, platform);

            if (ep != null)
            {
                return(ep);
            }
            // Can we guess at the signature?
            var sig = platform.SignatureFromName(ImportName);

            if (sig != null)
            {
                ep = new ExternalProcedure(ImportName, sig);   //$BUGBUG: mangled name!
            }
            else
            {
                ctx.Warn("Unable to resolve imported reference {0}.", this);
                return(new ExternalProcedure(this.ToString(), null));
            }
            return(ep);
        }
コード例 #2
0
        public override Identifier ResolveImportedGlobal(IImportResolver importResolver, IPlatform platform, AddressContext ctx)
        {
            ctx.Warn("Ordinal global imports not supported. Please report this message to the Reko maintainers (https://github.com/uxmal/reko).");
            var id = importResolver.ResolveGlobal(ModuleName, Ordinal, platform);

            return(null);
        }
コード例 #3
0
ファイル: ImportReference.cs プロジェクト: erenes/reko
        public override ExternalProcedure ResolveImportedProcedure(
            IDynamicLinker resolver,
            IPlatform platform,
            AddressContext ctx)
        {
            var ep = resolver.ResolveProcedure(ModuleName, ImportName, platform);

            if (ep != null)
            {
                if (!ep.Signature.ParametersValid)
                {
                    ctx.Warn("Unable to guess parameters of {0}.", this);
                }
                return(ep);
            }
            ctx.Warn("Unable to resolve imported reference {0}.", this);
            return(new ExternalProcedure(this.ToString(), new FunctionType()));
        }
コード例 #4
0
ファイル: ImportReference.cs プロジェクト: erenes/reko
        public override ExternalProcedure ResolveImportedProcedure(IDynamicLinker resolver, IPlatform platform, AddressContext ctx)
        {
            var ep = resolver.ResolveProcedure(ModuleName, Ordinal, platform);

            if (ep != null)
            {
                return(ep);
            }
            ctx.Warn("Unable to resolve imported reference {0}.", this);
            return(new ExternalProcedure(this.ToString(), new FunctionType()));
        }
コード例 #5
0
ファイル: ImportReference.cs プロジェクト: erenes/reko
        public override Expression ResolveImport(IDynamicLinker dynamicLinker, IPlatform platform, AddressContext ctx)
        {
            var imp = dynamicLinker.ResolveImport(ModuleName, Ordinal, platform);

            if (imp != null)
            {
                return(imp);
            }
            ctx.Warn("Unable to resolve imported reference {0}.", this);
            return(null);
        }
コード例 #6
0
ファイル: ImportReference.cs プロジェクト: relaxar/reko
 public override ExternalProcedure ResolveImportedProcedure(
     IImportResolver resolver, 
     IPlatform platform, 
     AddressContext ctx)
 {
     var ep = resolver.ResolveProcedure(ModuleName, ImportName, platform);
     if (ep != null)
         return ep;
     // Can we guess at the signature?
     ep = platform.SignatureFromName(ImportName);
     if (ep != null)
         return ep;
     
     ctx.Warn("Unable to resolve imported reference {0}.", this);
     return new ExternalProcedure(this.ToString(), null);
 }
コード例 #7
0
ファイル: ImportReference.cs プロジェクト: relaxar/reko
 public override ExternalProcedure ResolveImportedProcedure(IImportResolver resolver, IPlatform platform, AddressContext ctx)
 {
     var ep = resolver.ResolveProcedure(ModuleName, Ordinal, platform);
     if (ep != null)
         return ep;
     ctx.Warn("Unable to resolve imported reference {0}.", this);
     return new ExternalProcedure(this.ToString(), null);
 }
コード例 #8
0
ファイル: ImportReference.cs プロジェクト: relaxar/reko
 public override Identifier ResolveImportedGlobal(IImportResolver importResolver, IPlatform platform, AddressContext ctx)
 {
     ctx.Warn("Ordinal global imports not supported. Please report this message to the Reko maintainers (https://github.com/uxmal/reko).");
     return null;
 }