271 lines
5.5 KiB
C#
271 lines
5.5 KiB
C#
using System;
|
|
|
|
public static class ViMask
|
|
{
|
|
public static bool HasAny(Int32 value, Int32 mask)
|
|
{
|
|
return ((value & mask) != 0);
|
|
}
|
|
public static bool HasAll(Int32 value, Int32 mask)
|
|
{
|
|
return ((value & mask) == mask);
|
|
}
|
|
public static void Add(ref Int32 value, Int32 mask)
|
|
{
|
|
value |= mask;
|
|
}
|
|
public static void Del(ref Int32 value, Int32 mask)
|
|
{
|
|
value &= ~mask;
|
|
}
|
|
public static Int32 Value(Int32 value, Int32 mask)
|
|
{
|
|
return (value & mask);
|
|
}
|
|
public static bool Enter(Int32 oldValue, Int32 iNewValue, Int32 mask)
|
|
{
|
|
return (HasAny(oldValue, mask) == false) && (HasAny(iNewValue, mask) == true);
|
|
}
|
|
public static bool Exit(Int32 oldValue, Int32 iNewValue, Int32 mask)
|
|
{
|
|
return (HasAny(oldValue, mask) == true) && (HasAny(iNewValue, mask) == false);
|
|
}
|
|
public static bool HasAny(UInt32 value, UInt32 mask)
|
|
{
|
|
return ((value & mask) != 0);
|
|
}
|
|
public static bool HasAll(UInt32 value, UInt32 mask)
|
|
{
|
|
return ((value & mask) == mask);
|
|
}
|
|
public static void Add(ref UInt32 value, UInt32 mask)
|
|
{
|
|
value |= mask;
|
|
}
|
|
public static void Del(ref UInt32 value, UInt32 mask)
|
|
{
|
|
value &= ~mask;
|
|
}
|
|
public static UInt32 Value(UInt32 value, UInt32 mask)
|
|
{
|
|
return (value & mask);
|
|
}
|
|
public static bool Enter(UInt32 oldValue, UInt32 iNewValue, UInt32 mask)
|
|
{
|
|
return (HasAny(oldValue, mask) == false) && (HasAny(iNewValue, mask) == true);
|
|
}
|
|
public static bool Exit(UInt32 oldValue, UInt32 iNewValue, UInt32 mask)
|
|
{
|
|
return (HasAny(oldValue, mask) == true) && (HasAny(iNewValue, mask) == false);
|
|
}
|
|
public static UInt32 Mask(Int32 value)
|
|
{
|
|
Int32 mask = 1;
|
|
mask = mask << (int)value;
|
|
return (UInt32)mask;
|
|
}
|
|
public static UInt32 Mask(UInt32 value)
|
|
{
|
|
Int32 mask = 1;
|
|
mask = mask << (int)value;
|
|
return (UInt32)mask;
|
|
}
|
|
|
|
public static bool HasAny(Int64 value, Int64 mask)
|
|
{
|
|
return ((value & mask) != 0);
|
|
}
|
|
public static bool HasAll(Int64 value, Int64 mask)
|
|
{
|
|
return ((value & mask) == mask);
|
|
}
|
|
public static void Add(ref Int64 value, Int64 mask)
|
|
{
|
|
value |= mask;
|
|
}
|
|
public static void Del(ref Int64 value, Int64 mask)
|
|
{
|
|
value &= ~mask;
|
|
}
|
|
public static Int64 Value(Int64 value, Int64 mask)
|
|
{
|
|
return (value & mask);
|
|
}
|
|
public static bool Enter(Int64 oldValue, Int64 iNewValue, Int64 mask)
|
|
{
|
|
return (HasAny(oldValue, mask) == false) && (HasAny(iNewValue, mask) == true);
|
|
}
|
|
public static bool Exit(Int64 oldValue, Int64 iNewValue, Int64 mask)
|
|
{
|
|
return (HasAny(oldValue, mask) == true) && (HasAny(iNewValue, mask) == false);
|
|
}
|
|
public static bool HasAny(UInt64 value, UInt64 mask)
|
|
{
|
|
return ((value & mask) != 0);
|
|
}
|
|
public static bool HasAll(UInt64 value, UInt64 mask)
|
|
{
|
|
return ((value & mask) == mask);
|
|
}
|
|
public static void Add(ref UInt64 value, UInt64 mask)
|
|
{
|
|
value |= mask;
|
|
}
|
|
public static void Del(ref UInt64 value, UInt64 mask)
|
|
{
|
|
value &= ~mask;
|
|
}
|
|
public static UInt64 Value(UInt64 value, UInt64 mask)
|
|
{
|
|
return (value & mask);
|
|
}
|
|
public static bool Enter(UInt64 oldValue, UInt64 iNewValue, UInt64 mask)
|
|
{
|
|
return (HasAny(oldValue, mask) == false) && (HasAny(iNewValue, mask) == true);
|
|
}
|
|
public static bool Exit(UInt64 oldValue, UInt64 iNewValue, UInt64 mask)
|
|
{
|
|
return (HasAny(oldValue, mask) == true) && (HasAny(iNewValue, mask) == false);
|
|
}
|
|
public static Int64 Mask(Int64 value)
|
|
{
|
|
Int64 mask = 1;
|
|
mask = mask << (int)value;
|
|
return mask;
|
|
}
|
|
public static UInt64 Mask(UInt64 value)
|
|
{
|
|
Int64 mask = 1;
|
|
mask = mask << (int)value;
|
|
return (UInt64)mask;
|
|
}
|
|
}
|
|
|
|
public struct ViMask32<T>
|
|
{
|
|
public UInt32 Value { get { return _value; } }
|
|
|
|
public ViMask32(UInt32 value)
|
|
{
|
|
_value = value;
|
|
}
|
|
public bool HasAny(UInt32 mask)
|
|
{
|
|
return ViMask.HasAny(_value, mask);
|
|
}
|
|
public bool HasAll(UInt32 mask)
|
|
{
|
|
return ViMask.HasAll(_value, mask);
|
|
}
|
|
public void Add(UInt32 mask)
|
|
{
|
|
ViMask.Add(ref _value, mask);
|
|
}
|
|
public void Del(UInt32 mask)
|
|
{
|
|
ViMask.Del(ref _value, mask);
|
|
}
|
|
public static implicit operator UInt32(ViMask32<T> data)
|
|
{
|
|
return data.Value;
|
|
}
|
|
|
|
UInt32 _value;
|
|
}
|
|
|
|
public struct ViMask64<T>
|
|
{
|
|
public UInt64 Value { get { return _value; } }
|
|
|
|
public ViMask64(UInt64 value)
|
|
{
|
|
_value = value;
|
|
}
|
|
public bool HasAny(UInt64 mask)
|
|
{
|
|
return ViMask.HasAny(_value, mask);
|
|
}
|
|
public bool HasAll(UInt64 mask)
|
|
{
|
|
return ViMask.HasAll(_value, mask);
|
|
}
|
|
public void Add(UInt64 mask)
|
|
{
|
|
ViMask.Add(ref _value, mask);
|
|
}
|
|
public void Del(UInt64 mask)
|
|
{
|
|
ViMask.Del(ref _value, mask);
|
|
}
|
|
public static implicit operator UInt64(ViMask64<T> data)
|
|
{
|
|
return data.Value;
|
|
}
|
|
|
|
UInt64 _value;
|
|
}
|
|
|
|
|
|
public struct ViMaskDynamic32
|
|
{
|
|
public UInt32 Value { get { return _value; } }
|
|
|
|
public ViMaskDynamic32(UInt32 value)
|
|
{
|
|
_value = value;
|
|
}
|
|
public bool HasAny(UInt32 mask)
|
|
{
|
|
return ViMask.HasAny(_value, mask);
|
|
}
|
|
public bool HasAll(UInt32 mask)
|
|
{
|
|
return ViMask.HasAll(_value, mask);
|
|
}
|
|
public void Add(UInt32 mask)
|
|
{
|
|
ViMask.Add(ref _value, mask);
|
|
}
|
|
public void Del(UInt32 mask)
|
|
{
|
|
ViMask.Del(ref _value, mask);
|
|
}
|
|
public static implicit operator UInt32(ViMaskDynamic32 data)
|
|
{
|
|
return data.Value;
|
|
}
|
|
|
|
UInt32 _value;
|
|
}
|
|
|
|
public struct ViMaskDynamic64
|
|
{
|
|
public UInt64 Value { get { return _value; } }
|
|
|
|
public ViMaskDynamic64(UInt64 value)
|
|
{
|
|
_value = value;
|
|
}
|
|
public bool HasAny(UInt64 mask)
|
|
{
|
|
return ViMask.HasAny(_value, mask);
|
|
}
|
|
public bool HasAll(UInt64 mask)
|
|
{
|
|
return ViMask.HasAll(_value, mask);
|
|
}
|
|
public void Add(UInt64 mask)
|
|
{
|
|
ViMask.Add(ref _value, mask);
|
|
}
|
|
public void Del(UInt64 mask)
|
|
{
|
|
ViMask.Del(ref _value, mask);
|
|
}
|
|
public static implicit operator UInt64(ViMaskDynamic64 data)
|
|
{
|
|
return data.Value;
|
|
}
|
|
|
|
UInt64 _value;
|
|
} |