Return TypeFunction nameArguments
unsigned intGetCountryByCode(const char*,)

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

Function Logic:

0:START 1:!s_CC_buffer 2:Return 0 3:!ccode 4:Return 0 5:!ccode[0] 6:Return 0 7:ccode[2] 8:Return 0 9:ccode[0]<'A'||ccode[0]>'Z' 10:Return 0 11:ccode[1]<'A'||ccode[1]>'Z' 12:Return 0 13:!s_CC_start 14:Return 0 15:nPos bFound s_CC_div nDiv 16:; 17:nPos>s_CC_max 18:!nDiv 19:nPos 20:i 21:i[0]>ccode[0] 22:res 23:i[0] 24:res 25:res 26:res>0 27:!nDiv 28:nPos 29:res<0 30:!nDiv 31:nPos 32:bFound 33:Return bFound?nPos:0

Function body:

unsigned int GetCountryByCode (const char* ccode)
{
   _hzfunc(__func__) ;
   const char* i ;
   uint32_t    nDiv ;
   uint32_t    nPos ;
   int32_t     res ;
   bool        bFound ;
   if (!s_CC_buffer)
       return 0;
   if (!ccode)     return 0;
   if (!ccode[0])  return 0;
   if (ccode[2])   return 0;
   if (ccode[0]< ''A''||ccode[0]> ''Z'')return0;
   if (ccode[1]< ''A''||ccode[1]> ''Z'')return0;
   if (!s_CC_start)
       return 0;
   nPos = s_CC_start ;
   bFound = false ;
   for (nDiv = s_CC_div ;; nDiv /= 2)
   {
       if (nPos > s_CC_max)
       {
           if (!nDiv)
               break ;
           nPos -= nDiv ;
           continue ;
       }
       i = s_CC_buffer + s_CC_offsets[nPos] ;
       if (i[0]> ccode[0])
           res = -1;
       else if (i[0]< ccode[0])
           res = 1;
       else
           res = i[1]> ccode[1]? -1: i[1]< ccode[1]? 1: 0;
       if (res > 0)
       {
           if (!nDiv)
               break ;
           nPos += nDiv ;
           continue ;
       }
       if (res < 0)
       {
           if (!nDiv)
               break ;
           nPos -= nDiv ;
           continue ;
       }
       bFound = true ;
       break ;
   }
   return bFound ? nPos : 0;
}