示例#1
0
        // CodeMapping Function
        public string LoadDynamicAssembly(int depth = 0)
        {
            var indentBuilder = new IndentStringBuilder(depth);

            foreach (string dllName in WPFCompiler.DynamicLibraries)
            {
                indentBuilder.AppendLine($"DynamicLoadDll(\"{dllName}\");");
            }

            return(indentBuilder.ToString());
        }
示例#2
0
        // CodeMapping Function
        public string WindowConstructor(int depth = 0)
        {
            var indentBuilder = new IndentStringBuilder(depth);

            if (Parameter.Option.TargetPlatform == Platform.Android)
            {
                indentBuilder.Append("this.SetAndroidStyle();");
            }

            return(indentBuilder.ToString());
        }
示例#3
0
        public virtual void AddFirst()
        {
            IndentStringBuilder orig = _sb;

            _sb = new IndentStringBuilder();

            Add();

            orig.sb.Insert(0, _sb.ToString());
            _sb = orig;
        }
示例#4
0
        private void ValidateModel(object sender, EventArgs args)
        {
            var codeFrm = new ShowCodeFrm();
            var model   = ModelManager.Instance().GetModel(this.FileId.Value);

            var module  = ModelManager.Instance().MakeSureParseModule(model.File);
            var builder = new IndentStringBuilder();

            ((ViewModelDB)module).Render(builder);
            codeFrm.SetText(builder.ToString());
            codeFrm.Show();
        }
示例#5
0
        public override void Trigger(EditableView.ClickPosition.Sources source, EditableView pnlView, Transaction transaction)
        {
            string file = FileDialog.ShowSave(FileDialog.Context.UserExport, "*.txt|*.txt");

            if (string.IsNullOrEmpty(file))
            {
                return;
            }
            IndentStringBuilder output = new IndentStringBuilder();

            CurrentDocument.WriteExportText(output);
            File.WriteAllText(file, output.ToString());
        }
示例#6
0
        // CodeMapping Function
        public string ComponentInitialize(int depth = 0)
        {
            var indentBuilder = new IndentStringBuilder(depth);

            try
            {
                foreach (var kv in this.Mapper.NameContainer)
                {
                    var    attr = kv.Value.GetAttribute <WPFAttribute>();
                    string name = kv.Key.Trim('_');

                    indentBuilder.AppendLine($"{name} = this.FindElement<{attr.Name}>(\"{name}\");");
                }

                logicCodes.Clear();
                logicCodes.AddRange(this.NativeGenerator.Generate().ToArray());

                if (logicCodes.Count > 0 && logicCodes[0].Length > 0)
                {
                    indentBuilder.AppendLine();
                    indentBuilder.AppendLine("// Event Handlers");

                    indentBuilder.AppendBlock(logicCodes[0]);
                }

                if (logicCodes.Count > 1 && logicCodes[1].Length > 0)
                {
                    indentBuilder.AppendLine();
                    indentBuilder.AppendLine();
                    indentBuilder.AppendLine("// Data Bindings");

                    indentBuilder.AppendBlock(logicCodes[1]);
                }

                if (logicCodes.Count > 2 && logicCodes[2].Length > 0)
                {
                    indentBuilder.AppendLine();
                    indentBuilder.AppendLine();
                    indentBuilder.AppendLine("// Template Setting");

                    indentBuilder.AppendBlock(logicCodes[2]);
                }
            }
            catch (System.Exception e)
            {
            }

            return(indentBuilder.ToString());
        }
