Beispiel #1
0
        protected IFieldValue[] DecodeFieldValues(Stream inStream, Group template,
                                                  BitVectorReader pmapReader, Context context)
        {
            var values = new IFieldValue[_fields.Length];
            int start  = this is MessageTemplate ? 1 : 0;

            for (int fieldIndex = start; fieldIndex < _fields.Length; fieldIndex++)
            {
                Field field = _fields[fieldIndex];
                values[fieldIndex] = field.Decode(inStream, field.MessageTemplate ?? template, context, pmapReader);
            }

            if (pmapReader.HasMoreBitsSet)
            {
                Global.ErrorHandler.OnError(null, RepError.PmapTooManyBits,
                                            "The presence map {0} has too many bits for the group {1}", pmapReader, this);
            }

            return(values);
        }