public signals.IOutEndpoint OutputEP(signals.IBlock blk) { signals.Fingerprint print = blk.Fingerprint; if (this.epString == null) { if (epIdx < print.outputs.Length) { return(blk.Outgoing[epIdx]); } } else { if (print.inputNames != null) { for (int idx = 0; idx < print.outputs.Length; idx++) { if (print.outputNames[idx] != null && String.Compare(print.outputNames[idx], epString, true) == 0) { return(blk.Outgoing[idx]); } } } } throw new IndexOutOfRangeException(); }
public ModuleKey(signals.IBlockDriver blk) { name = blk.Name; signals.Fingerprint fgr = blk.Fingerprint; if (fgr == null) { numIn = numOut = -1; } else { numIn = fgr.inputs.Length; numOut = fgr.outputs.Length; } }
public signals.EType OutputType(signals.Fingerprint print) { if (this.epString == null) { if (epIdx < print.outputs.Length) { return(print.outputs[epIdx]); } } else { if (print.outputNames != null) { for (int idx = 0; idx < print.outputs.Length; idx++) { if (print.outputNames[idx] != null && String.Compare(print.outputNames[idx], epString, true) == 0) { return(print.outputs[idx]); } } } } throw new IndexOutOfRangeException(); }
private void interrogate() { m_name = Utilities.getString(m_native.Name()); m_descr = Utilities.getString(m_native.Description()); m_fingerprint = decodeFingerprint(m_native.Fingerprint()); }
private static signals.Fingerprint decodeFingerprint(IntPtr fgr) { if (fgr == IntPtr.Zero) return null; signals.Fingerprint val = new signals.Fingerprint(); val.inputs = new signals.EType[1]; val.inputs[0] = (signals.EType)(int)Marshal.ReadByte(fgr, 0); val.outputs = new signals.EType[1]; val.outputs[0] = (signals.EType)(int)Marshal.ReadByte(fgr, 1); return val; }
private static unsafe signals.Fingerprint decodeFingerprint(IntPtr fgr) { if (fgr == IntPtr.Zero) return null; signals.Fingerprint val = new signals.Fingerprint(); byte* ptr = (byte*)fgr.ToPointer(); int len = *ptr++; val.inputs = new signals.EType[len]; for (int idx = 0; idx < len; idx++) val.inputs[idx] = (signals.EType)(int) *ptr++; len = *ptr++; val.outputs = new signals.EType[len]; for (int idx = 0; idx < len; idx++) val.outputs[idx] = (signals.EType)(int) *ptr++; return val; }