public static string Type(this AVSValue value) { if (value.IsArray()) { return("Array"); } if (value.IsBool()) { return("Bool"); } if (value.IsClip()) { return("Clip"); } if (value.IsFloat()) { return("Float"); } if (value.IsInt()) { return("Int"); } if (value.IsString()) { return("String"); } throw new InvalidOperationException(); }
public static object AsObject(this AVSValue value) { if (value.IsArray()) { var length = value.ArraySize(); if (length == 0) { return(null); } var type = value[0].AsObject().GetType(); var arrayType = type.MakeArrayType(); var array = (Array)Activator.CreateInstance(arrayType, new object[length]); for (var i = 0; i < length; i++) { array.SetValue(value[i].AsObject(), i); } return(array); } if (!value.Defined()) { return(null); } if (value.IsString()) { return(value.AsString()); } if (value.IsClip()) { return(value.AsClip()); } if (value.IsInt()) { return(value.AsInt()); } if (value.IsFloat()) { return(value.AsFloat()); } if (value.IsBool()) { return(value.AsBool()); } throw new ArgumentException("Unrecognized AvsValue type"); }