Syntax
class FooterData
{
public:
Error AppendTo(Message &aMessage) const { return aMessage.Append<DataType>(AsDataType()); }
void ReadFrom(const Message &aMessage)
{
IgnoreError(aMessage.Read<DataType>(aMessage.GetLength() - sizeof(DataType), AsDataType()));
}
void UpdateIn(Message &aMessage) const
{
aMessage.Write<DataType>(aMessage.GetLength() - sizeof(DataType), AsDataType());
}
void RemoveFrom(Message &aMessage) const { aMessage.RemoveFooter(sizeof(DataType)); }
protected:
FooterData(void) = default;
private:
const DataType &AsDataType(void) const { return static_cast<const DataType &>(*this); }
DataType &AsDataType(void) { return static_cast<DataType &>(*this); }
};