Return TypeFunction nameArguments
hzEcodeBase64Decode(hzChain&,hzChain::Iter&,)

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

Function Logic:

0:START 1:hzChain::Clear zi 2:!zi.eof(); 3:*zi==(char)13 4:items 5:*zi==(char)10 6:items 7:a items b items c items d items 8:a==101||b==101||c==101||d==101 9:Return E_FORMAT 10:val 11:a<100 12:val 13:b<100 14:val 15:c<100 16:val 17:d<100 18:val 19:a b c hzChain::AddByte 20:b 21:hzChain::AddByte 22:c 23:hzChain::AddByte 24:Return E_OK

Function body:

hzEcode Base64Decode (hzChain& Decoded, hzChain::Iter& ci)
{
   _hzfunc("Base64Decode(chIter)") ;
   chIter      zi ;
   int32_t     val ;
   int32_t     a ;
   int32_t     b ;
   int32_t     c ;
   int32_t     d ;
   Decoded.Clear() ;
   zi = ci ;
   for (; !zi.eof() ;)
   {
       if (*zi == CHAR_CR) { zi++ ; continue ; }
       if (*zi == CHAR_NL) { zi++ ; continue ; }
       a = _get6bit(*zi) ; zi++ ;
       b = _get6bit(*zi) ; zi++ ;
       c = _get6bit(*zi) ; zi++ ;
       d = _get6bit(*zi) ; zi++ ;
       if (a == 101||b== 101||c== 101||d== 101)
           return E_FORMAT ;
       val = 0;
       if (a < 100)val += (a << 18);
       if (b < 100)val += (b << 12);
       if (c < 100)val += (c << 6);
       if (d < 100)val += d ;
       a = (val & 0xff0000)>>16;
       b = (val & 0xff00)>>8;
       c = val & 0xff;
       Decoded.AddByte(a) ;
       if (b)
           Decoded.AddByte(b) ;
       if (c)
           Decoded.AddByte(c) ;
   }
   return E_OK ;
}