Ignore:
Timestamp:
Nov 22, 2005 11:51:50 PM (18 years ago)
Author:
bennylp
Message:

More optimizations for msg parser etc.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib/include/pj/string_i.h

    r72 r77  
    170170} 
    171171 
     172PJ_IDEF(int) strnicmp_alnum( const char *str1, const char *str2, 
     173                             int len) 
     174{ 
     175    if (len==0) 
     176        return 0; 
     177    else { 
     178        register const pj_uint32_t *p1 = (pj_uint32_t*)str1,  
     179                                   *p2 = (pj_uint32_t*)str2; 
     180        while (len > 3 && (*p1 & 0x5F5F5F5F)==(*p2 & 0x5F5F5F5F)) 
     181            ++p1, ++p2, len-=4; 
     182 
     183        if (len > 3) 
     184            return -1; 
     185#if defined(PJ_IS_LITTLE_ENDIAN) && PJ_IS_LITTLE_ENDIAN!=0 
     186        else if (len==3) 
     187            return ((*p1 & 0x005F5F5F)==(*p2 & 0x005F5F5F)) ? 0 : -1; 
     188        else if (len==2) 
     189            return ((*p1 & 0x00005F5F)==(*p2 & 0x00005F5F)) ? 0 : -1; 
     190        else if (len==1) 
     191            return ((*p1 & 0x0000005F)==(*p2 & 0x0000005F)) ? 0 : -1; 
     192#else 
     193        else if (len==3) 
     194            return ((*p1 & 0x5F5F5F00)==(*p2 & 0x5F5F5F00)) ? 0 : -1; 
     195        else if (len==2) 
     196            return ((*p1 & 0x5F5F0000)==(*p2 & 0x5F5F0000)) ? 0 : -1; 
     197        else if (len==1) 
     198            return ((*p1 & 0x5F000000)==(*p2 & 0x5F000000)) ? 0 : -1; 
     199#endif 
     200        else  
     201            return 0; 
     202    } 
     203} 
     204 
    172205PJ_IDEF(int) pj_stricmp_alnum(const pj_str_t *str1, const pj_str_t *str2) 
    173206{ 
     
    181214        register const pj_uint32_t *p1 = (pj_uint32_t*)str1->ptr,  
    182215                                   *p2 = (pj_uint32_t*)str2->ptr; 
    183         while (len > 3 && (*p1 & 0x1F1F1F1F)==(*p2 & 0x1F1F1F1F)) 
     216        while (len > 3 && (*p1 & 0x5F5F5F5F)==(*p2 & 0x5F5F5F5F)) 
    184217            ++p1, ++p2, len-=4; 
    185218 
     
    188221#if defined(PJ_IS_LITTLE_ENDIAN) && PJ_IS_LITTLE_ENDIAN!=0 
    189222        else if (len==3) 
    190             return ((*p1 & 0x001F1F1F)==(*p2 & 0x001F1F1F)) ? 0 : -1; 
    191         else if (len==2) 
    192             return ((*p1 & 0x00001F1F)==(*p2 & 0x00001F1F)) ? 0 : -1; 
    193         else if (len==1) 
    194             return ((*p1 & 0x0000001F)==(*p2 & 0x0000001F)) ? 0 : -1; 
     223            return ((*p1 & 0x005F5F5F)==(*p2 & 0x005F5F5F)) ? 0 : -1; 
     224        else if (len==2) 
     225            return ((*p1 & 0x00005F5F)==(*p2 & 0x00005F5F)) ? 0 : -1; 
     226        else if (len==1) 
     227            return ((*p1 & 0x0000005F)==(*p2 & 0x0000005F)) ? 0 : -1; 
    195228#else 
    196229        else if (len==3) 
    197             return ((*p1 & 0x1F1F1F00)==(*p2 & 0x1F1F1F00)) ? 0 : -1; 
    198         else if (len==2) 
    199             return ((*p1 & 0x1F1F0000)==(*p2 & 0x1F1F0000)) ? 0 : -1; 
    200         else if (len==1) 
    201             return ((*p1 & 0x1F000000)==(*p2 & 0x1F000000)) ? 0 : -1; 
     230            return ((*p1 & 0x5F5F5F00)==(*p2 & 0x5F5F5F00)) ? 0 : -1; 
     231        else if (len==2) 
     232            return ((*p1 & 0x5F5F0000)==(*p2 & 0x5F5F0000)) ? 0 : -1; 
     233        else if (len==1) 
     234            return ((*p1 & 0x5F000000)==(*p2 & 0x5F000000)) ? 0 : -1; 
    202235#endif 
    203236        else  
Note: See TracChangeset for help on using the changeset viewer.