public static VariableType DefineEnum(String name, IDictionary<Int32, String> labels)
{
if (name == null) {
throw new ArgumentNullException("name");
} else if (labels == null) {
throw new ArgumentNullException("labels");
}
var values = new List<NativeMethods.EnumVal>();
try
{
foreach (var kv in labels) {
values.Add(new NativeMethods.EnumVal(kv.Key, Helpers.PtrFromStr(kv.Value)));
}
VariableType enumType = NativeMethods.TwDefineEnum(name, values.ToArray(), (uint)values.Count);
if (enumType == VariableType.Undefined) {
throw new AntTweakBarException("TwDefineEnum failed.");
}
return enumType;
}
finally
{
foreach (var value in values) {
Marshal.FreeCoTaskMem(value.Label);
}
}
}