Beispiel #1
0
 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();
 }
Beispiel #2
0
 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;
     }
 }
Beispiel #3
0
 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();
 }
Beispiel #4
0
 private void interrogate()
 {
     m_name = Utilities.getString(m_native.Name());
     m_descr = Utilities.getString(m_native.Description());
     m_fingerprint = decodeFingerprint(m_native.Fingerprint());
 }
Beispiel #5
0
 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;
 }
Beispiel #6
0
 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;
 }