Example #1
0
 public static bool CanChangeType(ScriptObject par, Type type)
 {
     if (type == TYPE_OBJECT || par.IsNull)
     {
         return(true);
     }
     else
     {
         if (par is ScriptString && Util.IsString(type))
         {
             return(true);
         }
         else if (par is ScriptNumber && (IsNumber(type) || IsEnum(type)))
         {
             return(true);
         }
         else if (par is ScriptBoolean && IsBool(type))
         {
             return(true);
         }
         else if (par is ScriptEnum && (par as ScriptEnum).EnumType == type)
         {
             return(true);
         }
         else if (par is ScriptArray && type.IsArray)
         {
             return(true);
         }
         else if (par is ScriptUserdata)
         {
             if (Util.IsType(type))
             {
                 return(true);
             }
             else if (type.IsAssignableFrom(((ScriptUserdata)par).ValueType))
             {
                 return(true);
             }
         }
         else if (type.IsAssignableFrom(par.GetType()))
         {
             return(true);
         }
     }
     return(false);
 }
Example #2
0
 public static object ChangeType(ScriptObject par, Type type)
 {
     if (type == TYPE_OBJECT)
     {
         if (par is ScriptNumber)
         {
             return(ChangeType_impl(par.ObjectValue, type));
         }
         else
         {
             return(par.ObjectValue);
         }
     }
     else
     {
         if (type.IsAssignableFrom(par.GetType()))
         {
             return(par);
         }
         else if (par is ScriptNumber)
         {
             return(Util.IsEnum(type) ? ToEnum(type, ((ScriptNumber)par).ToLong()) : ChangeType_impl(par.ObjectValue, type));
         }
         else if (par is ScriptArray)
         {
             return(ChangeType_impl(par as ScriptArray, type));
         }
         else if (par is ScriptUserdata)
         {
             if (Util.IsType(type))
             {
                 return(((ScriptUserdata)par).ValueType);
             }
             else
             {
                 return(par.ObjectValue);
             }
         }
         else
         {
             return(par.ObjectValue);
         }
     }
 }
Example #3
0
 public static bool CanChangeType(ScriptObject par, Type type)
 {
     if (type == TYPE_OBJECT)
     {
         return(true);
     }
     else if (type == TYPE_SBYTE || type == TYPE_BYTE || type == TYPE_SHORT || type == TYPE_USHORT || type == TYPE_INT || type == TYPE_UINT ||
              type == TYPE_FLOAT || type == TYPE_DOUBLE || type == TYPE_DECIMAL || type == TYPE_LONG)
     {
         return(par is ScriptNumber);
     }
     else if (type == TYPE_BOOL)
     {
         return(par is ScriptBoolean);
     }
     else if (type.GetTypeInfo().IsEnum)
     {
         return(par is ScriptEnum && ((ScriptEnum)par).EnumType == type);
     }
     else if (par is ScriptNull)
     {
         return(true);
     }
     else if (type == TYPE_STRING)
     {
         return(par is ScriptString);
     }
     else if (type == TYPE_TYPE)
     {
         return(par is ScriptUserdata);
     }
     else if (TYPE_DELEGATE.GetTypeInfo().IsAssignableFrom(type))
     {
         return((par is ScriptFunction) || (par is ScriptUserdata && (par as ScriptUserdata).ValueType == type));
     }
     else if (par is ScriptUserdata)
     {
         return(type.GetTypeInfo().IsAssignableFrom(((ScriptUserdata)par).ValueType));
     }
     else
     {
         return(type.GetTypeInfo().IsAssignableFrom(par.GetType()));
     }
 }
Example #4
0
 public static bool CanChangeType(ScriptObject par, Type type)
 {
     if (type == TYPE_OBJECT)
     {
         return(true);
     }
     else if (IsNumber(type))
     {
         return(par is ScriptNumber);
     }
     else if (IsBool(type))
     {
         return(par is ScriptBoolean);
     }
     else if (IsEnum(type))
     {
         return(par is ScriptEnum && ((ScriptEnum)par).EnumType == type);
     }
     else if (par is ScriptNull)
     {
         return(true);
     }
     else if (IsString(type))
     {
         return(par is ScriptString);
     }
     else if (IsDelegateType(type))
     {
         return(par is ScriptFunction);
     }
     else if (IsType(type))
     {
         return(par is ScriptUserdata);
     }
     else if (par is ScriptUserdata)
     {
         return(type.IsAssignableFrom(((ScriptUserdata)par).ValueType));
     }
     else
     {
         return(type.IsAssignableFrom(par.GetType()));
     }
 }
Example #5
0
 public static bool CanChangeType(ScriptObject par, Type type)
 {
     if (type == TYPE_OBJECT)
         return true;
     else if (IsNumber(type))
         return par is ScriptNumber;
     else if (IsBool(type))
         return par is ScriptBoolean;
     else if (IsEnum(type))
         return par is ScriptEnum && ((ScriptEnum)par).EnumType == type;
     else if (par is ScriptNull)
         return true;
     else if (IsString(type))
         return par is ScriptString;
     else if (IsDelegateType(type))
         return (par is ScriptFunction) || (par is ScriptUserdata && (par as ScriptUserdata).ValueType == type);
     else if (IsType(type))
         return par is ScriptUserdata;
     else if (par is ScriptUserdata)
         return type.IsAssignableFrom(((ScriptUserdata)par).ValueType);
     else
         return type.IsAssignableFrom(par.GetType());
 }
Example #6
0
 public static bool CanChangeType(ScriptObject par, Type type)
 {
     if (type == TYPE_OBJECT)
         return true;
     else if (type == TYPE_SBYTE || type == TYPE_BYTE || type == TYPE_SHORT || type == TYPE_USHORT || type == TYPE_INT || type == TYPE_UINT ||
             type == TYPE_FLOAT || type == TYPE_DOUBLE || type == TYPE_DECIMAL || type == TYPE_LONG)
         return par is ScriptNumber;
     else if (type == TYPE_BOOL)
         return par is ScriptBoolean;
     else if (type.GetTypeInfo().IsEnum)
         return par is ScriptEnum && ((ScriptEnum)par).EnumType == type;
     else if (par is ScriptNull)
         return true;
     else if (type == TYPE_STRING)
         return par is ScriptString;
     else if (type == TYPE_TYPE)
         return par is ScriptUserdata;
     else if (TYPE_DELEGATE.GetTypeInfo().IsAssignableFrom(type))
         return (par is ScriptFunction) || (par is ScriptUserdata && (par as ScriptUserdata).ValueType == type);
     else if (par is ScriptUserdata)
         return type.GetTypeInfo().IsAssignableFrom(((ScriptUserdata)par).ValueType);
     else
         return type.GetTypeInfo().IsAssignableFrom(par.GetType());
 }