示例#7
0
        public static void AddMethodHandlersClass(DefClass type, IndentStringBuilder sb)
        {
            if (!type.HasWrapType(WrapTypes.NativeDirector))
            {
                throw new Exception("Unexpected");
            }

            if (type.IsNested)
            {
                sb.AppendIndent("public: ");
            }
            else
            {
                sb.AppendIndent("public ");
            }

            sb.Append("ref class " + type.Name + " abstract sealed\n");
            sb.AppendLine("{");
            sb.AppendLine("public:");
            sb.IncreaseIndent();

            foreach (DefFunction f in type.PublicMethods)
            {
                if (f.IsDeclarableFunction && f.IsVirtual)
                {
                    //if (f.Parameters.Count > 0)
                    //{
                    //    AddEventArgsClass(f, sb);
                    //}

                    sb.AppendIndent("delegate static " + f.CLRTypeName + " " + f.CLRName + "Handler(");
                    for (int i = 0; i < f.Parameters.Count; i++)
                    {
                        DefParam param = f.Parameters[i];
                        sb.Append(" " + param.Type.GetCLRParamTypeName(param) + " " + param.Name);
                        if (i < f.Parameters.Count - 1)
                        {
                            sb.Append(",");
                        }
                    }
                    sb.Append(" );\n");
                }
            }

            sb.DecreaseIndent();
            sb.AppendLine("};");
            sb.AppendLine();
        }
示例#8
0
 public override void Add()
 {
     if (_t.IsInterface)
     {
         IndentStringBuilder tempsb = _sb;
         _sb = new IndentStringBuilder();
         base.Add();
         string fname = _t.FullCLRName.Replace(_t.CLRName, _t.Name);
         string res   = _sb.ToString().Replace(_t.FullCLRName + "::", fname + "::");
         _sb = tempsb;
         _sb.AppendLine(res);
     }
     else
     {
         base.Add();
     }
 }
示例#9
0
        public IncClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
            : base(wrapper, t, sb)
        {
            AddPreDeclarations();

            if (_t.BaseClass != null)
            {
                AddTypeDependancy(_t.BaseClass);
            }

            if (AllowSubclassing)
            {
                _wrapper.PreClassProducers.Add(new NativeProtectedTypesProxy(_wrapper, _t, _sb));
                _wrapper.PostClassProducers.Add(new NativeProtectedStaticsProxy(_wrapper, _t, _sb));
                //_wrapper.PreClassProducers.Add(new IncNativeProtectedTypesProxy(_wrapper, _t, _sb));
            }
        }
示例#10
0
        public ClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
        {
            this._wrapper = wrapper;
            this._t       = t;
            this._sb      = sb;

            foreach (DefClass iface in _t.GetInterfaces())
            {
                AddTypeDependancy(iface);
                _interfaces.Add(iface);
            }

            if (_t.IsInterface)
            {
                // Declaring an overridable class for interface
                _interfaces.Add(_t);
            }
        }
示例#11
0
        protected virtual void RenderView(IndentStringBuilder builder, T_Field f, AssignOperatorInfo?op, IndentStringBuilder rightBuilder)
        {
            var p = "";

            if (rightBuilder != null)
            {
                p = rightBuilder.ToString();
            }

            //builder.AppendFormat(".{0}({1})", f.Name, p);

            builder.AppendFormat(".{0}", f.Name);

            if (op.HasValue)
            {
                builder.AppendFormat("{0}{1}", op.Value.GetDescription(), rightBuilder.ToString());
            }
        }
示例#12
0
        // CodeMapping Function
        public string GlobalVariableDefine()
        {
            var indentBuilder = new IndentStringBuilder(2);

            for (int i = 0; i < this.Mapper.NameContainer.Count; i++)
            {
                var kv   = this.Mapper.NameContainer.ElementAt(i);
                var attr = kv.Value.GetAttribute <WPFAttribute>();

                indentBuilder.Append($"private {attr.Name} {kv.Key.Trim('_')};");

                if (i < this.Mapper.NameContainer.Count - 1)
                {
                    indentBuilder.AppendLine();
                }
            }

            return(indentBuilder.ToString());
        }
示例#13
0
        private void ValidateModel(object sender, EventArgs args)
        {
            var codeFrm = new ShowCodeFrm();
            var model   = ModelManager.Instance().GetModel(this.FileId.Value);

            var module = ModelManager.Instance().MakeSureParseModule(model.File);

            if (module == null)
            {
                System.Windows.Forms.MessageBox.Show("模块还未生成");
                return;
            }

            var builder = new IndentStringBuilder();

            ((WorkflowDB)module).Render(builder);
            codeFrm.SetText(builder.ToString());
            codeFrm.Show();
        }
