예제 #1
0
        private static IEnumerable <MethodParam> GetMethodParams(Object[] parameters)
        {
            var methodParams = new MethodParam[parameters.Length];

            for (int i = 0; i < parameters.Length; i++)
            {
                var paramType  = parameters[i].GetType();
                var paramValue = parameters[i];

                var methodParam = new MethodParam
                {
                    TypeName   = paramType.FullName,
                    ParamValue = paramValue
                };

                methodParams[i] = methodParam;
            }
            return(methodParams);
        }
예제 #2
0
        public override IQueryElement VisitMethod_param([NotNull] QueryGrammarParser.Method_paramContext context)
        {
            MethodParam param = new MethodParam();

            param.Name = context.NAME().GetText();

            IQueryElement dateType = Visit(context.dataType());

            param.Add(dateType);

            if (context.K_OUT() != null)
            {
                param.Direction = ParameterDirection.OUT;
            }
            else
            {
                param.Direction = ParameterDirection.IN;
            }

            return(param);
        }
        public IEnumerable <ManagedFolder> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new Dictionary <string, ManagedFolder>();

            var query = this.GetManagedFoldersQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components.Values.ToList());
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var managedFolder = new ManagedFolder
                        {
                            Name  = (reader["Name"] as string).Trim(),
                            Title = (reader["Title"] as string).Trim()
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            managedFolder.State = ComponentState.Active;
                        }
                        else
                        {
                            managedFolder.State = ComponentState.Closed;
                        }

                        if (reader["SearchDescription"] is byte[] searchDescriptionRawData)
                        {
                            var searchDescriptionDfm = Encoding.GetEncoding(1251).GetString(searchDescriptionRawData);
                            if (!string.IsNullOrWhiteSpace(searchDescriptionDfm))
                            {
                                managedFolder.SearchDescription = SearchDescriptionParser.Parse(searchDescriptionDfm);
                            }
                        }

                        components.Add(managedFolder.Name, managedFolder);
                    }
                }
            }

            query = this.GetMethodsQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var managedFolderName = reader["ManagedFolderName"] as string;
                            if (!components.TryGetValue(managedFolderName, out ManagedFolder managedFolder))
                            {
                                continue;
                            }

                            var method = new Method {
                                Name = reader["Name"] as string
                            };

                            if (reader["CalculationText"] is byte[] calculationValue)
                            {
                                method.CalculationText = Encoding.GetEncoding(1251).GetString(calculationValue);
                            }
                            else
                            {
                                method.CalculationText = string.Empty;
                            }

                            managedFolder.Methods.Add(method);
                        }
                    }
                }
            }

            query = this.GetMethodParamsQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var managedFolderName = reader["ManagedFolderName"] as string;
                            if (!components.TryGetValue(managedFolderName, out ManagedFolder managedFolder))
                            {
                                continue;
                            }

                            var methodName = reader["MethodName"] as string;
                            var method     = managedFolder.Methods
                                             .FirstOrDefault(m => m.Name == methodName);
                            if (method == null)
                            {
                                continue;
                            }

                            var parameter = new MethodParam
                            {
                                Number = (int)reader["Number"],
                                Name   = reader["Name"] as string
                            };

                            var typeValue = reader["Type"] as string;
                            if (TypeValues.TryGetValue(typeValue, out MethodParamType methodParamType))
                            {
                                parameter.Type = methodParamType;
                            }
                            parameter.DefaultValue    = reader["DefaultValue"] as string;
                            parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue);

                            method.Params.Add(parameter);
                        }
                    }
                }
            }

            query = this.GetActionQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var managedFolderName = reader["ManagedFolderName"] as string;
                            if (!components.TryGetValue(managedFolderName, out ManagedFolder managedFolder))
                            {
                                continue;
                            }

                            var action = new ActionWithHandler {
                                Name = reader["Name"] as string
                            };

                            var methodName       = reader["MethodName"] as string;
                            var executionHandler = managedFolder.Methods.FirstOrDefault(m => m.Name == methodName);
                            if (executionHandler != null)
                            {
                                action.ExecutionHandler = executionHandler;
                            }
                            else
                            {
                                action.CalculationText = string.Empty;
                            }

                            managedFolder.Actions.Add(action);
                        }
                    }
                }
            }

            return(components.Values.ToList());
        }
