internal static UInt32 GetInlineField(byte *pFields, EETypeOptionalFieldTag eTag, UInt32 uiDefaultValue) { if (pFields == null) { return(uiDefaultValue); } bool isLastField = false; while (!isLastField) { byte fieldHeader = NativePrimitiveDecoder.ReadUInt8(ref pFields); isLastField = (fieldHeader & 0x80) != 0; EETypeOptionalFieldTag eCurrentTag = (EETypeOptionalFieldTag)(fieldHeader & 0x7f); UInt32 uiCurrentValue = NativePrimitiveDecoder.DecodeUnsigned(ref pFields); // If we found a tag match return the current value. if (eCurrentTag == eTag) { return(uiCurrentValue); } } // Reached end of stream without getting a match. Field is not present so return default value. return(uiDefaultValue); }
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 (EETypeOptionalFieldTag eTag = 0; eTag < EETypeOptionalFieldTag.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); }
internal int Encode() { EETypeOptionalFieldTag eLastTag = EETypeOptionalFieldTag.Count; for (EETypeOptionalFieldTag eTag = 0; eTag < EETypeOptionalFieldTag.Count; eTag++) { eLastTag = _rgFields[(int)eTag].m_fPresent ? eTag : eLastTag; } if (eLastTag == EETypeOptionalFieldTag.Count) { return(0); } _encoder = new NativePrimitiveEncoder(); _encoder.Init(); for (EETypeOptionalFieldTag eTag = 0; eTag < EETypeOptionalFieldTag.Count; eTag++) { if (!_rgFields[(int)eTag].m_fPresent) { continue; } _encoder.WriteByte((byte)((byte)eTag | (eTag == eLastTag ? 0x80 : 0))); _encoder.WriteUnsigned(_rgFields[(int)eTag].m_uiValue); } return(_encoder.Size); }
public override int GetHashCode() { int hash = 31; for (EETypeOptionalFieldTag eTag = 0; eTag < EETypeOptionalFieldTag.Count; eTag++) { hash = hash * 486187739 + (int)GetFieldValue(eTag, 0); } return(hash); }
internal OptionalFieldsRuntimeBuilder(byte *pInitializeFromOptionalFields = null) { if (pInitializeFromOptionalFields == null) { return; } bool isLastField = false; while (!isLastField) { byte fieldHeader = NativePrimitiveDecoder.ReadUInt8(ref pInitializeFromOptionalFields); isLastField = (fieldHeader & 0x80) != 0; EETypeOptionalFieldTag eCurrentTag = (EETypeOptionalFieldTag)(fieldHeader & 0x7f); UInt32 uiCurrentValue = NativePrimitiveDecoder.DecodeUnsigned(ref pInitializeFromOptionalFields); _rgFields[(int)eCurrentTag].m_fPresent = true; _rgFields[(int)eCurrentTag].m_uiValue = uiCurrentValue; } }
internal void ClearField(EETypeOptionalFieldTag eTag) { _rgFields[(int)eTag]._fieldPresent = false; }
internal void SetFieldValue(EETypeOptionalFieldTag eTag, UInt32 value) { _rgFields[(int)eTag]._fieldPresent = true; _rgFields[(int)eTag]._value = value; }
internal UInt32 GetFieldValue(EETypeOptionalFieldTag eTag, UInt32 defaultValueIfNotFound) { return _rgFields[(int)eTag]._fieldPresent ? _rgFields[(int)eTag]._value : defaultValueIfNotFound; }
internal static UInt32 GetInlineField(byte* pFields, EETypeOptionalFieldTag eTag, UInt32 uiDefaultValue) { if (pFields == null) return uiDefaultValue; bool isLastField = false; while (!isLastField) { byte fieldHeader = NativePrimitiveDecoder.ReadUInt8(ref pFields); isLastField = (fieldHeader & 0x80) != 0; EETypeOptionalFieldTag eCurrentTag = (EETypeOptionalFieldTag)(fieldHeader & 0x7f); UInt32 uiCurrentValue = NativePrimitiveDecoder.DecodeUnsigned(ref pFields); // If we found a tag match return the current value. if (eCurrentTag == eTag) return uiCurrentValue; } // Reached end of stream without getting a match. Field is not present so return default value. return uiDefaultValue; }
internal void ClearField(EETypeOptionalFieldTag eTag) { _rgFields[(int)eTag].m_fPresent = false; }
internal void SetFieldValue(EETypeOptionalFieldTag eTag, UInt32 value) { _rgFields[(int)eTag].m_fPresent = true; _rgFields[(int)eTag].m_uiValue = value; }
internal UInt32 GetFieldValue(EETypeOptionalFieldTag eTag, UInt32 defaultValueIfNotFound) { return(_rgFields[(int)eTag].m_fPresent ? _rgFields[(int)eTag].m_uiValue : defaultValueIfNotFound); }