Return Type | Function name | Arguments |
---|---|---|
hzEcode | ReadSerialSINT64 | (long&,unsigned int&,const unsigned char*,) |
Declared in file: hzCodec.h
Defined in file : hzCodec.cpp
Function Logic:
Function body:
hzEcode ReadSerialSINT64 (long& nValue, unsigned int& nLen, const unsigned char* ptr) { uint64_t inc ; bool bNeg ; if (!ptr) return hzerr(E_ARGUMENT, "No length indicator supplied") ; if (*ptr & 0x80) { nLen = (*ptr & 0x70)>>4; bNeg = *ptr & 0x0c; nValue = *ptr & 0x03; 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(inc, ptr+1); nValue = (int64_t) inc ; break ; } if (bNeg && nLen < 7) nValue *= -1; } else { nLen = 1; nValue = *ptr & 0x7f; } return E_OK ; }