Christian Köllner fd7ada499f WIP
2020-01-30 21:53:08 +01:00

54 lines
1.6 KiB
C#

namespace CapnpC.CSharp.Generator.Model
{
class Field
{
public TypeDefinition DeclaringType { get; set; }
public Field Parent { get; set; }
public string Name { get; set; }
public string CsName { 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();
}
}
}