Exemplo n.º 1
0
        /// <summary>
        /// Creates the <see cref="OracleParameter"/> for the return value
        /// </summary>
        /// <typeparam name="T">The expected type to be returned</typeparam>
        /// <param name="cmd">The oracle command to add the parameter to</param>
        /// <returns>The return oracle parameter</returns>
        private OracleParameter CreateReturnParameter <T>(OracleCommand cmd)
        {
            var ret = ParamHandler.CreateReturnParam <T>();

            cmd.Parameters.Add(ret);
            return(ret);
        }
Exemplo n.º 2
0
 public CreateWindows()
 {
     InitializeComponent();
     this.Closing += CreateWindows_Closing;
     ports         = new PortList();
     this.listPort.ItemsSource = ports;
     //初始化参数
     Settings = new List <Setting>();
     //读取配置文件
     if (ConfigurationManager.AppSettings.AllKeys.Contains("mode"))
     {
         Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
         string        config        = configuration.AppSettings.Settings["mode"].Value.ToString();
         var           cfgs          = config.Split(';');
         foreach (var cfg in cfgs)
         {
             var     cs      = cfg.Split(',');
             Setting setting = new Setting()
             {
                 VarName   = cs[0],
                 VarValue  = cs[1],
                 VarHandle = cs[2]
             };
             Settings.Add(setting);
         }
     }
     else
     {
         ParamHandler.Save2Conf("mode", "默认配置,1.25,no");
         Settings.Add(DefaultSetting);
     }
     //下拉框绑定数据源
     cbSet.ItemsSource  = Settings;
     cbSet.SelectedItem = Settings.Where(p => p.VarName.Equals("默认配置")).FirstOrDefault();
 }
Exemplo n.º 3
0
        public void Add(ParamHandler handler, params object[] param)
        {
            Handler hd = new Handler(handler, param);

            if (!this.RunHandler(hd))
            {
                lock (this.handlers)
                    this.handlers.Add(hd);
            }
        }
