Files
beyond/Assets/ThirdParty/FullSerializer/Source/Aot/fsAotVersionInfo.cs
2024-11-20 15:21:28 +01:00

52 lines
1.9 KiB
C#

using FullSerializer.Internal;
namespace FullSerializer {
/// <summary>
/// Version information stored on an AOT model. This is used to determine
/// if the AOT model is up to date.
/// </summary>
public struct fsAotVersionInfo {
public struct Member {
public string MemberName;
public string JsonName;
public string StorageType;
public string OverrideConverterType;
public Member(fsMetaProperty property) {
MemberName = property.MemberName;
JsonName = property.JsonName;
StorageType = property.StorageType.CSharpName(true);
OverrideConverterType = null;
if (property.OverrideConverterType != null)
OverrideConverterType = property.OverrideConverterType.CSharpName();
}
public override bool Equals(object obj) {
if (obj is Member == false)
return false;
return this == ((Member)obj);
}
public override int GetHashCode() {
return
MemberName.GetHashCode() +
(17 * JsonName.GetHashCode()) +
(17 * StorageType.GetHashCode()) +
(string.IsNullOrEmpty(OverrideConverterType) ? 0 : 17 * OverrideConverterType.GetHashCode());
}
public static bool operator ==(Member a, Member b) {
return a.MemberName == b.MemberName &&
a.JsonName == b.JsonName &&
a.StorageType == b.StorageType &&
a.OverrideConverterType == b.OverrideConverterType;
}
public static bool operator !=(Member a, Member b) {
return !(a == b);
}
}
public bool IsConstructorPublic;
public Member[] Members;
}
}