home *** CD-ROM | disk | FTP | other *** search
- /*
- *******************************************************************************
- * *
- * COPYRIGHT: *
- * (C) Copyright International Business Machines Corporation, 1998 *
- * Licensed Material - Program-Property of IBM - All Rights Reserved. *
- * US Government Users Restricted Rights - Use, duplication, or disclosure *
- * restricted by GSA ADP Schedule Contract with IBM Corp. *
- * *
- *******************************************************************************
- *
- * File ustring.h
- *
- * Modification History:
- *
- * Date Name Description
- * 12/07/98 bertrand Creation.
- *******************************************************************************
- */
-
- #include "ustring.h"
- #include "utypes.h"
- #include "cstring.h"
- #include "ucnv.h"
-
-
- static UConverter* _defaultConverter = NULL;
- static UErrorCode gErr = U_ZERO_ERROR;
-
- #define MAX_STRLEN 0x0FFFFFFF
-
- /*Lazy evaluating macro for the default converter*/
- #define defaultConverter (_defaultConverter==NULL)?_defaultConverter=ucnv_open(NULL, &gErr):_defaultConverter
-
- UChar*
- u_strcat(UChar *dst,
- const UChar *src)
- {
- UChar *anchor = dst; /* save a pointer to start of dst */
-
- while(*dst++); /* To end of first string */
- dst--; /* Return to the null */
- while(*dst++ = *src++); /* copy string 2 over */
- return anchor;
- }
-
- UChar*
- u_strncat(UChar *dst,
- const UChar *src,
- int32_t n )
- {
- UChar *anchor = dst; /* save a pointer to start of dst */
-
- if (!n) return dst;
- while(*dst++); /* To end of first string */
- dst--; /* Return to the null */
- while((*dst++ = *src++) && --n); /* copy string 2 over */
- *dst = 0x0000;
-
- return anchor;
- }
-
- UChar*
- u_strchr(const UChar *s,
- UChar c)
- {
- while((*s != c) && *s)
- s++;
-
- if(*s == c)
- return (UChar*) s;
- return NULL;
- }
-
- int32_t
- u_strcmp(const UChar *s1,
- const UChar *s2)
- {
- while((*s1 == *s2) && *s1) {
- s1++;
- s2++;
- }
-
- return (int32_t)*s1 - (int32_t)*s2;
- }
-
- int32_t
- u_strncmp(const UChar *s1,
- const UChar *s2,
- int32_t n)
- {
- if (!n) return 0;
- while((*s1 == *s2) && *s1 && --n) {
- s1++;
- s2++;
- }
- return (int32_t)*s1 - (int32_t)*s2;
- }
-
- UChar*
- u_strcpy(UChar *dst,
- const UChar *src)
- {
- UChar *anchor = dst; /* save the start of result string */
-
- while(*dst++ = *src++);
- return anchor;
- }
-
- UChar*
- u_strncpy(UChar *dst,
- const UChar *src,
- int32_t n)
- {
- UChar *anchor = dst; /* save the start of result string */
-
- if (!n) return dst;
- while((*dst++ = *src++) && --n);
- *dst = 0x0000;
- return anchor;
- }
-
- int32_t
- u_strlen(const UChar *s)
- {
- int32_t i = 0;
-
- while(*s++)
- i++;
- return i;
- }
-
-
- UChar* u_uastrcpy(UChar *ucs1,
- const char *s2 )
- {
- UErrorCode err = U_ZERO_ERROR;
- ucnv_toUChars(defaultConverter,
- ucs1,
- MAX_STRLEN,
- s2,
- icu_strlen(s2),
- &err);
-
- return ucs1;
- }
-
- UChar* u_uastrncpy(UChar *ucs1,
- const char *s2 ,
- int32_t n)
- {
- UErrorCode err = U_ZERO_ERROR;
- int32_t end = ucnv_toUChars(defaultConverter,
- ucs1,
- n,
- s2,
- icu_strlen(s2),
- &err);
-
- ucs1[icu_min(end,n)] = 0x0000;
- return ucs1;
- }
-
- char* u_austrcpy(char *s1,
- const UChar *ucs2 )
- {
- char * anchor = s1; /* save the start of result string */
- UErrorCode err = U_ZERO_ERROR;
- int32_t len = ucnv_fromUChars(defaultConverter,
- s1,
- MAX_STRLEN,
- ucs2,
- &err);
-
- s1[len] = '\0';
- return s1;
-
- }
-
-
-
-
-