Christian Köllner cbf2144ef4 Initial commit
2019-06-12 21:56:55 +02:00

53 lines
1.5 KiB
C#

namespace CapnpC.Model
{
class Field
{
public TypeDefinition DeclaringType { get; set; }
public Field Parent { get; set; }
public string Name { get; set; }
public Type Type { get; set; }
public Value DefaultValue { get; set; }
public bool DefaultValueIsExplicit { get; set; }
public ushort? DiscValue { get; set; }
public uint Offset { get; set; }
public int CodeOrder { get; set; }
public ulong? BitOffset => (ulong)Offset * Type?.FixedBitWidth;
public Field Clone()
{
var field = new Field()
{
DeclaringType = DeclaringType,
Parent = Parent,
Name = Name,
Type = Type,
DefaultValue = DefaultValue,
DefaultValueIsExplicit = DefaultValueIsExplicit,
DiscValue = DiscValue,
Offset = Offset,
CodeOrder = CodeOrder,
};
field.InheritFreeGenericParameters();
return field;
}
public void InheritFreeGenericParameters()
{
Type.InheritFreeParameters(DeclaringType);
}
public override bool Equals(object obj)
{
return obj is Field other &&
DeclaringType == other.DeclaringType &&
Name == other.Name;
}
public override int GetHashCode()
{
return (DeclaringType, Name).GetHashCode();
}
}
}