コード例 #1
0
        public static KnModule StartUp(string moduleTree)
        {
            KnModule instance = new KnModule();

            instance.ParseTree(moduleTree);
            return(instance);
        }
コード例 #2
0
        private object a(KnModule xb, Int32 integer, object obj)
        {
            object obj2 = (this.i != null) ? this.i[integer] : null;

            if (obj2 == null)
            {
                return(obj);
            }

            if (obj == null)
            {
                xb.a(integer, obj);
            }

            return(obj);
        }
コード例 #3
0
 public byte[] WriteBytes(KnModule xb)
 {
     byte[] result;
     try
     {
         int          num    = xb.id;
         PacketWriter writer = new PacketWriter();
         writer.WriteShort((short)num);
         this.Write(xb, num, writer);
         result = Encoding.Default.GetBytes(writer.ToString());
     }
     catch
     {
         return(null);
     }
     return(result);
 }
コード例 #4
0
        public KnModule Parse(byte[] buffer)
        {
            PacketReader dataInput = new PacketReader(buffer);
            KnModule     result;

            try
            {
                short    id = (short)dataInput.ReadShort();
                KnModule xb = this.Create(id);
                this.Read(xb, dataInput, id, xb);
                result = xb;
            }
            catch
            {
                return(null);
            }
            return(result);
        }
コード例 #5
0
        private object Read(KnModule xb, PacketReader dataInput, int id, KnModule xb2)
        {
            if (xb2 == null)
            {
                xb2 = this.Create(id);
            }

            ArrayList arrayList = (ArrayList)this.f[id];

            for (int i = 0; i < arrayList.Count; i++)
            {
                Int32 integer = (Int32)arrayList[i];
                switch (integer)
                {
                case 0:     // Byte
                    return(dataInput.Read());

                case 1:     // Boolean
                    return(dataInput.ReadBoolean());

                case 2:     // Byte
                    return(dataInput.Read());

                case 3:     // Short
                    return(dataInput.ReadShort());

                case 4:     // Int32
                    return(dataInput.ReadInt());

                case 5:     // Long
                    return(dataInput.ReadLong());

                case 6:     // Float
                    return((float)dataInput.ReadInt());

                case 7:     // Double
                    return(BitConverter.Int64BitsToDouble(dataInput.ReadLong()));

                case 8:     // Char
                    return(dataInput.ReadChar());

                case 9:     // String
                    String str = dataInput.ReadUTF();
                    if (str == null || str.Length == 0 || str[0] != 0)
                    {
                        return(str);
                    }
                    if (str.Length == 1)
                    {
                        return(null);
                    }
                    return(str.Substring(1));

                case 10:     // BinaryTree
                    break;

                case 11:     // Array (Start)
                    i++;
                    integer = (Int32)arrayList[i];
                    string    text       = (string)this.names[integer];
                    ArrayList arrayList2 = new ArrayList();
                    xb2.b(text, arrayList2);
                    while ((sbyte)dataInput.Read() == 11)
                    {
                        object obj = this.Read(xb, dataInput, integer, null);
                        obj = this.a(xb, integer, obj);
                        arrayList2.Add(obj);
                    }
                    i++;
                    break;

                case 12:     // Array (End)
                    break;

                case 13:     // String
                    int len = dataInput.Read();
                    if (len == 255)
                    {
                        return(null);
                    }
                    if (len >= 128)
                    {
                        len = len - 128 << 16 | (dataInput.Read()) << 8 | (dataInput.Read());
                    }
                    StringBuilder builder = new StringBuilder(len + 2);
                    for (int _i = 0; _i < len; _i++)
                    {
                        builder.Append((char)dataInput.Read());
                    }

                    return(builder.ToString());

                default:
                    string text2 = (string)this.names[integer];
                    object obj2  = this.Read(xb, dataInput, integer, null);
                    obj2 = this.a(xb, integer, obj2);
                    xb2.b(text2, obj2);
                    break;
                }
            }
            return(xb2);
        }