8 static bool HasFlag(
int flags,
int condition)
10 return (
flags & condition) == condition;
18 static bool HasPartialFlag(
int flags,
int condition)
20 return (condition & ~
flags) != condition;
28 static int SetFlag(
int flags,
int flagToSet)
41 static int RemoveFlag(
int flags,
int flagToRemove)
43 flags &= ~flagToRemove;
52 static int BitToIntArray(
int bitValue, out notnull array<int> intValues)
57 while (i > 0 && i <
int.
MAX)
73 static int IntToBitArray(notnull array<int> intValues)
76 foreach (
int intValue: intValues)
88 static string GetEnumName(
typename enumType,
int enumValue)
90 return typename.EnumToString(enumType, enumValue);
98 static int GetEnumNames(
typename enumType, out notnull array<string> stringValues)
100 stringValues.Clear();
101 array<int> values = {};
102 GetEnumValues(enumType, values);
103 for (
int i, count = values.Count(); i < count; i++)
105 stringValues.Insert(
typename.EnumToString(enumType, values[i]));
107 return stringValues.Count();
115 static int GetEnumValues(
typename enumType, out notnull array<int> intValues)
118 for (
int i, count = enumType.GetVariableCount(); i < count; i++)
120 if (enumType.GetVariableValue(null, i, val))
121 intValues.Insert(val);
123 return intValues.Count();
131 static int GetPreviousEnumValue(
typename enumType,
int value)
134 enumType.GetVariableValue(null, 0, previousValue);
135 if (previousValue == value)
138 array<int> intValues = {};
139 for (
int i, count = GetEnumValues(enumType, intValues); i < count; i++)
141 if (intValues[i] > previousValue && intValues[i] < value)
142 previousValue = intValues[i];
145 return previousValue;
153 static int GetNextEnumValue(
typename enumType,
int value)
155 int count = enumType.GetVariableCount();
157 enumType.GetVariableValue(null, count - 1, nextValue);
158 if (nextValue == value)
161 array<int> intValues = {};
162 GetEnumValues(enumType, intValues);
163 for (
int i; i < count; i++)
165 if (intValues[i] > value && intValues[i] < nextValue)
166 nextValue = intValues[i];
176 static int GetFlagValues(
typename enumType)
179 for (
int i, count = enumType.GetVariableCount(); i < count; i++)
181 if (enumType.GetVariableValue(null, i, val))
193 static bool GetRange(
typename enumType, out
int min, out
int max)
197 int val, count = enumType.GetVariableCount();
198 for (
int i = 0; i < count; i++)
200 if (enumType.GetVariableValue(null, i, val))
202 min =
Math.Min(min, val);
203 max =
Math.Max(max, val);
216 static ParamEnumArray GetList(
typename e,
ParamEnum customValue1 = null,
ParamEnum customValue2 = null,
ParamEnum customValue3 = null)
218 ParamEnumArray
params = ParamEnumArray.FromEnum(e);
221 params.InsertAt(customValue3, 0);
223 params.InsertAt(customValue2, 0);
225 params.InsertAt(customValue1, 0);
234 static ParamEnumArray GetList(notnull array<string> names)
236 ParamEnumArray
params = {};
237 for (
int i, count = names.Count(); i < count; i++)
248 static ParamEnumArray GetFlags(notnull array<string> names)
250 ParamEnumArray
params = {};
251 for (
int i, count = names.Count(); i < count; i++)
265 static string FlagsToString(
typename e,
int flags,
string delimiter =
", ",
string noValue =
"N/A")
270 array<int> outValues = {};
272 int count = BitToIntArray(
flags, outValues);
276 string result =
typename.EnumToString(e, outValues[0]);
277 for (
int i = 1; i < count; i++)
280 result +=
typename.EnumToString(e, outValues[i]);
289 static string GetDefault(
int enumValue)
291 return string.Format(
"%1", enumValue);
298 static string GetDefault(
typename enumType)
300 return GetDefault(GetFlagValues(enumType));