You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Zero/ZeroLevel/Services/DOM/Model/Header.cs

116 lines
2.8 KiB

using System;
using ZeroLevel.Services.Serialization;
namespace ZeroLevel.DocumentObjectModel
{
public class Header :
IBinarySerializable,
IEquatable<Header>,
ICloneable
{
#region Ctors
public Header()
{
}
public Header(string name)
{
this.Name = name;
}
public Header(string name, string value)
{
this.Name = name; this.Value = value;
}
public Header(string name, string value, string type)
{
this.Name = name; this.Value = value; this.Type = type;
}
public Header(string name, string value, string type, string tag)
{
this.Name = name; this.Value = value; this.Type = type; this.Tag = tag;
}
public Header(Header other)
{
this.Name = other.Name;
this.Tag = other.Tag;
this.Type = other.Type;
this.Value = other.Value;
}
#endregion Ctors
#region Fields
public string Name;
public string Value;
public string Type;
public string Tag;
#endregion Fields
#region IBinarySerializable
public void Serialize(IBinaryWriter writer)
{
writer.WriteString(Name);
writer.WriteString(Value);
writer.WriteString(Type);
writer.WriteString(Tag);
}
public void Deserialize(IBinaryReader reader)
{
Name = reader.ReadString();
Value = reader.ReadString();
Type = reader.ReadString();
Tag = reader.ReadString();
}
#endregion IBinarySerializable
#region IEquatable
public bool Equals(Header other)
{
if (other == null!) return false;
if (string.Compare(this.Name, other.Name, StringComparison.Ordinal) != 0) return false;
if (string.Compare(this.Value, other.Value, StringComparison.Ordinal) != 0) return false;
if (string.Compare(this.Type, other.Type, StringComparison.Ordinal) != 0) return false;
if (string.Compare(this.Tag, other.Tag, StringComparison.Ordinal) != 0) return false;
return true;
}
#endregion IEquatable
#region Equals & Hash
public override bool Equals(object obj)
{
return this.Equals((obj as Header)!);
}
public override int GetHashCode()
{
return Name.GetHashCode() ^
Value.GetHashCode() ^
Type.GetHashCode() ^
Tag.GetHashCode();
}
#endregion Equals & Hash
#region ICloneable
public object Clone()
{
return new Header(this);
}
#endregion ICloneable
}
}

Powered by TurnKey Linux.