Convert a serialized integer into a 32-bit unsigned integer.

Return TypeFunction nameArguments
hzEcodeReadSerialUINT32(uint32_t&,hzXbuf::Iter&,)

Declared in file: hzCodec.h
Defined in file : hzCodec.cpp

Function Logic:

0:START 1:unknown 2:nValue 3:Return E_OK 4:unknown 5:* 6:val items nValue 7:Return E_OK 8:*zi&0xE0 9:0x80 10:* 11:val items val

Function body:

hzEcode ReadSerialUINT32 (uint32_t& nValue)hzXbuf::Iter& zi, 
{
   //  Category: Number Serialization
   //  
   //  Convert a serialized integer into a 32-bit unsigned integer.
   //  
   //  Arguments: 1) nValue Restored integer
   //     2) zi  X-buffer iterator
   //  
   //  Returns: E_ARGUMENT If no ptr is supplied
   //     E_OK  Operation successful
   uint32_t    val = 0;    //  Value
   if (zi.eof())
   {
       nValue = 0;
       return E_OK ;
   }
   if (!(*zi & 0x80))
   {
       val = *zi & 0x7f;
       zi++ ;
       nValue = val ;
       return E_OK ;
   }
   switch  (*zi & 0xE0)
   {
   case 0x80://  100x xxxx: 2 byte value
               val = ((*zi & 0x1f)<<8);
               zi++ ;  val += *zi ;
               break ;
   case 0xA0://  101x xxxx: 3 byte value
               val = ((*zi & 0x1f)<<16);
               zi++ ;  val += (*zi << 8);
               zi++ ;  val += *zi ;
               break ;
   case 0xC0://  110x xxxx: 4 byte value
               val = ((*zi & 0x1f)<<24);
               zi++ ;  val += (*zi << 16);
               zi++ ;  val += (*zi << 8);
               zi++ ;  val += *zi ;
               break ;
   case 0xE0://  111x xxxx: Value is in the next 4 bytes
               zi++ ;  val = (*zi << 24);
               zi++ ;  val += (*zi << 16);
               zi++ ;  val += (*zi << 8);
               zi++ ;  val += *zi ;
               break ;
   }
   zi++ ;
   nValue = val ;
   return E_OK ;
}