示例#1
0
        private void UpdateInterface()
        {
            if (PagesTab.SelectedIndex == -1)
            {
                RepeatButton.Enabled = false;
                BackButton.Enabled   = false;
                RowsNumbers.Text     = "";
                return;
            }

            RepeatButton.Enabled = Pages[PagesTab.SelectedIndex].CanRepeat;
            BackButton.Enabled   = Pages[PagesTab.SelectedIndex].CanCancel;

            string numbers = "";
            int    start   = CodeField.GetLineFromCharIndex(CodeField.GetCharIndexFromPosition(new Point(0, 0)));
            int    end     = CodeField.GetLineFromCharIndex(CodeField.GetCharIndexFromPosition(new Point(CodeField.Size.Width, CodeField.Size.Height)));

            for (int i = start; i <= end; i++)
            {
                numbers += (i + 1) + ":\n";
            }

            RowsNumbers.Text = numbers;

            codeHandler.HandleText();
        }
示例#2
0
        protected override void BuildTypedef(CodeNamespace ns, CppTypedef typedef)
        {
            TypeDesc fieldType     = GetTypeDesc(typedef.ElementType);
            string   baseTypeName  = ResolveCefType(fieldType.ToString());
            string   aliasTypeName = GetClassName(typedef.Name);

            if (aliasTypeName == baseTypeName)
            {
                throw new InvalidOperationException();
            }

            var decl = new CodeStruct(aliasTypeName);

            decl.Attributes = CodeAttributes.Public | CodeAttributes.Unsafe | CodeAttributes.Partial;
            decl.Comments.AddVSDocComment(typedef.Comment, "summary");

            var attr = new CustomCodeAttribute(typeof(StructLayoutAttribute));

            attr.AddParameter(LayoutKind.Sequential);
            decl.CustomAttributes.Add(attr);


            var field = new CodeField(baseTypeName, "Base");

            field.Attributes = CodeAttributes.Public;
            //field.CustomAttributes.Add(new CustomCodeAttribute(typeof(FieldOffsetAttribute)) { Parameters = { "0" } });
            decl.Members.Add(field);

            ns.Types.Add(decl);
        }
示例#3
0
        private string GetNativeCallMehtodBody(CodeMethod caller, CodeField field, CodeType typeDecl)
        {
            var sb = new StringBuilder();

            sb.Append("fixed (").Append(typeDecl.Name).Append("* self = &this)\n{\n\t");
            if (caller.RetVal.Type != "void")
            {
                sb.Append("return ");
            }

            var argTypes = new List <string>();

            if (caller.HasThisArg)
            {
                argTypes.Add(typeDecl.Name + "*");
            }
            argTypes.AddRange(caller.Parameters.Select(arg => CSharpCodeGen.GetClrTypeName(arg.Type)));
            argTypes.Add(CSharpCodeGen.GetClrTypeName(caller.RetVal.Type));

            sb.Append("((delegate* unmanaged[Stdcall]<").Append(string.Join(", ", argTypes)).Append(">)");
            sb.Append(field.Name).Append(")(");
            var args = new List <string>();

            if (caller.HasThisArg)
            {
                args.Add("self");
            }
            args.AddRange(caller.Parameters.Select(arg => arg.Name));
            sb.Append(string.Join(", ", args));
            sb.Append(");");
            sb.Append("\n}");

            return(sb.ToString());
        }
示例#4
0
        /// <summary>
        ///     Adds a dropdown field to the criteria panel
        /// </summary>
        private ListBase InitialiseListField(Search.SearchParameter parameter)
        {
            if (!String.IsNullOrEmpty(parameter.CodeType))
            {
                CodeField codeField = new CodeField();
                codeField.CodeType = parameter.CodeType.Contains(":") ? parameter.CodeType.Substring(0, parameter.CodeType.IndexOf(":")) : parameter.CodeType;
                return(codeField);
            }

            if (!String.IsNullOrEmpty(parameter.ListData))
            {
                JavaScriptSerializer        serializer = new JavaScriptSerializer();
                Dictionary <String, Object> jsonData   = serializer.Deserialize <Dictionary <String, Object> >(parameter.ListData);

                ListField listField = null;
                if (jsonData.Keys.Count >= 1 && String.Equals(jsonData.Keys.ElementAt(0), "SQL", StringComparison.OrdinalIgnoreCase))
                {
                    listField = this.InitialiseSqlField(jsonData.Values.ElementAt(0) as String);
                }
                if (jsonData.Keys.Count >= 1 && String.Equals(jsonData.Keys.ElementAt(0), "CODE", StringComparison.OrdinalIgnoreCase))
                {
                    listField = this.InitialiseJsonField(jsonData.Values.ElementAt(0) as ArrayList);
                }
                if (listField != null && !listField.Items.OfType <ListItem>().Any(item => String.IsNullOrEmpty(item.Value)))
                {
                    listField.Items.Insert(0, new ListItem("", ""));
                }
                return(listField);
            }

            return(null);
        }
