Beispiel #1
0
        /// <summary>
        /// Write simple field with known length.
        /// </summary>
        /// <param name="fieldId">Field ID.</param>
        /// <param name="val">Value.</param>
        /// <param name="handler">Handler.</param>
        /// <param name="len">Length.</param>
        private void WriteSimpleField <T>(int fieldId, T val, PortableSystemTypedWriteDelegate <T> handler, int len)
        {
            CheckNotRaw();

            _stream.WriteInt(fieldId);
            _stream.WriteInt(1 + len); // Additional byte for field type.

            handler(_stream, val);
        }
Beispiel #2
0
 /// <summary>
 /// Write nullable raw field.
 /// </summary>
 /// <param name="val">Value.</param>
 /// <param name="handler">Handler.</param>
 private void WriteSimpleNullableRawField <T>(T val, PortableSystemTypedWriteDelegate <T> handler)
 {
     if (val == null)
     {
         _stream.WriteByte(PortableUtils.HdrNull);
     }
     else
     {
         handler(_stream, val);
     }
 }
Beispiel #3
0
        /// <summary>
        /// Write simple nullable field with known length.
        /// </summary>
        /// <param name="fieldName">Field name.</param>
        /// <param name="typeId">Type ID.</param>
        /// <param name="val">Value.</param>
        /// <param name="handler">Handler.</param>
        /// <param name="len">Length.</param>
        private void WriteSimpleNullableField <T>(string fieldName, byte typeId, T val,
                                                  PortableSystemTypedWriteDelegate <T> handler, int len)
        {
            int fieldId = PortableUtils.FieldId(_curTypeId, fieldName, _curConverter, _curMapper);

            WriteSimpleNullableField(fieldId, val, handler, len);

            if (_curMetaHnd != null)
            {
                _curMetaHnd.OnFieldWrite(fieldId, fieldName, typeId);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Write simple nullable field with known length.
        /// </summary>
        /// <param name="fieldId">Field ID.</param>
        /// <param name="val">Value.</param>
        /// <param name="handler">Handler.</param>
        /// <param name="len">Length.</param>
        private void WriteSimpleNullableField <T>(int fieldId, T val, PortableSystemTypedWriteDelegate <T> handler, int len)
        {
            CheckNotRaw();

            _stream.WriteInt(fieldId);

            if (val == null)
            {
                _stream.WriteInt(1);

                _stream.WriteByte(PortableUtils.HdrNull);
            }
            else
            {
                _stream.WriteInt(1 + len);

                handler(_stream, val);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Write simple nullable field with unknown length.
        /// </summary>
        /// <param name="fieldId">Field ID.</param>
        /// <param name="val">Value.</param>
        /// <param name="handler">Handler.</param>
        private void WriteSimpleNullableField <T>(int fieldId, T val, PortableSystemTypedWriteDelegate <T> handler)
        {
            CheckNotRaw();

            _stream.WriteInt(fieldId);

            if (val == null)
            {
                _stream.WriteInt(1);

                _stream.WriteByte(PortableUtils.HdrNull);
            }
            else
            {
                int pos = _stream.Position;

                _stream.Seek(4, SeekOrigin.Current);

                handler(_stream, val);

                WriteFieldLength(_stream, pos);
            }
        }