예제 #1
0
        /// <summary>
        /// Creates a FREObject
        /// </summary>
        /// <param name="value"></param>
        /// <param name="className">Name of the Class</param>
        /// <param name="args">Arguments to pass to the Class</param>
        /// <returns></returns>
        public static FREObject Init(this FREObject value, string className, params object[] args)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();

            if (args != null)
            {
                for (var i = 0; i < args.Length; i++)
                {
                    argsArr.Add(args.ElementAt(i));
                }
            }

            var rawValue = FreSharpHelper.Core.getFREObject(className, FreSharpHelper.ArgsToArgv(argsArr),
                                                            FreSharpHelper.GetArgsC(argsArr), ref resultPtr);
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(rawValue);
            }

            FreSharpHelper.ThrowFreException(status, "cannot create class " + className, rawValue);
            return(FREObject.Zero);
        }
예제 #2
0
        /// <summary>
        /// Calls a method on a FREObject
        /// </summary>
        /// <param name="inFre"></param>
        /// <param name="method">The method name</param>
        /// <param name="args">Arguments to pass to the method</param>
        /// <returns></returns>
        public static FREObject Call(this FREObject inFre, string method, params object[] args)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();

            if (args != null)
            {
                for (var i = 0; i < args.Length; i++)
                {
                    argsArr.Add(args.ElementAt(i));
                }
            }

            var ret = FreSharpHelper.Core.callMethod(inFre, method, FreSharpHelper.ArgsToArgv(argsArr),
                                                     FreSharpHelper.GetArgsC(argsArr), ref resultPtr);

            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(ret);
            }

            FreSharpHelper.ThrowFreException(status, "cannot call method " + method, ret);
            return(FREObject.Zero);
        }
예제 #3
0
        /// <summary>
        /// Calls a method on a FREArray
        /// </summary>
        /// <param name="inFre"></param>
        /// <param name="methodName">The method name</param>
        /// <param name="args">Arguments to pass to the method</param>
        /// <returns></returns>
        public static FREArray Call(this FREObject inFre, string methodName, ArrayList args)
        {
            uint resultPtr = 0;
            var  ret       = new FREArray(FreSharpHelper.Core.callMethod(inFre, methodName,
                                                                         FreSharpHelper.ArgsToArgv(args), FreSharpHelper.GetArgsC(args), ref resultPtr));
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(ret);
            }

            FreSharpHelper.ThrowFreException(status, "cannot call method " + methodName, ret.RawValue);
            return(null);
        }
예제 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="value"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static FREObject Init(this FREObject value, string name)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();
            var  rawValue  = FreSharpHelper.Core.getFREObject(name, FreSharpHelper.ArgsToArgv(argsArr),
                                                              FreSharpHelper.GetArgsC(argsArr), ref resultPtr);
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(rawValue);
            }
            FreSharpHelper.ThrowFreException(status, "cannot create class " + name, rawValue);
            return(FREObject.Zero);
        }