示例#5
0
        protected override void Visit(CodeField field)
        {
            Visit(field.Type);
            Visit(field.Name);

            if (field.Initializer != null)
            {
                Visit(field.Initializer);
            }
        }
示例#6
0
        private void UpdateRowsNumbers()
        {
            string numbers = "";
            int    start   = CodeField.GetLineFromCharIndex(CodeField.GetCharIndexFromPosition(new Point(0, 0)));
            int    end     = CodeField.GetLineFromCharIndex(CodeField.GetCharIndexFromPosition(new Point(CodeField.Size.Width, CodeField.Size.Height)));

            for (int i = start; i <= end; i++)
            {
                numbers += i + ":\n";
            }

            RowsNumbers.Text = numbers;
        }
        protected override void LoadWindowsForm()
        {
            //CountryData.ID = this.ID;
            base.LoadWindowsForm();

            this.FormId = obj.GetType().GetProperty("ID").GetValue(obj, null);
            this.FID    = (int)FormId;

            this.CodeField = obj.GetType().GetProperty("CodeField").GetValue(obj, null);
            this.FCode     = CodeField.ToString();

            this.IDField     = obj.GetType().GetProperty("IDField").GetValue(obj, null);
            this.IDFieldName = IDField.ToString();

            this.Table = obj.GetType().GetProperty("TableName").GetValue(obj, null);
            this.Tbl   = Table.ToString();

            //FndNumber.Text = CountryData.ID.ToString();
        }
示例#8
0
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            parsedText = CodeField.Text;

            CharChain chain  = new CharChain(CodeField.Text);
            Parser    parser = new Parser();

            ResultField.Text = "";

            int count = 0;

            while (chain.Next().Char != '\0')
            {
                parser.Parse(chain);

                var errors = parser.GetErrors();

                foreach (var error in errors)
                {
                    count++;

                    ResultField.Text += error.Message;
                    if (error.IncorrStr != null)
                    {
                        ResultField.Text += " (Отброшенный фрагмент: '" + error.IncorrStr + "' на позиции: " + error.Idx + ")";
                    }
                    ResultField.Text += "\r\n";

                    CodeField.Select(error.Idx, 1);
                    CodeField.SelectionBackColor = Color.Red;
                    CodeField.DeselectAll();
                }
            }

            if (count == 0)
            {
                ResultField.Text += "Ошибок нет.\r\n";
            }
            else
            {
                ResultField.Text += "Обнаружено " + count + " ошибок.\r\n";
            }
        }
示例#9
0
        private void GenerateFieldCode(CodeField fieldDecl)
        {
            foreach (CodeComment commentDecl in fieldDecl.Comments)
            {
                GenerateCommentCode(commentDecl);
            }

            WriteCustomAttributes(fieldDecl.CustomAttributes);

            WriteAttributes(fieldDecl.Attributes);
            Output.Write(GetClrTypeName(fieldDecl.TypeName));
            Output.Write(" ");
            Output.Write(fieldDecl.Name);
            if (fieldDecl.Value != null)
            {
                Output.Write(" = ");
                Output.Write(fieldDecl.Value);
            }
            Output.WriteLine(";");
        }
示例#10
0
        protected override string GetExpr()
        {
            string[] MultCodeFiled = CodeField.Split(';').ToArray();

            if (MultCodeFiled.Count() > 1)
            {
                string[] multcode = Code.Split(';').ToArray();
                string   str      = MultCodeFiled[0] + "='" + multcode[0] + "'";
                for (int i = 1; i < MultCodeFiled.Count(); i++)
                {
                    str += " and " + MultCodeFiled[i] + "='" + multcode[i] + "'";
                }
                return(str);
            }
            else
            {
                return(CodeField + "='" + Code + "'");
            }


            //return base.GetExpr();
        }
