public int CompareTo(IDoubleApi other) { if (ReferenceEquals(this, other)) { return(0); } if (ReferenceEquals(null, other)) { return(1); } var nameComparison = string.Compare(Name, other.Name, StringComparison.Ordinal); return(nameComparison != 0 ? nameComparison : string.Compare(Description, other.Description, StringComparison.Ordinal)); }
public static bool ShouldDefine(this IDoubleApi api, string[] array) { foreach (var element0 in array) { foreach (var element1 in array) { if (!api.TryGetEnabled(element0, element1, out var apiEnabled) || !apiEnabled) { continue; } return(true); } } return(false); }
public static void HelpWithGenerate(this IDoubleApi Api, IEnumerableCollectionProcessor processor, ModuleDefinition mainModule, ModuleDefinition systemModule, Action <string, bool, string, bool, TypeDefinition, ModuleDefinition, ModuleDefinition> GenerateEachPair) { if (!processor.TryGetEnabled(Api.Name, out var enabled) || !enabled) { return; } var array = processor.EnabledNameCollection.Intersect(Api.NameCollection).ToArray(); if (!Api.ShouldDefine(array)) { return; } TypeDefinition @static; mainModule.Types.Add(@static = mainModule.DefineStatic(Api.Name + Api.Description + "Helper")); var count = Api.Count; for (var row = 0; row < count; row++) { var rowName = Api.NameCollection[row]; if (!processor.IsSpecialType(rowName, out var isRowSpecial)) { throw new KeyNotFoundException(); } for (var column = 0; column < count; column++) { var columnName = Api.NameCollection[column]; if (!processor.IsSpecialType(columnName, out var isColumnSpecial)) { throw new KeyNotFoundException(); } if (!Api.TryGetEnabled(rowName, columnName, out var apiEnabled) || !apiEnabled) { continue; } GenerateEachPair(rowName, isRowSpecial, columnName, isColumnSpecial, @static, mainModule, systemModule); } } }
public UnionOperator(IDoubleApi api) => Api = api;
private static void RegisterEachDoubleApi(IDoubleApi api, List <IApiExtensionMethodGenerator> list) { switch (api.Name) { case "Concat": list.Add(new Concat(api)); break; case "Join": switch (api.Description) { case "Operator": list.Add(new JoinOperator(api)); break; case "Func": list.Add(new JoinFunc(api)); break; case "RefFunc": list.Add(new JoinRefFunc(api)); break; } break; case "GroupJoin": switch (api.Description) { case "Operator": list.Add(new GroupJoinOperator(api)); break; case "Func": list.Add(new GroupJoinFunc(api)); break; case "RefFunc": list.Add(new GroupJoinRefFunc(api)); break; } break; case "AdjustedZip": case "ExceptionalZip": switch (api.Description) { case "None": list.Add(new ZipNone(api)); break; case "Operator": list.Add(new ZipOperator(api)); break; case "Func": list.Add(new ZipFunc(api)); break; case "RefFunc": list.Add(new ZipRefFunc(api)); break; } break; case "Except": case "Intersect": switch (api.Description) { case "None": list.Add(new ExceptNone(api)); break; case "Operator": list.Add(new ExceptOperator(api)); break; case "Func": list.Add(new ExceptFunc(api)); break; case "RefFunc": list.Add(new ExceptRefFunc(api)); break; } break; case "Union": switch (api.Description) { case "None": list.Add(new UnionNone(api)); break; case "Operator": list.Add(new UnionOperator(api)); break; case "Func": list.Add(new UnionFunc(api)); break; case "RefFunc": list.Add(new UnionRefFunc(api)); break; } break; } }
public ExceptOperator(IDoubleApi api) => Api = api;
public JoinOperator(IDoubleApi api) => Api = api;
public ZipNone(IDoubleApi api) => Api = api;
public GroupJoinRefFunc(IDoubleApi api) => Api = api;
public Concat(IDoubleApi api) { Api = api; }
public ExceptFunc(IDoubleApi api) => Api = api;
public ExceptNone(IDoubleApi api) => Api = api;
public JoinRefFunc(IDoubleApi api) => Api = api;
public ZipRefFunc(IDoubleApi api) => Api = api;
public ZipOperator(IDoubleApi api) => Api = api;
public UnionRefFunc(IDoubleApi api) => Api = api;
public UnionNone(IDoubleApi api) => Api = api;