示例#14
0
        private void Mnu_GenerateDBCode(object sender, EventArgs args)
        {
            var codeFrm = new ShowCodeFrm();
            var model   = ModelManager.Instance().GetModel(this.FileId.Value);
            var module  = ModelManager.Instance().MakeSureParseModule(model.File);

            if (module == null)
            {
                System.Windows.Forms.MessageBox.Show("模块还没解析");
                return;
            }

            var builder = new IndentStringBuilder();

            //module.NameSpace = ns;
            ((DmModelDB)module).RenderSql(builder);
            codeFrm.SetText(builder.ToString());
            codeFrm.Show();
        }
示例#15
0
        private void InsertDB_Transitions(WorkflowContext ctx, NodeInfo nodeInfo, Dictionary <string, Guid> nodes)
        {
            if (nodeInfo.Translation == null ||
                nodeInfo.Translation.Statments == null)
            {
                return;
            }

            foreach (var tr in nodeInfo.Translation.Statments)
            {
                var transition = new Sys_Transition(Guid.NewGuid());
                transition.FromNodeId = nodes[nodeInfo.Name.ToLower().Trim()];
                transition.ToNodeId   = nodes[tr.Target.ToLower().Trim()];
                var builder = new IndentStringBuilder();
                tr.Expression.Render(builder);
                transition.Condition  = builder.ToString();
                transition.CreateTime = DateTime.Now;
                ctx.Sys_Transitions.Add(transition);
            }
        }
示例#16
0
        // CodeMapping Function
        public string PageInitialize()
        {
            var indentBuilder = new IndentStringBuilder(3);

            for (int i = 0; i < this.Parameter.Screens.Length; i++)
            {
                /* Ex
                 * var p0 = GenResourceManager.LoadXaml("Screen1") as DeXignPage;
                 * dw.Add(p0);
                 */

                indentBuilder.AppendLine($"var p{i} = GenResourceManager.LoadXaml(\"{this.Parameter.Screens[i].GetPageName()}.xaml\") as DeXignPage;");
                indentBuilder.AppendLine($"dw.Add(p{i});");
            }

            /* Ex
             * dw.SetPage(p0);
             */
            indentBuilder.Append($"dw.SetPage(p0);");

            return(indentBuilder.ToString());
        }
示例#17
0
        // CodeMapping Function
        public string CallbackHandlers()
        {
            if (logicCodes.Count > 1)
            {
                var indentBuilder = new IndentStringBuilder(2);

                for (int i = 1; i < logicCodes.Count; i++)
                {
                    indentBuilder.AppendBlock(logicCodes[i]);

                    if (i < logicCodes.Count - 1)
                    {
                        indentBuilder.AppendLine();
                        indentBuilder.AppendLine();
                    }
                }

                return(indentBuilder.ToString());
            }

            return(null);
        }
示例#18
0
 protected override void RenderView(IndentStringBuilder builder, T_Field f, AssignOperatorInfo?op, IndentStringBuilder opValue)
 {
     //base.RenderView(builder, f, rightBuilder);
     if (opValue != null && opValue.Length > 0)
     {
         builder.AppendFormat(".{0}({1})", f.Name, opValue.ToString());
     }
     else
     {
         if (f.Type is T_EventType)
         {
             builder.AppendFormat(".{0}", f.Name);
         }
         else if (f.Type is T_ValidateType)
         {
             builder.AppendFormat(".{0}", f.Name);
         }
         else
         {
             builder.AppendFormat(".{0}()", f.Name);
         }
     }
 }