示例#11
0
        private void DefineField(CodeType typeDecl, CppField field)
        {
            CodeMethod caller = null;

            TypeDesc fieldType = GetTypeDesc(field.Type);
            var      fld       = new CodeField(ResolveCefType(fieldType.ToString()), field.Name.EscapeName());

            if (fieldType.IsCallable)
            {
                fld.Attributes = CodeAttributes.Public;                // | CodeAttributes.ReadOnly;
                fld.Comments.AddVSDocComment(fieldType.Name, "summary");

                CppFunctionType fnType  = fieldType.FunctionTypeRef;
                TypeDesc        retType = GetTypeDesc(fnType.ReturnType);
                caller = new CodeMethod(field.Name.ToUpperCamel(fnType.Parameters.Count).EscapeName());
                var rvtype = new CodeMethodParameter(null);
                rvtype.Type = ResolveCefType(retType.ToString());
                if (retType.Name == "char16" || retType.Name == "wchar")
                {
                    rvtype.CustomAttributes.Add(new CustomCodeAttribute("return: MarshalAs(UnmanagedType.U2)"));
                    throw new NotImplementedException();                     // TODO: check it
                }
                caller.RetVal     = rvtype;
                caller.Attributes = CodeAttributes.Public | CodeAttributes.Unsafe;
                //caller.CustomAttributes.AddMethodImplForwardRefAttribute();
                caller.CustomAttributes.Add(new CustomCodeAttribute("NativeName")
                {
                    Parameters = { "\"" + field.Name + "\"" }
                });
                caller.Comments.AddVSDocComment(field.Comment, "summary");
                caller.Callee = fld;
                CppContainerList <CppParameter> @params = fnType.Parameters;
                for (int i = 0; i < @params.Count; i++)
                {
                    CppParameter arg = @params[i];
                    if (i == 0 && arg.Name == "self")
                    {
                        string argTypeName = ResolveCefType(arg.Type.GetDisplayName());
                        if (argTypeName == typeDecl.Name + "*")
                        {
                            caller.HasThisArg = true;
                            continue;
                        }
                    }
                    var      param     = new CodeMethodParameter(arg.Name.EscapeName());
                    TypeDesc paramType = GetTypeDesc(arg.Type);

                    string argType = paramType.ToString();
                    while (argType.StartsWith("const "))
                    {
                        argType         = argType.Substring(6);
                        param.Direction = CodeMethodParameterDirection.In;
                    }
                    if (param.Direction == CodeMethodParameterDirection.In)
                    {
                        param.CustomAttributes.Add(new CustomCodeAttribute("Immutable"));
                    }
                    if (argType == "char16" || argType == "wchar")
                    {
                        param.CustomAttributes.Add(new CustomCodeAttribute("MarshalAs(UnmanagedType.U2)"));
                        throw new NotImplementedException();                         // TODO: check it
                    }
                    param.Type = ResolveCefType(argType);
                    caller.Parameters.Add(param);
                }

                //fld.TypeName = GetNativeDelegate(caller, typeDecl);
                caller.Body = GetNativeCallMehtodBody(caller, fld, typeDecl);
            }
            else
            {
                fld.Comments.AddVSDocComment(field.Comment, "summary");
                fld.Attributes = CodeAttributes.Public;
                if (fieldType.Name == "char16" || fieldType.Name == "wchar")
                {
                    fld.CustomAttributes.Add(new CustomCodeAttribute("MarshalAs(UnmanagedType.U2)"));
                }
            }
            typeDecl.Members.Add(fld);
            if (caller != null)
            {
                typeDecl.Members.Add(caller);
            }
        }
示例#12
0
 protected override CodeElement CreateCodeElement(string name, string fullName, CodeLocation location, CodeElement parent)
 {
     CodeField field = new CodeField(name, fullName, location, parent);
     return field;
 }
示例#13
0
 internal FieldBuilder(CodeField field)
 {
     Field = field;
 }
        protected override CodeElement CreateCodeElement(string name, string fullName, CodeLocation location, CodeElement parent)
        {
            CodeField field = new CodeField(name, fullName, location, parent);

            return(field);
        }
 public SelectColorCommand(CodeField codeField)
 {
     CodeField = codeField;
 }