Show
Ignore:
Timestamp:
06/10/06 23:42:24 (3 years ago)
Author:
gnue
Message:

add BeginsWith, EndsWith global function

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • NEWT0/trunk/src/newt_core/NewtStr.c

    r5 r58  
    1919/* �֐��v���g�^�C�v */ 
    2020static newtRef  NewtParamStr(char * baseStr, size_t baseStrLen, newtRefArg paramStrArray, bool ifthen); 
    21  
     21static bool     NewtBeginsWith(const char * str, const char * sub); 
     22static bool     NewtEndsWith(const char * str, const char * sub); 
    2223 
    2324 
     
    142143 
    143144    return dstStr; 
     145} 
     146 
     147 
     148/*------------------------------------------------------------------------*/ 
     149/** ������O��������������������邩�`�F�b�N����* 
     150 * @param str       [in] ������ @param sub      [in] ���������� 
     151 * @retval          true    �O���������������������* @retval            false   �O��������������������Ȃ� 
     152 */ 
     153 
     154bool NewtBeginsWith(const char * str, const char * sub) 
     155{ 
     156    int32_t len; 
     157    int32_t sublen; 
     158 
     159    len = strlen(str); 
     160    sublen = strlen(sub); 
     161 
     162    if (len < sublen) 
     163        return false; 
     164    else 
     165        return (strncasecmp(str, sub, sublen) == 0); 
     166} 
     167 
     168 
     169/*------------------------------------------------------------------------*/ 
     170/** ������Ō�����������������邩�`�F�b�N����* 
     171 * @param str       [in] ������ @param sub      [in] ���������� 
     172 * @retval          true    �Ō������������������* @retval           false   �Ō�����������������Ȃ� 
     173 */ 
     174 
     175bool NewtEndsWith(const char * str, const char * sub) 
     176{ 
     177    int32_t st; 
     178 
     179    st = strlen(str) - strlen(sub); 
     180 
     181    if (st < 0) 
     182        return false; 
     183    else 
     184        return (strcasecmp(str + st, sub) == 0); 
    144185} 
    145186 
     
    449490    return theResult; 
    450491} 
     492 
     493 
     494/*------------------------------------------------------------------------*/ 
     495/** ������O��������������������邩�`�F�b�N����* 
     496 * @param rcvr      [in] ���V�[�o 
     497 * @param str       [in] ������ @param sub      [in] ���������� 
     498 * @retval          TRUE    �O���������������������* @retval            NIL     �O��������������������Ȃ� 
     499 */ 
     500 
     501newtRef NsBeginsWith(newtRefArg rcvr, newtRefArg str, newtRefArg sub) 
     502{ 
     503    bool    result; 
     504 
     505    if (! NewtRefIsString(str)) 
     506        return NewtThrow(kNErrNotAString, str); 
     507 
     508    if (! NewtRefIsString(sub)) 
     509        return NewtThrow(kNErrNotAString, sub); 
     510 
     511    result = NewtBeginsWith(NewtRefToString(str), NewtRefToString(sub)); 
     512 
     513    return NewtMakeBoolean(result); 
     514} 
     515 
     516 
     517/*------------------------------------------------------------------------*/ 
     518/** ������Ō�����������������邩�`�F�b�N����* 
     519 * @param rcvr      [in] ���V�[�o 
     520 * @param str       [in] ������ @param sub      [in] ���������� 
     521 * @retval          TRUE    �Ō������������������* @retval           NIL     �Ō�����������������Ȃ� 
     522 */ 
     523 
     524newtRef NsEndsWith(newtRefArg rcvr, newtRefArg str, newtRefArg sub) 
     525{ 
     526    bool    result; 
     527 
     528    if (! NewtRefIsString(str)) 
     529        return NewtThrow(kNErrNotAString, str); 
     530 
     531    if (! NewtRefIsString(sub)) 
     532        return NewtThrow(kNErrNotAString, sub); 
     533 
     534    result = NewtEndsWith(NewtRefToString(str), NewtRefToString(sub)); 
     535 
     536    return NewtMakeBoolean(result); 
     537}