Ejemplo n.º 1
0
        public ConstantPoolInfo ReadConstantPoolInfo()
        {
            ConstantPoolInfo result = new ConstantPoolInfo();

            result.IntArrayCapacity = ReadU30();
            for (uint i = 1; i < result.IntArrayCapacity; i++)
            {
                result.SetIntAt(ReadS32(), i);
            }

            result.UIntArrayCapacity = ReadU30();
            for (uint i = 1; i < result.UIntArrayCapacity; i++)
            {
                result.SetUIntAt(ReadU30(), i);
            }

            result.DoubleArrayCapacity = ReadU30();
            for (uint i = 1; i < result.DoubleArrayCapacity; i++)
            {
                result.SetDoubleAt(ReadDouble(), i);
            }

            result.StringArrayCapacity = ReadU30();
            for (uint i = 1; i < result.StringArrayCapacity; i++)
            {
                result.SetStringAt(new StringInfo(i, ReadString()), i);
            }

            result.NamespaceArrayCapacity = ReadU30();
            for (uint i = 1; i < result.NamespaceArrayCapacity; i++)
            {
                NamespaceInfo namespaceInfo = new NamespaceInfo(result, i);
                namespaceInfo.Kind = (NamespaceKind)ReadByte();
                namespaceInfo.Name = result.GetStringAt(ReadU30());
                result.SetNamespaceAt(namespaceInfo, i);
            }

            result.NamespaceSetArrayCapacity = ReadU30();
            for (uint i = 1; i < result.NamespaceSetArrayCapacity; i++)
            {
                NamespaceSetInfo namespaceSetInfo = new NamespaceSetInfo(i);
                namespaceSetInfo.NamespaceArray = new NamespaceInfo[ReadU30()];
                for (int j = 0; j < namespaceSetInfo.NamespaceArray.Length; j++)
                {
                    namespaceSetInfo.NamespaceArray[j] = result.GetNamespaceAt(ReadU30());
                }

                result.SetNamespaceSetAt(namespaceSetInfo, i);
            }

            result.MultinameArrayCapacity = ReadU30();
            for (uint i = 1; i < result.MultinameArrayCapacity; i++)
            {
                result.SetMultinameAt(ReadMultinameInfo(result, i), i);
            }
            return(result);
        }