using dnlib.DotNet;
using Newtonsoft.Json;
using ReCodeItLib.Enums;
namespace ReCodeItLib.Models;
///
/// Object to store linq statements in inside of json to search and remap classes
///
public class RemapModel
{
[JsonIgnore]
public bool Succeeded { get; set; } = false;
[JsonIgnore]
public List NoMatchReasons { get; set; } = [];
[JsonIgnore] public string AmbiguousTypeMatch { get; set; } = string.Empty;
///
/// This is a list of type candidates that made it through the filter
///
[JsonIgnore]
public HashSet TypeCandidates { get; set; } = [];
///
/// This is the final chosen type we will use to remap
///
[JsonIgnore]
public TypeDef? TypePrimeCandidate { get; set; }
public string NewTypeName { get; set; } = string.Empty;
public string OriginalTypeName { get; set; } = string.Empty;
public bool UseForceRename { get; set; }
public SearchParams SearchParams { get; set; } = new();
}
///
/// Search filters to find types and remap them
///
public class SearchParams
{
public GenericParams GenericParams { get; set; } = new();
public MethodParams Methods { get; set; } = new();
public FieldParams Fields { get; set; } = new();
public PropertyParams Properties { get; set; } = new();
public NestedTypeParams NestedTypes { get; set; } = new();
public EventParams Events { get; set; } = new();
}
public class GenericParams
{
public bool IsPublic { get; set; } = true;
public bool? IsAbstract { get; set; } = null;
public bool? IsInterface { get; set; } = null;
public bool? IsStruct { get; set; } = null;
public bool? IsEnum { get; set; } = null;
public bool? IsNested { get; set; } = null;
///
/// Name of the nested types parent
///
public string? NTParentName { get; set; } = null;
public bool? IsSealed { get; set; } = null;
public bool? HasAttribute { get; set; } = null;
public bool? IsDerived { get; set; } = null;
///
/// Name of the derived classes declaring type
///
public string? MatchBaseClass { get; set; } = null;
///
/// Name of the derived classes declaring type we want to ignore
///
public string? IgnoreBaseClass { get; set; } = null;
public bool? HasGenericParameters { get; set; } = null;
}
public class MethodParams
{
public int ConstructorParameterCount { get; set; } = -1;
public int MethodCount { get; set; } = -1;
public List IncludeMethods { get; set; } = [];
public List ExcludeMethods { get; set; } = [];
}
public class FieldParams
{
public int FieldCount { get; set; } = -1;
public List IncludeFields { get; set; } = [];
public List ExcludeFields { get; set; } = [];
}
public class PropertyParams
{
public int PropertyCount { get; set; } = -1;
public List IncludeProperties { get; set; } = [];
public List ExcludeProperties { get; set; } = [];
}
public class NestedTypeParams
{
public int NestedTypeCount { get; set; } = -1;
public List IncludeNestedTypes { get; set; } = [];
public List ExcludeNestedTypes { get; set; } = [];
}
public class EventParams
{
public List IncludeEvents { get; set; } = [];
public List ExcludeEvents { get; set; } = [];
}