Exemplo n.º 4
0
 public bool Contains(ParamHandler handler)
 {
     lock (this.handlers)
     {
         for (int i = 0; i < this.handlers.Count; i++)
         {
             if (this.handlers[i].handler == handler)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemplo n.º 5
0
        /// <summary>
        /// Executes an Oracle Function
        /// </summary>
        /// <typeparam name="T">The espected result of the oracle function</typeparam>
        /// <param name="function">The function to execute, which follows this format: schema.function or schema.package.function</param>
        /// <param name="parameters">The parameters of the function  whether IN, OUT or IN OUT</param>
        /// <remarks>The OUT and IN OUT parameters get their values set by this method</remarks>
        /// <returns>The result of the execution and containing the return value if it is successful</returns>
        protected T ExecuteFunction <T>(string function, params Param[] parameters)
        {
            using (var cmd = CreateCommandAndOpenConnection(function, CommandType.StoredProcedure))
            {
                var ret = CreateReturnParameter <T>(cmd);

                ExecuteInner(cmd, parameters);

                try
                {
                    return(ParamHandler.ConvertOracleParameterToBaseType <T>(ret));
                }
                catch (Exception ex)
                {
                    throw new Exception($"Error converting the return value to type {typeof(T).Name} " +
                                        $"in function {function}. See inner exception for details", ex);
                }
            }
        }
Exemplo n.º 6
0
//    public string RecursivelyGetParam(Type type)
//    {
//        if (type.IsByRef)
//        {
//            return RecursivelyGetParam(type.GetElementType());
//        }
//        if (!type.IsArray)
//        {
//
//        }
//    }
    // Editor only
    public static ParamHandler Get_ParamHandler(Type type, int paramIndex, bool isRef, bool isOut)
    {
        var ph = new ParamHandler();

        ph.argName = "arg" + paramIndex;

        if (IsDelegateDerived(type))
        {
            Debug.LogError("Delegate derived class should not get here");
            return(ph);
        }

        bool bTOrContainsT = type.IsGenericParameter || type.ContainsGenericParameters;

        string typeFullName;

        if (bTOrContainsT)
        {
            typeFullName = "object";
        }
        else
        {
            typeFullName = JSNameMgr.GetTypeFullName(type);
        }

        if (type.IsArray)
        {
            ph.getter = new StringBuilder()
                        .AppendFormat("{0} {1} = {2};", typeFullName, ph.argName, arrayExchange.Get_GetParam(type))
                        .ToString();
        }
        else
        {
            if (isRef || isOut)
            {
                type = type.GetElementType();
            }
            string keyword = GetMetatypeKeyword(type);
            if (keyword == string.Empty)
            {
                Debug.LogError("keyword is empty: " + type.Name);
                return(ph);
            }

            if (isOut)
            {
                ph.getter = new StringBuilder()
                            .AppendFormat("int r_arg{0} = JSApi.incArgIndex();\n", paramIndex)
                            .AppendFormat("        {0} {1}{2};", typeFullName, ph.argName, bTOrContainsT ? " = null" : "")
                            .ToString();
            }
            else if (isRef)
            {
                ph.getter = new StringBuilder()
                            .AppendFormat("int r_arg{0} = JSApi.getArgIndex();\n", paramIndex)
                            .AppendFormat("{0} {1} = ({0}){2}((int)JSApi.GetType.ArgRef);", typeFullName, ph.argName, keyword)
                            .ToString();
            }
            else
            {
                ph.getter = new StringBuilder()
                            .AppendFormat("{0} {1} = ({0}){2}((int)JSApi.GetType.Arg);", typeFullName, ph.argName, keyword)
                            .ToString();
            }

            if (isOut || isRef)
            {
                var _sb = new StringBuilder();
                if (bTOrContainsT)
                {
                    // TODO
                    // sorry, 'arr_t' is written in CSGenerator2.cs
                    _sb.AppendFormat("        {0} = arr_t[{1}];\n", ph.argName, paramIndex);
                }

                ph.updater = _sb.AppendFormat("        JSApi.setArgIndex(r_arg{0});\n", paramIndex)
                             .AppendFormat("        {0}((int)JSApi.SetType.ArgRef, {1});\n", keyword.Replace("get", "set"),
                                           ph.argName)
                             .ToString();
            }
        }
        return(ph);
    }
    //    public string RecursivelyGetParam(Type type)
    //    {
    //        if (type.IsByRef)
    //        {
    //            return RecursivelyGetParam(type.GetElementType());
    //        }
    //        if (!type.IsArray)
    //        {
    //
    //        }
    //    }
    // Editor only
    public static ParamHandler Get_ParamHandler(Type type, int paramIndex, bool isRef, bool isOut)
    {
        ParamHandler ph = new ParamHandler();
        ph.argName = "arg" + paramIndex.ToString();

        if (IsDelegateDerived(type))
        {
            Debug.LogError("Delegate derived class should not get here");
            return ph;
        }

        bool bTOrContainsT = (type.IsGenericParameter || type.ContainsGenericParameters);

        string typeFullName;
        if (bTOrContainsT)
            typeFullName = "object";
        else
            typeFullName = JSNameMgr.GetTypeFullName(type);

        if (type.IsArray)
        {
            ph.getter = new StringBuilder()
                .AppendFormat("{0} {1} = {2};", typeFullName, ph.argName, arrayExchange.Get_GetParam(type))
                .ToString();
        }
        else
        {
            if (isRef || isOut)
            {
                type = type.GetElementType();
            }
            string keyword = GetMetatypeKeyword(type);
            if (keyword == string.Empty)
            {
                Debug.LogError("keyword is empty: " + type.Name);
                return ph;
            }

            if (isOut)
            {
                ph.getter = new StringBuilder()
                    .AppendFormat("int r_arg{0} = JSApi.incArgIndex();\n", paramIndex)
                    .AppendFormat("        {0} {1}{2};", typeFullName, ph.argName, bTOrContainsT ? " = null" : "")
                    .ToString();
            }
            else if (isRef)
            {
                ph.getter = new StringBuilder()
                    .AppendFormat("int r_arg{0} = JSApi.getArgIndex();\n", paramIndex)
                    .AppendFormat("{0} {1} = ({0}){2}((int)JSApi.GetType.ArgRef);", typeFullName, ph.argName, keyword)
                    .ToString();
            }
            else
            {
                ph.getter = new StringBuilder()
                    .AppendFormat("{0} {1} = ({0}){2}((int)JSApi.GetType.Arg);", typeFullName, ph.argName, keyword)
                    .ToString();
            }

            if (isOut)
            {
                var _sb = new StringBuilder();
                if (bTOrContainsT)
                {
                    // TODO
                    // sorry, 'arr_t' is written in CSGenerator2.cs
                    _sb.AppendFormat("        {0} = arr_t[{1}];\n", ph.argName, paramIndex);
                }

                ph.updater = _sb.AppendFormat("        JSApi.setArgIndex(r_arg{0});\n", paramIndex)
                    .AppendFormat("        {0}((int)JSApi.SetType.ArgRef, {1});\n", keyword.Replace("get", "set"), ph.argName)
                    .ToString();
            }
        }
        return ph;
    }
Exemplo n.º 8
0
        // Editor only
        public static ParamHandler Get_ParamHandler(Type type, int paramIndex, bool isRef, bool isOut)
        {
            ParamHandler ph = new ParamHandler();

            ph.argName = "arg" + paramIndex.ToString();

            if (IsDelegateDerived(type))
            {
                Debug.LogError("Delegate derived class should not get here");
                return(ph);
            }

            bool bTOrContainsT = (type.IsGenericParameter || type.ContainsGenericParameters);

            string typeFullName;

            if (bTOrContainsT)
            {
                typeFullName = "object";
            }
            else
            {
                typeFullName = JSNameMgr.CsFullName(type);
            }

            if (isRef || isOut)
            {
                type = type.GetElementType();
            }
            if (type.IsArray)
            {
                ph.getter = new TextFile()
                            .Add("{0} {1} = ", typeFullName, ph.argName)
                            .In()
                            .Add(arrayExchange.Get_GetParam(type).Ch)
                            .Out()
                            .Add(";");
            }
            else
            {
                bool   needCast;
                string keyword = GetMetatypeKeyword(type, out needCast);
                if (keyword == string.Empty)
                {
                    Debug.LogError("keyword is empty: " + type.Name);
                    return(ph);
                }

                if (isOut)
                {
                    ph.getter = new TextFile()
                                .Add("int r_arg{0} = JSApi.incArgIndex();", paramIndex)
                                .Add("{0} {1}{2};", typeFullName, ph.argName, bTOrContainsT ? " = null" : "");
                }
                else if (isRef)
                {
                    ph.getter = new TextFile()
                                .Add("int r_arg{0} = JSApi.getArgIndex();", paramIndex)
                                .Add("{0} {1} = ({0}){2}((int)JSApi.GetType.ArgRef);", typeFullName, ph.argName, keyword);
                }
                else
                {
                    if (needCast)
                    {
                        ph.getter = new TextFile()
                                    .Add("{0} {1} = ({0}){2}((int)JSApi.GetType.Arg);", typeFullName, ph.argName, keyword);
                    }
                    else
                    {
                        ph.getter = new TextFile()
                                    .Add("{0} {1} = {2}((int)JSApi.GetType.Arg);", typeFullName, ph.argName, keyword);
                    }
                }

                if (isOut || isRef)
                {
                    TextFile tf = new TextFile();
                    if (bTOrContainsT)
                    {
                        // TODO
                        // sorry, 'arr_t' is written in CSGenerator2.cs
                        tf.Add("{0} = arr_t[{1}];", ph.argName, paramIndex);
                    }

                    tf.Add("JSApi.setArgIndex(r_arg{0});", paramIndex)
                    .Add("{0}((int)JSApi.SetType.ArgRef, {1});", keyword.Replace("get", "set"), ph.argName);

                    ph.updater = tf;
                }
            }
            return(ph);
        }
Exemplo n.º 9
0
 public static void Run(ParamHandler handler, params object[] param)
 {
     Instance.Add(handler, param);
 }
Exemplo n.º 10
0
 public Handler(ParamHandler handler, object[] param)
 {
     this.handler = handler;
     this.param   = param;
 }