/// <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; } }
/// <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); } } }