Beispiel #1
0
 /// <summary>
 /// Serialize the WrappedObject to the specified <see cref="FieldTrip.Buffer.ByteBuffer"/>.
 /// </summary>
 /// <param name="buf">The buffer to serialize to.</param>
 public void Serialize(ByteBuffer buf)
 {
     switch (Type) {
         case DataType.CHAR:
             buf.PutString(Array.ToString());
             break;
         case DataType.UINT8:
         case DataType.INT8:
             buf.Put((byte[])Array);
             break;
         case DataType.UINT16:
         case DataType.INT16:
             buf.AsShortBuffer().Put((short[])Array);
             break;
         case DataType.UINT32:
         case DataType.INT32:
             buf.AsIntBuffer().Put((int[])Array);
             break;
         case DataType.UINT64:
         case DataType.INT64:
             buf.AsLongBuffer().Put((long[])Array);
             break;
         case DataType.FLOAT32:
             buf.AsFloatBuffer().Put((float[])Array);
             break;
         case DataType.FLOAT64:
             buf.AsDoubleBuffer().Put((double[])Array);
             break;
     }
 }
Beispiel #2
0
 /// <summary>
 /// Serializes the Header to the specified buffer.
 /// </summary>
 /// <param name="buf">The buffer to write the serialized header to.</param>
 public void Serialize(ByteBuffer buf)
 {
     buf.PutInt(NumChans);
     buf.PutInt(NumSamples);
     buf.PutInt(NumEvents);
     buf.PutFloat(FSample);
     buf.PutInt(DataType);
     if (ChannelNameSize <= NumChans) {
         // channel names are all empty or array length does not match
         buf.PutInt(0);
     } else {
         buf.PutInt(8 + ChannelNameSize);	// 8 bytes for chunk def
         buf.PutInt(CHUNK_CHANNEL_NAMES);
         buf.PutInt(ChannelNameSize);
         for (int i = 0; i < NumChans; i++) {
             if (Labels[i] != null)
                 buf.PutString(Labels[i]);
             buf.PutByte((byte)0);
         }
     }
 }