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

Return TypeFunction nameArguments
hzEcodeReadSerialUINT64(uint64_t&,uint32_t&,unsigned char*,)

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

Function Logic:

0:START 1:unknown 2:Return hzerr(E_ARGUMENT,No length indicator supplied) 3:unknown 4:items * nValue 5:nLen 6:0 7:nValue nValue

Function body:

hzEcode ReadSerialUINT64 (uint64_t& nValue)uint32_t& nLen, unsigned char* ptr, 
{
   //  Category: Number Serialization
   //  
   //  Convert a serialized integer into a 64-bit unsigned integer.
   //  
   //  Arguments: 1) nValue Indicated length or value
   //     2) nLen The size of the indicator itself
   //     3) ptr  Pointer into a uchar buffer (start of indicator)
   //  
   //  Returns: E_ARGUMENT If no ptr is supplied
   //     E_OK  Operation successful
   uint64_t    inc ;       //  Increament value
   if (!ptr)
       return hzerr(E_ARGUMENT, "No length indicator supplied") ;
   if (*ptr & 0x80)
   {
       nLen = (*ptr & 0x78)>>3;
       nValue = *ptr & 0x07;
       switch (nLen)
       {
       case 0:     nValue <<&eq; 8;   nValue += ptr[1];                           break ;
       case 1:     nValue <<&eq; 16;  _endian_import2(inc, ptr+1); nValue += inc ;    break ;
       case 2:     nValue <<&eq; 24;  _endian_import3(inc, ptr+1); nValue += inc ;    break ;
       case 3:     nValue <<&eq; 32;  _endian_import4(inc, ptr+1); nValue += inc ;    break ;
       case 4:     nValue <<&eq; 40;  _endian_import5(inc, ptr+1); nValue += inc ;    break ;
       case 5:     nValue <<&eq; 48;  _endian_import6(inc, ptr+1); nValue += inc ;    break ;
       case 6:     nValue <<&eq; 56;  _endian_import7(inc, ptr+1); nValue += inc ;    break ;
       default:
           _endian_import8(nValue, ptr+1);
           break ;
       }
   }
   else
   {
       nLen = 1;
       nValue = *ptr & 0x7f;
   }
   return E_OK ;
}