Ejemplo n.º 1
0
        public bool initFromData(ByteReader versionReader)
        {
            WrapperReader reader = new WrapperReader(versionReader);

            uint red = 0;
            reader.align(4);
            reader.mark();
            byte[] buffer = new byte[6];
            uint ret = reader.read(buffer,0,6);
            if (ret == 0xFFFFffff || ret < 6)
                return false;
            header = new Header(buffer);
            red += ret;
            red += reader.readString(out key);
            red += (uint)reader.align(4);
            if (header.wValueLength != 0)
            {
                if (header.wType == 0)
                {
                    values = new Data(null, (uint)header.wValueLength);
                    red += reader.readData(out values, (uint)header.wValueLength);
                }
                else if (header.wType == 1)
                {
                    values = new Data(null, (uint)header.wValueLength << 1);
                    //buffer = new byte[header.wValueLength << 1];
                    //red += reader.read(buffer, 0, (ulong)header.wValueLength << 1);
                    //values = new Data(buffer, (uint)header.wValueLength << 1);
                    red += reader.readData(out values, (uint)header.wValueLength << 1);

                }
                else
                    throw new ResourceException();

            }
            if (header.wLength > red)
            {
                buffer = new byte[header.wLength - red];

                reader.read(buffer, 0, header.wLength - red);
                rest = new Data(buffer, header.wLength - red);
            }
            reader.reset();
            buffer = new byte[header.wLength];

            reader.read(buffer, 0, header.wLength);
            allData = new Data(buffer, header.wLength);
            //dump();
            if (rest != null && rest.size() != 0)
            {
                bool bContinue = false;
                DataReader childReader = new DataReader(rest);
                do
                {
                    VersionInfo pNew = new VersionInfo();
                    bContinue = pNew.initFromData(childReader);
                    //pNew->dump();
                    if(bContinue)
                        children.Add(pNew);
                } while (bContinue);

            }
            return true;
        }
Ejemplo n.º 2
0
 public String[] text()
 {
     String tell = "" ;
     if (header.wType == 1 && values != null)
     {
         DataReader reader = new DataReader(values);
         WrapperReader helper = new WrapperReader(reader);
         helper.readString(out tell);
     }
     else if(header.wType == 0)
     {
         ArrayList p = values.toHex();
         String[] ar = new String[p.Count];
         int i = 0;
         foreach(String x in p)
         {
             ar[i++] = x;
         }
         return ar;
     }
     return new String[] { key + " : " + tell, "empty" };
 }