예제 #4
0
        public IEnumerable <ReferenceType> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new Dictionary <string, ReferenceType>();
            var query      = this.GetReferenceTypeQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components.Values.ToList());
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var referenceType = new ReferenceType
                        {
                            Name  = reader["Name"] as string,
                            Title = reader["Title"] as string
                        };

                        if (reader["State"] is string stateValue &&
                            StateValues.ContainsKey(stateValue))
                        {
                            referenceType.State = StateValues[stateValue];
                        }

                        if (reader["NumerationMethod"] is string numerationMethodValue &&
                            NumerationMethodValues.ContainsKey(numerationMethodValue))
                        {
                            referenceType.NumerationMethod = NumerationMethodValues[numerationMethodValue];
                        }

                        if (reader["DisplayRequisite"] is string displayRequisiteValue &&
                            DisplayRequisiteValues.ContainsKey(displayRequisiteValue))
                        {
                            referenceType.DisplayRequisite = DisplayRequisiteValues[displayRequisiteValue];
                        }

                        referenceType.LeadingReference     = reader["LeadingReference"] as string;
                        referenceType.HasLongRecordNames   = YesValue.Equals(reader["HasLongRecordNames"] as string);
                        referenceType.HasUniqueRecordNames = YesValue.Equals(reader["HasUniqueRecordNames"] as string);

                        var eventsValue = reader["Events"] as string;
                        if (!string.IsNullOrEmpty(eventsValue))
                        {
                            var events = EventTextParser.Parse(eventsValue);
                            foreach (var @event in events)
                            {
                                referenceType.Events.Add(@event);
                            }
                        }

                        components.Add(referenceType.Name, referenceType);
                    }
                }
            }

            query = this.GetMethodsQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var referenceTypeName = reader["ReferenceTypeName"] as string;
                            if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType))
                            {
                                continue;
                            }

                            var method = new Method
                            {
                                Name            = reader["Name"] as string,
                                CalculationText = reader["CalculationText"] as string ?? string.Empty
                            };

                            referenceType.Methods.Add(method);
                        }
                    }
                }
            }

            query = this.GetMethodParamsQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var referenceTypeName = reader["ReferenceTypeName"] as string;
                            if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType))
                            {
                                continue;
                            }

                            var methodName = reader["MethodName"] as string;
                            var method     = referenceType.Methods
                                             .FirstOrDefault(m => m.Name == methodName);
                            if (method == null)
                            {
                                continue;
                            }

                            var parameter = new MethodParam
                            {
                                Number = (int)reader["Number"],
                                Name   = reader["Name"] as string
                            };

                            var typeValue = reader["Type"] as string;
                            if (TypeValues.TryGetValue(typeValue, out MethodParamType methodParamType))
                            {
                                parameter.Type = methodParamType;
                            }
                            parameter.DefaultValue    = reader["DefaultValue"] as string;
                            parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue);

                            method.Params.Add(parameter);
                        }
                    }
                }
            }

            query = this.GetActionQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var referenceTypeName = reader["ReferenceTypeName"] as string;
                            if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType))
                            {
                                continue;
                            }

                            var action = new ActionWithHandler {
                                Name = reader["Name"] as string
                            };

                            var calculationText  = reader["CalculationText"] as string;
                            var executionHandler = referenceType.Methods
                                                   .FirstOrDefault(m => m.Name == calculationText);
                            if (executionHandler != null)
                            {
                                action.ExecutionHandler = executionHandler;
                            }
                            else
                            {
                                action.CalculationText = calculationText ?? string.Empty;
                            }

                            referenceType.Actions.Add(action);
                        }
                    }
                }
            }

            query = this.GetRequisiteQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var referenceTypeName = reader["ReferenceTypeName"] as string;
                            if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType))
                            {
                                continue;
                            }

                            var cardRequisite = new CardRequisite {
                                Number = (int)reader["Number"]
                            };

                            if (reader["Section"] is string sectionValue &&
                                RequisiteSectionValues.ContainsKey(sectionValue))
                            {
                                cardRequisite.Section = RequisiteSectionValues[sectionValue];
                            }

                            cardRequisite.Name       = reader["Name"] as string;
                            cardRequisite.IsRequired = RuYesValue.Equals(reader["IsRequired"] as string);
                            cardRequisite.IsFilter   = RuYesValue.Equals(reader["IsFilter"] as string);
                            cardRequisite.IsLeading  = RuYesValue.Equals(reader["IsLeading"] as string);
                            cardRequisite.IsControl  = RuYesValue.Equals(reader["IsControl"] as string);

                            var changeEventValue = reader["ChangeEvent"] as string;
                            if (!string.IsNullOrEmpty(changeEventValue))
                            {
                                var @event = new Event
                                {
                                    EventType       = EventType.Change,
                                    CalculationText = changeEventValue
                                };
                                cardRequisite.Events.Add(@event);
                            }

                            var selectEventsValue = reader["SelectEvents"] as string;
                            if (!string.IsNullOrEmpty(selectEventsValue))
                            {
                                var events = EventTextParser.Parse(selectEventsValue);
                                foreach (var @event in events)
                                {
                                    if (@event.EventType == EventType.Unknown)
                                    {
                                        @event.EventType = EventType.Select;
                                    }
                                    cardRequisite.Events.Add(@event);
                                }
                            }

                            referenceType.Requisites.Add(cardRequisite);
                        }
                    }
                }
            }

            query = this.GetViewQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var referenceTypeName = reader["ReferenceTypeName"] as string;
                            if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType))
                            {
                                continue;
                            }

                            var view = new View
                            {
                                Name     = reader["Name"] as string,
                                IsMain   = RuYesValue.Equals(reader["IsMain"] as string),
                                ListForm = reader["ListForm"] as string,
                                CardForm = reader["CardForm"] as string
                            };
                            referenceType.Views.Add(view);

                            referenceType.Views.Add(view);
                        }
                    }
                }
            }

            return(components.Values.ToList());
        }
