예제 #1
0
 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();
 }
예제 #2
0
 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");
 }