添加基础枚举扩展

This commit is contained in:
2023-10-29 17:56:31 +08:00
parent e2ca273696
commit e293c5592d
6 changed files with 456 additions and 10 deletions
+145
View File
@@ -1,7 +1,10 @@
using Codice.CM.WorkspaceServer.Tree.GameUI.HeadTree;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using Unity.VisualScripting.YamlDotNet.Core.Tokens;
@@ -156,4 +159,146 @@ namespace XericLibrary.Runtime.MacroLibrary
return isValid > 0 && isFull <= 0;
}
}
public static partial class MacroMath
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static int EnumToInt32(this Enum target)
{
return Convert.ToInt32(target);
}
/// <summary>
/// 枚举仅此有效
/// </summary>
/// <param name="target"></param>
/// <param name="value"></param>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumJust(this Enum target, Enum value)
{
return target.EnumToInt32() == value.EnumToInt32();
}
/// <summary>
/// 枚举至少存在一个有效的枚举项目
/// </summary>
/// <returns>返回是否存在至少有一个有效的枚举项目</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater(this Enum target)
{
return target.EnumToInt32() > 0;
}
/// <summary>
/// 枚举至少存在一个有效的枚举项目
/// </summary>
/// <returns>返回是否存在至少有一个有效的枚举项目</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater(this Enum target, Enum value)
{
return (target.EnumToInt32() & value.EnumToInt32()) > 0;
}
/// <summary>
/// 枚举1有效
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater1(this Enum target)
{
return (target.EnumToInt32() & 01) > 0;
}
/// <summary>
/// 枚举2有效
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater2(this Enum target)
{
return (target.EnumToInt32() & 02) > 0;
}
/// <summary>
/// 枚举3有效
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater3(this Enum target)
{
return (target.EnumToInt32() & 04) > 0;
}
/// <summary>
/// 枚举4有效
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater4(this Enum target)
{
return (target.EnumToInt32() & 010) > 0;
}
/// <summary>
/// 枚举5有效
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater5(this Enum target)
{
return (target.EnumToInt32() & 020) > 0;
}
/// <summary>
/// 枚举6有效
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater6(this Enum target)
{
return (target.EnumToInt32() & 030) > 0;
}
/// <summary>
/// 枚举7有效
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater7(this Enum target)
{
return (target.EnumToInt32() & 040) > 0;
}
/// <summary>
/// 枚举8有效
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater8(this Enum target)
{
return (target.EnumToInt32() & 0100) > 0;
}
/// <summary>
/// 枚举小于0,或者说不存在有效的枚举项目
/// </summary>
/// <returns>返回是否不存在有效的枚举项目</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumLess(this Enum target)
{
return target.EnumToInt32() <= 0;
}
/// <summary>
/// 枚举小于0,或者说不存在有效的枚举项目
/// </summary>
/// <returns>返回是否不存在有效的枚举项目</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumLess(this Enum target, Enum value)
{
return (target.EnumToInt32() & value.EnumToInt32()) <= 0;
}
}
}