예제 #5
0
 public TableValuedFunction(string name, MethodParam[] parameters)
     : base(name, parameters)
 {
 }
        private static void ReadMethodsParameters(ComponentModel model, ReferenceType entity)
        {
            if (model.DetailDataSets?.DetailDataSet8 == null)
            {
                return;
            }

            foreach (var paramModel in model.DetailDataSets.DetailDataSet8.Rows)
            {
                var parameter = new MethodParam();

                var methodNameReq = paramModel.Requisites
                                    .FirstOrDefault(r => r.Code == MethodParamMethodNameReqName);
                if (methodNameReq == null)
                {
                    continue;
                }

                var methodName = methodNameReq.Value;
                var method     = entity.Methods
                                 .FirstOrDefault(m => m.Name.Equals(methodName, StringComparison.OrdinalIgnoreCase));
                if (method == null)
                {
                    continue;
                }

                var paramNumberReq = paramModel.Requisites
                                     .FirstOrDefault(r => r.Code == MethodParamNumberReqName);
                if (paramNumberReq != null)
                {
                    parameter.Number = int.Parse(paramNumberReq.Value);
                }

                var paramNameReq = paramModel.Requisites
                                   .FirstOrDefault(r => r.Code == MethodParamNameReqName);
                if (paramNameReq != null)
                {
                    parameter.Name = paramNameReq.Value;
                }

                var paramTypeReq = paramModel.Requisites
                                   .FirstOrDefault(r => r.Code == MethodParamTypeReqName);
                if (paramTypeReq != null)
                {
                    switch (paramTypeReq.ValueLocalizeID)
                    {
                    case VariantArgumentType:
                        parameter.Type = MethodParamType.Variant;
                        break;

                    case DateArgumentType:
                        parameter.Type = MethodParamType.Date;
                        break;

                    case FloatArgumentType:
                        parameter.Type = MethodParamType.Float;
                        break;

                    case BooleanArgumentType:
                        parameter.Type = MethodParamType.Boolean;
                        break;

                    case StringArgumentType:
                        parameter.Type = MethodParamType.String;
                        break;

                    case IntegerArgumentType:
                        parameter.Type = MethodParamType.Integer;
                        break;
                    }
                }

                var paramDefaultValueReq = paramModel.Requisites
                                           .FirstOrDefault(r => r.Code == MethodParamDefaultValueReqName);
                if (paramDefaultValueReq != null)
                {
                    parameter.DefaultValue = paramDefaultValueReq.Value;
                }
                parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue);

                method.Params.Add(parameter);
            }
        }
