示例#1
0
            public void populateAvail(sharptest.ModLibrary library)
            {
                if (library == null)
                {
                    throw new ArgumentNullException("library");
                }
                if (this.explicitAvail)
                {
                    return;
                }
                availObjects = new List <signals.ICircuitConnectible>();

                switch (this.type)
                {
                case ElementType.Module:
                    List <List <signals.IBlockDriver> > blocks = library.block(this.name);
                    if (blocks != null)
                    {
                        foreach (List <signals.IBlockDriver> variant in blocks)
                        {
                            foreach (signals.IBlockDriver driver in variant)
                            {
                                if (driver.canCreate)
                                {
                                    this.availObjects.Add(driver);
                                }
                                if (driver.canDiscover)
                                {
                                    signals.IBlock[] found = driver.Discover();
                                    foreach (signals.IBlock discBlk in found)
                                    {
                                        if (this.nodeId == null || String.Compare(discBlk.NodeId, this.nodeId, true) == 0)
                                        {
                                            this.availObjects.Add(discBlk);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    break;

                case ElementType.Function:
                case ElementType.FunctionOnIn:
                case ElementType.FunctionOnOut:
                    List <signals.IFunctionSpec> funcs = library.func(this.name);
                    if (funcs != null)
                    {
                        foreach (signals.IFunctionSpec spec in funcs)
                        {
                            this.availObjects.Add(spec);
                        }
                    }
                    break;
                }
            }
示例#2
0
        private static signals.IFunctionSpec findImplicitConversion(sharptest.ModLibrary library, signals.EType inpType, signals.EType outType)
        {
            List <signals.IFunctionSpec> idents = library.func("=");

            if (idents == null)
            {
                return(null);
            }
            foreach (signals.IFunctionSpec avail in idents)
            {
                signals.EType identInput  = avail.Fingerprint.inputs[0];
                signals.EType identOutput = avail.Fingerprint.outputs[0];
                if (inpType == identInput && outType == identOutput)
                {
                    return(avail);
                }
            }
            return(null);
        }