示例#19
0
        public string GetErrorMessage(int tabs = 0)
        {
            var errorMessage = new IndentStringBuilder
            {
                Indent = tabs
            };

            var debugText = GetDebugErrorMessage();

            errorMessage.WriteLine(debugText);

            if (InnerErrors.Length > 0)
            {
                errorMessage.Indent++;
                foreach (var innerError in InnerErrors)
                {
                    errorMessage.WriteLine(innerError.GetErrorMessage(tabs + 2));
                }

                errorMessage.Indent--;
            }

            return(errorMessage.ToString());
        }
 public IncReadOnlyStructClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
     : base(wrapper, t, sb)
 {
 }
示例#21
0
 public IncNonOverridableClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
     : base(wrapper, t, sb)
 {
 }
示例#22
0
 public IncCLRHandleClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
     : base(wrapper, t, sb)
 {
 }
示例#23
0
 public IncNativeDirectorClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
     : base(wrapper, t, sb)
 {
 }
 public CppSubclassingClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb, DefClass[] additionalInterfaces)
     : base(wrapper, t, sb)
 {
     this._additionalInterfaces = additionalInterfaces;
 }
        public static void AddNativeProxyMethodBody(DefFunction f, string managedTarget, IndentStringBuilder sb)
        {
            string managedCall;
            string fullPostConv = null;

            if (f.IsGetProperty)
            {
                sb.AppendLine(f.CLRTypeName + " mp_return = " + managedTarget + "->" + f.CLRName + ";");
                managedCall = "mp_return";
            }
            else if (f.IsSetProperty)
            {
                DefParam param = f.Parameters[0];
                managedCall = managedTarget + "->" + f.CLRName + " = " + param.Type.GetNativeCallConversion(param.Name, param);
            }
            else
            {
                string pre, post, conv;

                foreach (DefParam param in f.Parameters)
                {
                    param.Type.GetNativeParamConversion(param, out pre, out conv, out post);
                    if (!String.IsNullOrEmpty(pre))
                    {
                        sb.AppendLine(pre);
                    }

                    if (!String.IsNullOrEmpty(post))
                    {
                        fullPostConv += post + "\n";
                    }
                }

                bool explicitCast = f.HasAttribute <ExplicitCastingForParamsAttribute>();

                if (!f.IsVoid)
                {
                    sb.AppendIndent(f.CLRTypeName + " mp_return = " + managedTarget + "->" + f.CLRName + "(");
                    for (int i = 0; i < f.Parameters.Count; i++)
                    {
                        DefParam param = f.Parameters[i];
                        param.Type.GetNativeParamConversion(param, out pre, out conv, out post);
                        sb.Append(" ");
                        if (explicitCast)
                        {
                            sb.Append("(" + param.CLRTypeName + ")");
                        }
                        sb.Append(conv);
                        if (i < f.Parameters.Count - 1)
                        {
                            sb.Append(",");
                        }
                    }
                    sb.Append(" );\n");
                    managedCall = "mp_return";

                    if (!String.IsNullOrEmpty(fullPostConv))
                    {
                        sb.AppendLine(fullPostConv);
                    }
                }
                else
                {
                    managedCall = managedTarget + "->" + f.CLRName + "(";
                    for (int i = 0; i < f.Parameters.Count; i++)
                    {
                        DefParam param = f.Parameters[i];
                        param.Type.GetNativeParamConversion(param, out pre, out conv, out post);
                        managedCall += " ";
                        if (explicitCast)
                        {
                            managedCall += "(" + param.CLRTypeName + ")";
                        }
                        managedCall += conv;
                        if (i < f.Parameters.Count - 1)
                        {
                            managedCall += ",";
                        }
                    }
                    managedCall += " )";
                }
            }

            if (!f.IsVoid)
            {
                if (f.Type is IDefString)
                {
                    sb.AppendLine("SET_NATIVE_STRING( Mogre::Implementation::cachedReturnString, " + managedCall + " )");
                    sb.AppendLine("return Mogre::Implementation::cachedReturnString;");
                }
                else
                {
                    string   returnExpr;
                    string   newname, expr, postcall;
                    DefParam param = new DefParam(f, managedCall);
                    expr     = f.Type.GetPreCallParamConversion(param, out newname);
                    postcall = f.Type.GetPostCallParamConversionCleanup(param);
                    if (!String.IsNullOrEmpty(expr))
                    {
                        sb.AppendLine(expr);
                        if (String.IsNullOrEmpty(postcall))
                        {
                            returnExpr = newname;
                        }
                        else
                        {
                            throw new Exception("Unexpected");
                        }
                    }
                    else
                    {
                        returnExpr = newname;
                    }

                    if (IsCachedFunction(f))
                    {
                        sb.AppendLine("STATIC_ASSERT( sizeof(" + f.Type.FullNativeName + ") <= CACHED_RETURN_SIZE )");
                        sb.AppendLine("memcpy( Mogre::Implementation::cachedReturn, &" + returnExpr + ", sizeof(" + f.Type.FullNativeName + ") );");
                        sb.AppendLine("return *reinterpret_cast<" + f.Type.FullNativeName + "*>(Mogre::Implementation::cachedReturn);");
                    }
                    else
                    {
                        sb.AppendLine("return " + returnExpr + ";");
                    }
                }
            }
            else
            {
                sb.AppendLine(managedCall + ";");

                if (!String.IsNullOrEmpty(fullPostConv))
                {
                    sb.AppendLine(fullPostConv);
                }
            }
        }
 public CppOverridableClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
     : base(wrapper, t, sb)
 {
     _wrapper.PostClassProducers.Add(new CppNativeProxyClassProducer(_wrapper, _t, _sb));
 }
 public CppNativeProxyClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
     : base(wrapper, t, sb)
 {
 }
