private int Encode()
        {
            EETypeOptionalFieldsElement eLastTag = EETypeOptionalFieldsElement.Count;

            for (EETypeOptionalFieldsElement eTag = 0; eTag < EETypeOptionalFieldsElement.Count; eTag++)
            {
                eLastTag = _rgFields[(int)eTag]._fieldPresent ? eTag : eLastTag;
            }

            if (eLastTag == EETypeOptionalFieldsElement.Count)
            {
                return(0);
            }

            _encoder = new NativePrimitiveEncoder();
            _encoder.Init();

            for (EETypeOptionalFieldsElement eTag = 0; eTag < EETypeOptionalFieldsElement.Count; eTag++)
            {
                if (!_rgFields[(int)eTag]._fieldPresent)
                {
                    continue;
                }

                _encoder.WriteByte((byte)((byte)eTag | (eTag == eLastTag ? 0x80 : 0)));
                _encoder.WriteUnsigned(_rgFields[(int)eTag]._value);
            }

            return(_encoder.Size);
        }
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (!(obj is EETypeOptionalFieldsBuilder))
            {
                return(false);
            }

            EETypeOptionalFieldsBuilder other = obj as EETypeOptionalFieldsBuilder;

            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            for (EETypeOptionalFieldsElement eTag = 0; eTag < EETypeOptionalFieldsElement.Count; eTag++)
            {
                int index = (int)eTag;
                if (_rgFields[index]._fieldPresent != other._rgFields[index]._fieldPresent ||
                    (_rgFields[index]._fieldPresent && _rgFields[index]._value != other._rgFields[index]._value))
                {
                    return(false);
                }
            }

            return(true);
        }
Exemple #3
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (!(obj is EETypeOptionalFieldsBuilder))
            {
                return(false);
            }

            EETypeOptionalFieldsBuilder other = obj as EETypeOptionalFieldsBuilder;

            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            for (EETypeOptionalFieldsElement eTag = 0; eTag < EETypeOptionalFieldsElement.Count; eTag++)
            {
                if (GetFieldValue(eTag, 0) != other.GetFieldValue(eTag, 0))
                {
                    return(false);
                }
            }

            return(true);
        }
        public override int GetHashCode()
        {
            int hash = 31;

            for (EETypeOptionalFieldsElement eTag = 0; eTag < EETypeOptionalFieldsElement.Count; eTag++)
            {
                hash = hash * 486187739 + (int)GetFieldValue(eTag, 0);
            }

            return(hash);
        }
 internal void ClearField(EETypeOptionalFieldsElement eTag)
 {
     _rgFields[(int)eTag]._fieldPresent = false;
 }
 internal void SetFieldValue(EETypeOptionalFieldsElement eTag, UInt32 value)
 {
     _rgFields[(int)eTag]._fieldPresent = true;
     _rgFields[(int)eTag]._value        = value;
 }
 internal UInt32 GetFieldValue(EETypeOptionalFieldsElement eTag, UInt32 defaultValueIfNotFound)
 {
     return(_rgFields[(int)eTag]._fieldPresent ? _rgFields[(int)eTag]._value : defaultValueIfNotFound);
 }
 internal void ClearField(EETypeOptionalFieldsElement eTag)
 {
     _rgFields[(int)eTag]._fieldPresent = false;
 }
 internal void SetFieldValue(EETypeOptionalFieldsElement eTag, UInt32 value)
 {
     _rgFields[(int)eTag]._fieldPresent = true;
     _rgFields[(int)eTag]._value = value;
 }
 internal UInt32 GetFieldValue(EETypeOptionalFieldsElement eTag, UInt32 defaultValueIfNotFound)
 {
     return _rgFields[(int)eTag]._fieldPresent ? _rgFields[(int)eTag]._value : defaultValueIfNotFound;
 }