Return TypeFunction nameArguments
hzEcodeQPDecode(hzChain&,const hzChain&,)

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

Function Logic:

0:START 1:hzChain::Clear hzChain::Size 2:!Raw.Size() 3:Return E_NODATA 4:zi 5:!zi.eof(); 6:*zi=='=' 7:items 8:*zi==(char)13||*zi==(char)10 9:*zi==(char)13 10:items 11:*zi==(char)10 12:items 13:zi.eof()||!IsHex(*zi) 14:Return E_FORMAT 15:val items 16:zi.eof()||!IsHex(*zi) 17:Return E_FORMAT 18:val val hzChain::AddByte items 19:hzChain::AddByte items 20:Return E_OK

Function body:

hzEcode QPDecode (hzChain& Decoded, const hzChain& Raw)
{
   _hzfunc("QPDecode") ;
   chIter  zi ;
   int32_t val ;
   Decoded.Clear() ;
   if (!Raw.Size())
       return E_NODATA ;
   zi = Raw ;
   for (; !zi.eof() ;)
   {
       if (*zi == ''='')
       {
           zi++ ;
           if (*zi == CHAR_CR || *zi == CHAR_NL)
           {
               if (*zi == CHAR_CR) zi++ ;
               if (*zi == CHAR_NL) zi++ ;
               continue ;
           }
           if (zi.eof() || !IsHex(*zi))
               return E_FORMAT ;
           val = _get1hex(*zi) ;
           zi++ ;
           if (zi.eof() || !IsHex(*zi))
               return E_FORMAT ;
           val *= 16;
           val += _get1hex(*zi) ;
           Decoded.AddByte(val) ;
           zi++ ;
           continue ;
       }
       Decoded.AddByte(*zi) ;
       zi++ ;
   }
   return E_OK ;
}