예제 #7
0
        protected DataEventArgs Call(string name, string methodname, string code, dynamic parameters, ref bool keeplive)
        {
            long contentleng = 0;

            LastParam = parameters.ToString();
            _log.Error(parameters.ToString());
            LastRunTime = DateTime.Now;
            LastMethod  = methodname;

            DataEventArgs ea = new DataEventArgs();

            taskId++;
            ea.TaskId = taskId;
            if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(code))
            {
                ea.StatusCode = StatusCode.NoExit;
                ea.LastError  = "方法不存在";
                ea.Json       = "{\"responseCode\":" + (int)ea.StatusCode + ",\"responseMsg\":\"" + ea.LastError + "\"}";
                return(ea);
            }
            if (string.IsNullOrEmpty(methodname) && string.IsNullOrEmpty(code))
            {
                ea.StatusCode = StatusCode.NoExit;
                ea.LastError  = "方法不存在";
                ea.Json       = "{\"responseCode\":" + (int)ea.StatusCode + ",\"responseMsg\":\"" + ea.LastError + "\"}";
                return(ea);
            }
            MethodInfo method = null;
            string     keyvl  = code;

            if (string.IsNullOrEmpty(code))
            {
                #region 地址请求
                try
                {
                    lock (_memberInfos)
                    {
                        foreach (KeyValuePair <string, Tuple <string, MethodInfo, int, long> > kv in _memberInfos)
                        {
                            object[] clazz     = kv.Value.Item2.DeclaringType.GetCustomAttributes(typeof(Restful), true);
                            string   clazzpath = string.Empty;
                            if (clazz != null && clazz.Length > 0 && ((Restful)clazz[0]).Path != null)
                            {
                                if (((Restful)clazz[0]).Path != null)
                                {
                                    clazzpath = ((Restful)clazz[0]).Path.ToLower();
                                }
                            }

                            string clazzname = kv.Value.Item1.ToString().ToLower();
                            if (clazzname == name || (!string.IsNullOrEmpty(clazzpath) && clazzpath == name))
                            {
                                string   kvmethod = kv.Value.Item2.Name.ToLower();
                                string   path     = string.Empty;
                                object[] cattri   = kv.Value.Item2.GetCustomAttributes(typeof(Restful), true);
                                if (null != cattri && cattri.Length > 0)
                                {
                                    Restful rf = (Restful)cattri[0];
                                    if (rf.Path != null)
                                    {
                                        path     = rf.Path.ToLower();
                                        keeplive = rf.KeepAlive;
                                    }
                                }

                                if (kvmethod == methodname.ToLower() || (!string.IsNullOrEmpty(path) && path == methodname.ToLower()))
                                {
                                    List <object> param = new List <object>();

                                    try
                                    {
                                        foreach (ParameterInfo para in kv.Value.Item2.GetParameters())
                                        {
                                            param.Add(parameters[para.Name]);
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine(ex.Message);
                                        break;
                                    }
                                    parameters = param;
                                    int i = 0;
                                    foreach (ParameterInfo para in kv.Value.Item2.GetParameters())
                                    {
                                        object o = param[i];
                                        if (para.ParameterType.Name != o.GetType().Name)
                                        {
                                            break;
                                        }
                                        i++;
                                    }
                                    if (kv.Value.Item2.GetParameters().Length == param.Count)
                                    {
                                        keyvl  = kv.Key;
                                        name   = kv.Value.Item1;
                                        method = kv.Value.Item2;

                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.Error(ex);
                    Console.WriteLine(ex);
                }
                #endregion
            }

            else
            {
                List <object> _param = new List <object>();
                foreach (object o in parameters)
                {
                    _param.Add(o);
                }
                parameters = _param;
                if (_memberInfos.ContainsKey(code))
                {
                    name   = _memberInfos[code].Item1;
                    method = _memberInfos[code].Item2;
                }
                else
                {
                    ea.StatusCode = StatusCode.NoExit;
                    ea.LastError  = "方法不存在";
                    ea.Json       = "{\"responseCode\":" + (int)ea.StatusCode + ",\"responseMsg\":\"" + ea.LastError + "\"}";
                    return(ea);
                }
            }
            if (method == null)
            {
                ea.StatusCode = StatusCode.NoExit;
                ea.LastError  = "方法不存在";
                ea.Json       = "{\"responseCode\":" + (int)ea.StatusCode + ",\"responseMsg\":\"" + ea.LastError + "\"}";
                return(ea);
            }

            try
            {
                parameters = new MethodParam().CorrectParameters(method, parameters);
                object[] arrparam = parameters.ToArray();
                Object   bll      = ApplicationContext.GetObject(name);
                var      result   = method.Invoke(bll, arrparam);

                JsonSerializerSettings jsonsetting = new JsonSerializerSettings();
                jsonsetting.Formatting = Formatting.Indented;

                ea.StatusCode = StatusCode.Success;
                ea.Param      = new System.Collections.ArrayList();
                if (flagrpc)
                {
                    ea.Binary   = new JsonSerializer().ToBinary(result);
                    contentleng = ea.Binary.Buffer.LongLength;
                }
                else
                {
                    string data = JsonConvert.SerializeObject(result, jsonsetting);
                    contentleng = data.Length;
                    ea.Json     = "{\"responseCode\":" + (int)StatusCode.Success + ",\"responseMsg\":\"成功\",\"responseData\":" + data + "}";
                }
                for (int i = 0; i < arrparam.Length; i++)
                {
                    try
                    {
                        ea.Param.Add(arrparam[i]);
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex);
                    }
                }
                Console.WriteLine(ea.TaskId);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                _log.Error(ex);
                Console.WriteLine(ex);
                ea.LastError  = ex.InnerException.Message + "\r\n" + ex.Message;
                ea.StatusCode = StatusCode.Serious;
            }
            _memberInfos[keyvl] = new Tuple <string, MethodInfo, int, long>(_memberInfos[keyvl].Item1, _memberInfos[keyvl].Item2, _memberInfos[keyvl].Item3 + 1, _memberInfos[keyvl].Item3 + contentleng);
            return(ea);
        }
예제 #8
0
파일: CxxCode.cs 프로젝트: jbatonnet/ugly
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("#include \"");

            #line 6 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.CurrentFile.Name)));

            #line default
            #line hidden
            this.Write(".h\"\r\n#include <cstdio>");

            #line 7 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

            if (CxxHelper.Server)
            {
            #line default
            #line hidden
                this.Write("\r\n\r\nnamespace ugly\r\n{");

            #line 14 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                this.PushIndent("    ");
            }


            #line default
            #line hidden
            this.Write("\r\nnamespace ");

            #line 19 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.Namespace)));

            #line default
            #line hidden
            this.Write("\r\n{");

            #line 20 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

            foreach (GameClass c in CxxHelper.CurrentFile.Class)
            {
            #line default
            #line hidden
                this.Write("\r\n    ");

            #line 25 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("::");

            #line 25 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("()");

            #line 25 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                for (int i = 0; i < c.Member.Count; ++i)
                {
            #line default
            #line hidden
                    this.Write("\r\n        ");

            #line 30 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                    if (i == 0)
                    {
            #line default
            #line hidden
                        this.Write(":");

            #line 33 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write(",");

            #line 37 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Member[i].Name)));

            #line default
            #line hidden
                    this.Write("()");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n    { }\r\n        ");

            #line 44 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                foreach (ClassMethod m in c.Method)
                {
            #line default
            #line hidden
                    this.Write("\r\n    ");

            #line 49 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("bool");

            #line 52 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write("void");

            #line 56 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                    this.Write("::");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Name)));

            #line default
            #line hidden
                    this.Write("(");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("struct ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                        this.Write("& gameSetup, struct ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                        this.Write("& playerSetup, struct ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                        this.Write("& gameState, struct ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                        this.Write("& playerState, ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                    for (int idxParam = 0; idxParam < m.Param.Count; ++idxParam)
                    {
                        MethodParam a    = m.Param[idxParam];
                        BasicType   type = CxxHelper.Definition.GetBasicType(a.Type);
                        if (idxParam != 0)
                        {
            #line default
            #line hidden
                            this.Write(", ");

            #line 69 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }
                        if (type == BasicType.Class)
                        {
            #line default
            #line hidden
                            this.Write("const ");

            #line 73 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }
                        if (type.IsBasic())
                        {
            #line default
            #line hidden

            #line 77 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(type)));

            #line default
            #line hidden

            #line 77 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }
                        else
                        {
            #line default
            #line hidden

            #line 81 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(a.Type)));

            #line default
            #line hidden

            #line 81 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }
                        if (type == BasicType.Class)
                        {
            #line default
            #line hidden
                            this.Write("&");

            #line 85 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }


            #line default
            #line hidden
                        this.Write(" ");

            #line 87 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 87 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }


            #line default
            #line hidden
                    this.Write(")\r\n    {");

            #line 90 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("\r\n        return false;");

            #line 95 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write("        std::printf(\"");

            #line 100 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(m.MethodId));

            #line default
            #line hidden

            #line 100 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                        foreach (MethodParam a in m.Param)
                        {
                            BasicType type = CxxHelper.Definition.GetBasicType(a.Type);
                            if (type == BasicType.Class)
                            {
                                type = CxxHelper.Definition.GetBasicType(CxxHelper.Definition.Class[a.Type].IdMember.Type);
                            }


            #line default
            #line hidden
                            this.Write(" %");

            #line 106 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypePrinter(type)));

            #line default
            #line hidden

            #line 106 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }


            #line default
            #line hidden
                        this.Write("\\n\"");

            #line 108 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                        foreach (MethodParam a in m.Param)
                        {
                            BasicType type = CxxHelper.Definition.GetBasicType(a.Type);
                            if (type == BasicType.Class)
                            {
                                BasicType realType = CxxHelper.Definition.GetBasicType(CxxHelper.Definition.Class[a.Type].IdMember.Type);


            #line default
            #line hidden
                                this.Write(", ");

            #line 115 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                                if (realType == BasicType.Enum)
                                {
            #line default
            #line hidden
                                    this.Write("(int)");

            #line 118 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                }


            #line default
            #line hidden

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write(".");

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(CxxHelper.Definition.Class[a.Type].IdMember.Name)));

            #line default
            #line hidden

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            }
                            else if (type == BasicType.Enum)
                            {
            #line default
            #line hidden
                                this.Write(", (int)");

            #line 124 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 124 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            }
                            else
                            {
            #line default
            #line hidden
                                this.Write(", ");

            #line 128 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 128 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            }
                        }


            #line default
            #line hidden
                        this.Write(");");

            #line 131 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }

            #line default
            #line hidden
                    this.Write("\r\n    }");

            #line 134 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                }
                if (CxxHelper.Server)
                {
                    foreach (string m in c.ConditionMethod)
                    {
            #line default
            #line hidden
                        this.Write("\r\n\r\n    bool ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                        this.Write("::");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m)));

            #line default
            #line hidden
                        this.Write("(struct ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                        this.Write("& gameSetup, struct ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                        this.Write("& playerSetup, struct ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                        this.Write("& gameState, struct ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                        this.Write("& playerState)\r\n    {\r\n        return true;\r\n    }");

            #line 146 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                }
            }


            #line default
            #line hidden
            this.Write("\r\n}");

            #line 152 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

            if (CxxHelper.Server)
            {
                this.PopIndent();


            #line default
            #line hidden
                this.Write("\r\n}");

            #line 158 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
            }


            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
예제 #9
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("#pragma once\r\n#include <vector>\r\n#include <cstdint>");

            #line 8 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

            foreach (string d in CxxHelper.CurrentFile.Dependency)
            {
            #line default
            #line hidden
                this.Write("\r\n#include \"");

            #line 13 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(d)));

            #line default
            #line hidden
                this.Write(".h\"");

            #line 13 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            }
            if (CxxHelper.Server)
            {
            #line default
            #line hidden
                this.Write("\r\n\r\nnamespace ugly\r\n{");

            #line 21 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                this.PushIndent("    ");
            }


            #line default
            #line hidden
            this.Write("\r\nnamespace ");

            #line 26 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.Namespace)));

            #line default
            #line hidden
            this.Write("\r\n{");

            #line 27 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

            foreach (GameEnum e in CxxHelper.CurrentFile.Enum)
            {
            #line default
            #line hidden
                this.Write("\r\n    \r\n    enum class ");

            #line 33 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(e.Name)));

            #line default
            #line hidden
                this.Write("\r\n    {");

            #line 34 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                foreach (KeyValuePair <string, int> kvp in e.Value)
                {
            #line default
            #line hidden
                    this.Write("        \r\n        ");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(kvp.Key)));

            #line default
            #line hidden
                    this.Write(" = ");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(kvp.Value));

            #line default
            #line hidden
                    this.Write(",");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n    };");

            #line 43 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            }

            foreach (GameClass c in CxxHelper.CurrentFile.Class)
            {
            #line default
            #line hidden
                this.Write("\r\n\r\n    struct ");

            #line 51 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("\r\n    {");

            #line 52 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                foreach (ClassMember m in c.Member)
                {
            #line default
            #line hidden
                    this.Write("\r\n        ");

            #line 57 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                    for (int i = 0; i < m.Array; ++i)
                    {
            #line default
            #line hidden
                        this.Write("std::vector<");

            #line 60 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    BasicType type = CxxHelper.Definition.GetBasicType(m.Type);
                    if (type.IsBasic())
                    {
            #line default
            #line hidden

            #line 65 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(type)));

            #line default
            #line hidden

            #line 65 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    else
                    {
            #line default
            #line hidden

            #line 69 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Type)));

            #line default
            #line hidden

            #line 69 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    for (int i = 0; i < m.Array; ++i)
                    {
            #line default
            #line hidden
                        this.Write(">");

            #line 73 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 75 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(m.Name)));

            #line default
            #line hidden
                    this.Write(";");

            #line 75 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n\r\n        ");

            #line 80 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("();\r\n        ");

            #line 81 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                foreach (ClassMethod m in c.Method)
                {
                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("\r\n        bool");

            #line 88 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write("\r\n        void");

            #line 94 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 96 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Name)));

            #line default
            #line hidden
                    this.Write("(");

            #line 96 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("struct ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                        this.Write("& gameSetup, struct ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                        this.Write("& playerSetup, struct ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                        this.Write("& gameState, struct ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                        this.Write("& playerState, ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    for (int idxParam = 0; idxParam < m.Param.Count; ++idxParam)
                    {
                        MethodParam a    = m.Param[idxParam];
                        BasicType   type = CxxHelper.Definition.GetBasicType(a.Type);
                        if (idxParam != 0)
                        {
            #line default
            #line hidden
                            this.Write(", ");

            #line 107 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }
                        if (type == BasicType.Class)
                        {
            #line default
            #line hidden
                            this.Write("const ");

            #line 111 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }
                        if (type.IsBasic())
                        {
            #line default
            #line hidden

            #line 115 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(type)));

            #line default
            #line hidden

            #line 115 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }
                        else
                        {
            #line default
            #line hidden

            #line 119 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(a.Type)));

            #line default
            #line hidden

            #line 119 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }
                        if (type == BasicType.Class)
                        {
            #line default
            #line hidden
                            this.Write("&");

            #line 123 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }


            #line default
            #line hidden
                        this.Write(" ");

            #line 125 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 125 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write(");");

            #line 127 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                }
                if (CxxHelper.Server)
                {
                    if (c.ConditionMethod.Any())
                    {
            #line default
            #line hidden
                        this.Write("\r\n");

            #line 135 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    foreach (string m in c.ConditionMethod)
                    {
            #line default
            #line hidden
                        this.Write("\r\n        bool ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m)));

            #line default
            #line hidden
                        this.Write("(struct ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                        this.Write("& gameSetup, struct ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                        this.Write("& playerSetup, struct ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                        this.Write("& gameState, struct ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                        this.Write("& playerState);");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                }


            #line default
            #line hidden
                this.Write("\r\n    };");

            #line 146 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            }


            #line default
            #line hidden
            this.Write("\r\n}");

            #line 150 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

            if (CxxHelper.Server)
            {
                this.PopIndent();


            #line default
            #line hidden
                this.Write("\r\n}");

            #line 156 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            }


            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
예제 #10
0
파일: CsHeader.cs 프로젝트: jbatonnet/ugly
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("using System;\r\n\r\nnamespace ");

            #line 8 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CsHelper.Definition.Config.Namespace)));

            #line default
            #line hidden
            this.Write("\r\n{");

            #line 9 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

            foreach (GameEnum e in CsHelper.CurrentFile.Enum)
            {
            #line default
            #line hidden
                this.Write("\r\n    \r\n    public enum ");

            #line 15 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(e.Name)));

            #line default
            #line hidden
                this.Write("\r\n    {");

            #line 16 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                foreach (KeyValuePair <string, int> kvp in e.Value)
                {
            #line default
            #line hidden
                    this.Write("        \r\n        ");

            #line 21 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(kvp.Key)));

            #line default
            #line hidden
                    this.Write(" = ");

            #line 21 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(kvp.Value));

            #line default
            #line hidden
                    this.Write(",");

            #line 21 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n    }");

            #line 25 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
            }

            foreach (GameClass c in CsHelper.CurrentFile.Class)
            {
            #line default
            #line hidden
                this.Write("\r\n\r\n    public class ");

            #line 33 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("\r\n    {");

            #line 34 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                foreach (ClassMember m in c.Member)
                {
            #line default
            #line hidden
                    this.Write("\r\n        public ");

            #line 39 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                    BasicType type = CsHelper.Definition.GetBasicType(m.Type);
                    if (type.IsBasic())
                    {
            #line default
            #line hidden

            #line 43 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(CsHelper.GetBasicTypeName(type)));

            #line default
            #line hidden

            #line 43 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    }
                    else
                    {
            #line default
            #line hidden

            #line 47 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Type)));

            #line default
            #line hidden

            #line 47 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    }
                    if (m.Array != 0)
                    {
            #line default
            #line hidden
                        this.Write("[");

            #line 51 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                        for (int i = 1; i < m.Array; ++i)
                        {
            #line default
            #line hidden
                            this.Write(",");

            #line 54 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                        }


            #line default
            #line hidden
                        this.Write("]");

            #line 56 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 58 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Name)));

            #line default
            #line hidden
                    this.Write(";");

            #line 58 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n        ");

            #line 62 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                foreach (ClassMethod m in c.Method)
                {
            #line default
            #line hidden
                    this.Write("\r\n        public void ");

            #line 67 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Name)));

            #line default
            #line hidden
                    this.Write("(");

            #line 67 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                    for (int idxParam = 0; idxParam < m.Param.Count; ++idxParam)
                    {
                        MethodParam a    = m.Param[idxParam];
                        BasicType   type = CsHelper.Definition.GetBasicType(a.Type);
                        if (idxParam != 0)
                        {
            #line default
            #line hidden
                            this.Write(", ");

            #line 74 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                        }
                        if (type.IsBasic())
                        {
            #line default
            #line hidden

            #line 78 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(CsHelper.GetBasicTypeName(type)));

            #line default
            #line hidden

            #line 78 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                        }
                        else
                        {
            #line default
            #line hidden

            #line 82 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(a.Type)));

            #line default
            #line hidden

            #line 82 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                        }


            #line default
            #line hidden
                        this.Write(" ");

            #line 84 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 84 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write(")\r\n        {\r\n            Console.WriteLine(\"");

            #line 88 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(m.MethodId));

            #line default
            #line hidden

            #line 88 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                    for (int idxParam = 0; idxParam < m.Param.Count; ++idxParam)
                    {
            #line default
            #line hidden
                        this.Write(" {");

            #line 91 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(idxParam));

            #line default
            #line hidden
                        this.Write("}");

            #line 91 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write("\"");

            #line 93 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                    foreach (MethodParam a in m.Param)
                    {
            #line default
            #line hidden
                        this.Write(", ");

            #line 96 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                        BasicType type = CsHelper.Definition.GetBasicType(a.Type);
                        switch (type)
                        {
                        case BasicType.Bool:


            #line default
            #line hidden

            #line 101 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                            this.Write(" ? 1 : 0");

            #line 101 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                            break;

                        case BasicType.Char:
                        case BasicType.Enum:


            #line default
            #line hidden
                            this.Write("(int)");

            #line 105 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 105 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                            break;

                        case BasicType.Class:


            #line default
            #line hidden

            #line 108 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                            this.Write(".");

            #line 108 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CsHelper.Definition.Class[a.Type].IdMember.Name)));

            #line default
            #line hidden

            #line 108 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                            break;

                        default:


            #line default
            #line hidden

            #line 111 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 111 "D:\ugly\CodeGenerator\cs\CsHeader.tt"

                            break;
                        }
                    }


            #line default
            #line hidden
                    this.Write(");\r\n        }");

            #line 116 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n    }");

            #line 120 "D:\ugly\CodeGenerator\cs\CsHeader.tt"
            }


            #line default
            #line hidden
            this.Write("\r\n}");
            return(this.GenerationEnvironment.ToString());
        }
예제 #11
0
        public IEnumerable <Dialog> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new Dictionary <string, Dialog>();
            var query      = this.GetDialogQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components.Values.ToList());
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var dialog = new Dialog
                        {
                            Name     = reader["Name"] as string,
                            Title    = reader["Title"] as string,
                            CardForm = reader["CardForm"] as string
                        };

                        var eventsValue = reader["Events"] as string;
                        if (!string.IsNullOrEmpty(eventsValue))
                        {
                            var events = EventTextParser.Parse(eventsValue);
                            foreach (var @event in events)
                            {
                                dialog.Events.Add(@event);
                            }
                        }

                        components.Add(dialog.Name, dialog);
                    }
                }
            }

            query = this.GetMethodsQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var dialogName = reader["DialogName"] as string;
                            if (!components.TryGetValue(dialogName, out Dialog dialog))
                            {
                                continue;
                            }

                            var method = new Method
                            {
                                Name            = reader["Name"] as string,
                                CalculationText = reader["CalculationText"] as string ?? string.Empty
                            };

                            dialog.Methods.Add(method);
                        }
                    }
                }
            }

            query = this.GetMethodParamsQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var dialogName = reader["DialogName"] as string;
                            if (!components.TryGetValue(dialogName, out Dialog dialog))
                            {
                                continue;
                            }

                            var methodName = reader["MethodName"] as string;
                            var method     = dialog.Methods
                                             .FirstOrDefault(m => m.Name == methodName);
                            if (method == null)
                            {
                                continue;
                            }

                            var parameter = new MethodParam
                            {
                                Number = (int)reader["Number"],
                                Name   = reader["Name"] as string
                            };

                            var typeValue = reader["Type"] as string;
                            if (TypeValues.TryGetValue(typeValue, out MethodParamType methodParamType))
                            {
                                parameter.Type = methodParamType;
                            }
                            parameter.DefaultValue    = reader["DefaultValue"] as string;
                            parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue);

                            method.Params.Add(parameter);
                        }
                    }
                }
            }

            query = this.GetActionQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var dialogName = reader["DialogName"] as string;
                            if (!components.TryGetValue(dialogName, out Dialog dialog))
                            {
                                continue;
                            }

                            var action = new ActionWithHandler {
                                Name = reader["Name"] as string
                            };

                            var calculationText  = reader["CalculationText"] as string;
                            var executionHandler = dialog.Methods
                                                   .FirstOrDefault(m => m.Name == calculationText);
                            if (executionHandler != null)
                            {
                                action.ExecutionHandler = executionHandler;
                            }
                            else
                            {
                                action.CalculationText = calculationText ?? string.Empty;
                            }

                            dialog.Actions.Add(action);
                        }
                    }
                }
            }

            query = this.GetRequisiteQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var dialogName = reader["DialogName"] as string;
                            if (!components.TryGetValue(dialogName, out Dialog dialog))
                            {
                                continue;
                            }

                            var cardRequisite = new CardRequisite {
                                Number = (int)reader["Number"]
                            };

                            if (reader["Section"] is string sectionValue &&
                                RequisiteSectionValues.ContainsKey(sectionValue))
                            {
                                cardRequisite.Section = RequisiteSectionValues[sectionValue];
                            }

                            cardRequisite.Name                   = reader["Name"] as string;
                            cardRequisite.IsRequired             = YesValue.Equals(reader["IsRequired"] as string);
                            cardRequisite.IsLastValueSaved       = YesValue.Equals(reader["IsLastValueSaved"] as string);
                            cardRequisite.IsSelectionConstrained = YesValue.Equals(reader["IsSelectionConstrained"] as string);

                            var changeEventValue = reader["ChangeEvent"] as string;
                            if (!string.IsNullOrEmpty(changeEventValue))
                            {
                                var @event = new Event
                                {
                                    EventType       = EventType.Change,
                                    CalculationText = changeEventValue
                                };
                                cardRequisite.Events.Add(@event);
                            }

                            var selectEventsValue = reader["SelectEvents"] as string;
                            if (!string.IsNullOrEmpty(selectEventsValue))
                            {
                                var events = EventTextParser.Parse(selectEventsValue);
                                foreach (var @event in events)
                                {
                                    if (@event.EventType == EventType.Unknown)
                                    {
                                        @event.EventType = EventType.Select;
                                    }
                                    cardRequisite.Events.Add(@event);
                                }
                            }

                            dialog.Requisites.Add(cardRequisite);
                        }
                    }
                }
            }

            return(components.Values.ToList());
        }
예제 #12
0
 protected Function(string name, MethodParam[] parameters)
     : base(name, parameters)
 {
 }
        private void ReadMethods(RecordRefModel model, ManagedFolder entity, string componentFolderPath)
        {
            foreach (var methodNameRequisite in model.Requisites.Where(r => r.Name == "ISBMethodName"))
            {
                var method = new Method
                {
                    Name = methodNameRequisite.Value
                };
                var methodNumber        = methodNameRequisite.Number;
                var calculationFilePath = Path.Combine(componentFolderPath, "Actions", $"ISBMethodCalculation_{methodNumber}.isbl");
                if (File.Exists(calculationFilePath))
                {
                    method.CalculationText = File.ReadAllText(calculationFilePath, Encoding.GetEncoding(1251));
                }
                else
                {
                    log.Warn($"File not found {calculationFilePath}");
                    method.CalculationText = "";
                }

                var methodParamNumbers = model.Requisites
                                         .Where(r => r.Name == "ISBParamMethodName")
                                         .Where(r => r.Value == method.Name)
                                         .Select(r => r.Number);

                foreach (var methodParamNumber in methodParamNumbers)
                {
                    var methodParam = new MethodParam();

                    var methodParamNameReq = model.Requisites
                                             .Where(r => r.Name == "ISBParamName")
                                             .FirstOrDefault(r => r.Number == methodParamNumber);
                    if (methodParamNameReq != null)
                    {
                        methodParam.Name = methodParamNameReq.Value;
                    }

                    var methodParamNumberReq = model.Requisites
                                               .Where(r => r.Name == "ISBParamNumber")
                                               .FirstOrDefault(r => r.Number == methodParamNumber);
                    if (methodParamNumberReq != null)
                    {
                        methodParam.Number = int.Parse(methodParamNumberReq.Value);
                    }

                    var methodParamValueTypeReq = model.Requisites
                                                  .Where(r => r.Name == "ISBParamValueType")
                                                  .FirstOrDefault(r => r.Number == methodParamNumber);
                    if (methodParamValueTypeReq != null)
                    {
                        switch (methodParamValueTypeReq.Value)
                        {
                        case "Variant":
                            methodParam.Type = MethodParamType.Variant;
                            break;

                        case "Date":
                            methodParam.Type = MethodParamType.Date;
                            break;

                        case "Float":
                            methodParam.Type = MethodParamType.Float;
                            break;

                        case "Boolean":
                            methodParam.Type = MethodParamType.Boolean;
                            break;

                        case "String":
                            methodParam.Type = MethodParamType.String;
                            break;

                        case "Integer":
                            methodParam.Type = MethodParamType.Integer;
                            break;

                        default:
                            log.Warn($"Unknown type value \"{methodParamValueTypeReq.Value}\" for param \"{methodParam.Name}\" of managed folder \"{entity.Name}\"");
                            break;
                        }
                    }

                    var paramDefaultValueReq = model.Requisites
                                               .FirstOrDefault(r => r.Name == "ISBParamDefaultValue");
                    if (paramDefaultValueReq != null)
                    {
                        methodParam.DefaultValue = paramDefaultValueReq.Value;
                    }
                    methodParam.HasDefaultValue = !string.IsNullOrEmpty(methodParam.DefaultValue);

                    method.Params.Add(methodParam);
                }
                entity.Methods.Add(method);
            }
        }
예제 #14
0
 public Procedure( string name, MethodParam[] parameters )
     : base(name, parameters)
 {
 }