示例#28
0
 protected override void RenderView(IndentStringBuilder builder, T_Field f, AssignOperatorInfo?op, IndentStringBuilder opValue)
 {
     if (op.HasValue)
     {
         builder.AppendFormat(".{0} {1} {2}", f.Name, op.GetDescription(), opValue);
     }
     else
     {
         builder.AppendFormat(".{0}", f.Name);
     }
 }
示例#29
0
 public CppPlainWrapperClassProducer(Wrapper wrapper, DefClass t, IndentStringBuilder sb)
     : base(wrapper, t, sb)
 {
 }
示例#30
0
        public virtual T_Type RenderView(IndentStringBuilder builder, List <string> call_stack, IndentStringBuilder paras, AssignOperatorInfo?op, IndentStringBuilder opValue,
                                         PostfixPartType?postfixPartType, IndentStringBuilder func_paras, IndentStringBuilder index_para)
        {
            //if(call_stack == null)

            var member = call_stack[0];
            AssignOperatorInfo? op2      = null;
            IndentStringBuilder opValue2 = null;

            if (call_stack.Count == 1)
            {
                op2      = op;
                opValue2 = opValue;
            }

            T_Type nextType = null;

            if (!this.IsInstance)
            {
                foreach (var f in this.Static_Fields)
                {
                    if (f.Name == member)
                    {
                        this.RenderView(builder, f, op2, opValue2);
                        nextType = f.Type;
                        break;
                    }
                }
                if (nextType == null)
                {
                    foreach (var m in this.Static_Methods)
                    {
                        if (m.Name == member)
                        {
                            this.RenderView(builder, m, paras);
                            nextType = m.Type;
                            break;
                        }
                    }
                }
            }
            else
            {
                foreach (var f in this.Fields)
                {
                    if (f.Name == member)
                    {
                        this.RenderView(builder, f, op2, opValue2);
                        nextType = f.Type;
                        break;
                    }
                }
                if (nextType == null)
                {
                    foreach (var m in this.Methods)
                    {
                        if (m.Name == member)
                        {
                            this.RenderView(builder, m, paras);
                            nextType = m.Type;
                            break;
                        }
                    }
                }
            }
            if (call_stack.Count > 1)
            {
                //var call_stack2 = new List<string>();
                //call_stack2.AddRange(call_stack);
                //call_stack2.RemoveAt(0);
                return(nextType.RenderView(builder, call_stack.SubList(1), paras, op, opValue, postfixPartType, func_paras, index_para));
            }

            return(nextType);
        }