size_t MSG_ActualL15CoverageVIS_IR::read_from( unsigned const char_1 *buff)
{
  SouthernLineActual = get_i4(buff);
  NorthernLineActual = get_i4(buff+4);
  EasternColumnActual = get_i4(buff+8);
  WesternColumnActual = get_i4(buff+12);
  return 16;
}
size_t MSG_ActualL15CoverageHRV::read_from( unsigned const char_1 *buff )
{
  LowerSouthLineActual = get_i4(buff);
  LowerNorthLineActual = get_i4(buff+4);
  LowerEastColumnActual = get_i4(buff+8);
  LowerWestColumnActual = get_i4(buff+12);
  UpperSouthLineActual = get_i4(buff+16);
  UpperNorthLineActual = get_i4(buff+20);
  UpperEastColumnActual = get_i4(buff+24);
  UpperWestColumnActual = get_i4(buff+28);
  return 32;
}
void MSG_segment_quality::set(unsigned const char_1 *buff)
{
  line_number_in_grid      = get_i4(buff);

  (void) line_mean_acquisition.read_from(buff+4);

  line_validity            = (t_enum_MSG_segment_validity) *(buff+10);
  line_radiometric_quality = (t_enum_MSG_segment_radiometric_quality)*(buff+11);
  line_geometric_quality   = (t_enum_MSG_segment_geometric_quality) *(buff+12);
  return;
}