2019-06-12 21:56:55 +02:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
namespace Capnp
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// An implementations of this interface represents a struct which is being serialized as Cap'n Proto object.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public interface IStructSerializer: IStructDeserializer
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Writes data (up to 64 bits) into the underlying struct's data section.
|
|
|
|
|
/// The write operation must be aligned to fit within a single word.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="bitOffset">Start bit relative to the struct's data section, little endian</param>
|
|
|
|
|
/// <param name="bitCount">Number of bits to write</param>
|
|
|
|
|
/// <param name="data">Data bits to write</param>
|
|
|
|
|
/// <exception cref="InvalidOperationException">The object was not determined to be a struct</exception>
|
|
|
|
|
/// <exception cref="ArgumentOutOfRangeException">The data slice specified by <paramref name="bitOffset"/> and <paramref name="bitCount"/>
|
|
|
|
|
/// is not completely within the struct's data section, misaligned, exceeds one word, or <paramref name="bitCount"/> is negative</exception>
|
|
|
|
|
void StructWriteData(ulong bitOffset, int bitCount, ulong data);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The struct's data section as memory span.
|
|
|
|
|
/// </summary>
|
|
|
|
|
Span<ulong> StructDataSection { get; }
|
|
|
|
|
}
|
2020-01-11 17:56:12 +01:00
|
|
|
|
}
|