Mono.Xml.MiniParser.AttrListImpl.Add C# (CSharp) Method

Add() public method

public Add ( string name, string value ) : void
name string
value string
return void
            public void Add(string name, string value)
            {
                names.Add(name);
                values.Add(value);
            }

Usage Example

Beispiel #1
0
        public void Parse(MiniParser.IReader reader, MiniParser.IHandler handler)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }
            if (handler == null)
            {
                handler = new MiniParser.HandlerAdapter();
            }
            MiniParser.AttrListImpl attrListImpl = new MiniParser.AttrListImpl();
            string text  = null;
            Stack  stack = new Stack();
            string text2 = null;

            this.line = 1;
            this.col  = 0;
            int           num           = 0;
            int           num2          = 0;
            StringBuilder stringBuilder = new StringBuilder();
            bool          flag          = false;
            bool          flag2         = false;
            bool          flag3         = false;
            int           num3          = 0;

            handler.OnStartParsing(this);
            while (true)
            {
                this.col++;
                num = reader.Read();
                if (num == -1)
                {
                    break;
                }
                int num4 = "<>/?=&'\"![ ]\t\r\n".IndexOf((char)num) & 15;
                if (num4 != 13)
                {
                    if (num4 == 12)
                    {
                        num4 = 10;
                    }
                    if (num4 == 14)
                    {
                        this.col = 0;
                        this.line++;
                        num4 = 10;
                    }
                    int num5 = MiniParser.Xlat(num4, num2);
                    num2 = (num5 & 255);
                    if (num != 10 || (num2 != 14 && num2 != 15))
                    {
                        num5 >>= 8;
                        if (num2 >= 128)
                        {
                            if (num2 == 255)
                            {
                                this.FatalErr("State dispatch error.");
                            }
                            else
                            {
                                this.FatalErr(MiniParser.errors[num2 ^ 128]);
                            }
                        }
                        switch (num5)
                        {
                        case 0:
                            goto IL_19F;

                        case 1:
                        {
                            text2         = stringBuilder.ToString();
                            stringBuilder = new StringBuilder();
                            string text3 = null;
                            if (stack.get_Count() == 0 || text2 != (text3 = (stack.Pop() as string)))
                            {
                                if (text3 == null)
                                {
                                    this.FatalErr("Tag stack underflow");
                                }
                                else
                                {
                                    this.FatalErr(string.Format("Expected end tag '{0}' but found '{1}'", text2, text3));
                                }
                            }
                            handler.OnEndElement(text2);
                            break;
                        }

                        case 2:
                            text2         = stringBuilder.ToString();
                            stringBuilder = new StringBuilder();
                            if (num == 47 || num == 62)
                            {
                                goto IL_19F;
                            }
                            break;

                        case 3:
                            text          = stringBuilder.ToString();
                            stringBuilder = new StringBuilder();
                            break;

                        case 4:
                            if (text == null)
                            {
                                this.FatalErr("Internal error.");
                            }
                            attrListImpl.Add(text, stringBuilder.ToString());
                            stringBuilder = new StringBuilder();
                            text          = null;
                            break;

                        case 5:
                            handler.OnChars(stringBuilder.ToString());
                            stringBuilder = new StringBuilder();
                            break;

                        case 6:
                        {
                            string text4 = "CDATA[";
                            flag2 = false;
                            flag3 = false;
                            if (num == 45)
                            {
                                num = reader.Read();
                                if (num != 45)
                                {
                                    this.FatalErr("Invalid comment");
                                }
                                this.col++;
                                flag2 = true;
                                this.twoCharBuff[0] = -1;
                                this.twoCharBuff[1] = -1;
                            }
                            else if (num != 91)
                            {
                                flag3 = true;
                                num3  = 0;
                            }
                            else
                            {
                                for (int i = 0; i < text4.get_Length(); i++)
                                {
                                    if (reader.Read() != (int)text4.get_Chars(i))
                                    {
                                        this.col += i + 1;
                                        break;
                                    }
                                }
                                this.col += text4.get_Length();
                                flag      = true;
                            }
                            break;
                        }

                        case 7:
                        {
                            int num6 = 0;
                            num = 93;
                            while (num == 93)
                            {
                                num = reader.Read();
                                num6++;
                            }
                            if (num != 62)
                            {
                                for (int j = 0; j < num6; j++)
                                {
                                    stringBuilder.Append(']');
                                }
                                stringBuilder.Append((char)num);
                                num2 = 18;
                            }
                            else
                            {
                                for (int k = 0; k < num6 - 2; k++)
                                {
                                    stringBuilder.Append(']');
                                }
                                flag = false;
                            }
                            this.col += num6;
                            break;
                        }

                        case 8:
                            this.FatalErr(string.Format("Error {0}", num2));
                            break;

                        case 9:
                            break;

                        case 10:
                            stringBuilder = new StringBuilder();
                            if (num != 60)
                            {
                                goto IL_465;
                            }
                            break;

                        case 11:
                            goto IL_465;

                        case 12:
                            if (flag2)
                            {
                                if (num == 62 && this.twoCharBuff[0] == 45 && this.twoCharBuff[1] == 45)
                                {
                                    flag2 = false;
                                    num2  = 0;
                                }
                                else
                                {
                                    this.twoCharBuff[0] = this.twoCharBuff[1];
                                    this.twoCharBuff[1] = num;
                                }
                            }
                            else if (flag3)
                            {
                                if (num == 60 || num == 62)
                                {
                                    num3 ^= 1;
                                }
                                if (num == 62 && num3 != 0)
                                {
                                    flag3 = false;
                                    num2  = 0;
                                }
                            }
                            else
                            {
                                if (this.splitCData && stringBuilder.get_Length() > 0 && flag)
                                {
                                    handler.OnChars(stringBuilder.ToString());
                                    stringBuilder = new StringBuilder();
                                }
                                flag = false;
                                stringBuilder.Append((char)num);
                            }
                            break;

                        case 13:
                        {
                            num = reader.Read();
                            int num7 = this.col + 1;
                            if (num == 35)
                            {
                                int num8  = 10;
                                int num9  = 0;
                                int num10 = 0;
                                num = reader.Read();
                                num7++;
                                if (num == 120)
                                {
                                    num = reader.Read();
                                    num7++;
                                    num8 = 16;
                                }
                                NumberStyles numberStyles = (num8 != 16) ? 7 : 515;
                                while (true)
                                {
                                    int num11 = -1;
                                    if (char.IsNumber((char)num))
                                    {
                                        goto IL_5D9;
                                    }
                                    if ("abcdef".IndexOf(char.ToLower((char)num)) != -1)
                                    {
                                        goto Block_43;
                                    }
IL_5F9:
                                    if (num11 == -1)
                                    {
                                        break;
                                    }
                                    num9 *= num8;
                                    num9 += num11;
                                    num10++;
                                    num = reader.Read();
                                    num7++;
                                    continue;
Block_43:
                                    try
                                    {
IL_5D9:
                                        num11 = int.Parse(new string((char)num, 1), numberStyles);
                                    }
                                    catch (FormatException)
                                    {
                                        num11 = -1;
                                    }
                                    goto IL_5F9;
                                }
                                if (num == 59 && num10 > 0)
                                {
                                    stringBuilder.Append((char)num9);
                                }
                                else
                                {
                                    this.FatalErr("Bad char ref");
                                }
                            }
                            else
                            {
                                string text5  = "aglmopqstu";
                                string text6  = "&'\"><";
                                int    num12  = 0;
                                int    num13  = 15;
                                int    num14  = 0;
                                int    length = stringBuilder.get_Length();
                                while (true)
                                {
                                    if (num12 != 15)
                                    {
                                        num12 = (text5.IndexOf((char)num) & 15);
                                    }
                                    if (num12 == 15)
                                    {
                                        this.FatalErr(MiniParser.errors[7]);
                                    }
                                    stringBuilder.Append((char)num);
                                    int num15 = (int)"U㾏侏ཟク⊙o".get_Chars(num12);
                                    int num16 = num15 >> 4 & 15;
                                    int num17 = num15 & 15;
                                    int num18 = num15 >> 12;
                                    int num19 = num15 >> 8 & 15;
                                    num = reader.Read();
                                    num7++;
                                    num12 = 15;
                                    if (num16 != 15 && num == (int)text5.get_Chars(num16))
                                    {
                                        if (num18 < 14)
                                        {
                                            num13 = num18;
                                        }
                                        num14 = 12;
                                    }
                                    else if (num17 != 15 && num == (int)text5.get_Chars(num17))
                                    {
                                        if (num19 < 14)
                                        {
                                            num13 = num19;
                                        }
                                        num14 = 8;
                                    }
                                    else if (num == 59)
                                    {
                                        if (num13 != 15 && num14 != 0 && (num15 >> num14 & 15) == 14)
                                        {
                                            break;
                                        }
                                        continue;
                                    }
                                    num12 = 0;
                                }
                                int num20 = num7 - this.col - 1;
                                if (num20 > 0 && num20 < 5 && (MiniParser.StrEquals("amp", stringBuilder, length, num20) || MiniParser.StrEquals("apos", stringBuilder, length, num20) || MiniParser.StrEquals("quot", stringBuilder, length, num20) || MiniParser.StrEquals("lt", stringBuilder, length, num20) || MiniParser.StrEquals("gt", stringBuilder, length, num20)))
                                {
                                    stringBuilder.set_Length(length);
                                    stringBuilder.Append(text6.get_Chars(num13));
                                }
                                else
                                {
                                    this.FatalErr(MiniParser.errors[7]);
                                }
                            }
                            this.col = num7;
                            break;
                        }

                        default:
                            this.FatalErr(string.Format("Unexpected action code - {0}.", num5));
                            break;
                        }
                        continue;
IL_19F:
                        handler.OnStartElement(text2, attrListImpl);
                        if (num != 47)
                        {
                            stack.Push(text2);
                        }
                        else
                        {
                            handler.OnEndElement(text2);
                        }
                        attrListImpl.Clear();
                        continue;
IL_465:
                        stringBuilder.Append((char)num);
                    }
                }
            }
            if (num2 != 0)
            {
                this.FatalErr("Unexpected EOF");
            }
            handler.OnEndParsing(this);
        }
All Usage Examples Of Mono.Xml.MiniParser.AttrListImpl::Add