Home | History | Annotate | Download | only in src
      1 /* ------------------------------------------------------------------
      2  * Copyright (C) 1998-2009 PacketVideo
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13  * express or implied.
     14  * See the License for the specific language governing permissions
     15  * and limitations under the License.
     16  * -------------------------------------------------------------------
     17  */
     18 // -*- c++ -*-
     19 // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
     20 
     21 //                     O S C L _ S T D S T R I N G
     22 
     23 // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
     24 
     25 /*! \addtogroup osclbase OSCL Base
     26  *
     27  * @{
     28  */
     29 
     30 
     31 /**
     32  *  @file oscl_stdstring.h
     33  *  @brief This file provides standard string operations such as strlen,
     34  *  strncpy, etc
     35  *
     36  */
     37 
     38 
     39 #ifndef OSCL_STDSTRING_H_INCLUDED
     40 #define OSCL_STDSTRING_H_INCLUDED
     41 
     42 #ifndef OSCL_BASE_H_INCLUDED
     43 #include "oscl_base.h"
     44 #endif
     45 
     46 
     47 /**
     48  * Gets the length of a string
     49  *
     50  * @param str    NULL terminated string.
     51  *
     52  * @return Returns the number of characters in string, excluding the
     53  *         terminal NULL.
     54  */
     55 OSCL_IMPORT_REF uint32 oscl_strlen(const char* str);
     56 
     57 /**
     58  * Gets the length of a wide char string
     59  *
     60  * @param str    NULL terminated string.
     61  *
     62  * @return Returns the number of characters in string, excluding the
     63  *         terminal NULL.
     64  */
     65 OSCL_IMPORT_REF uint32 oscl_strlen(const oscl_wchar* str);
     66 
     67 /**
     68  * Copies the chars of one string to another.
     69  *
     70  * Copies the initial count characters of src to dest and
     71  * returns dest. If count is less than or equal to the
     72  * length of src, a null character is not appended automatically
     73  * to the copied string. If count is greater than the length
     74  * of src, the destination string is padded with null characters
     75  * up to length count. The behavior of strncpy is undefined
     76  * if the source and destination strings overlap.
     77  *
     78  * @param dest   Destination string
     79  * @param src    NULL terminated source string
     80  * @param count  Number of chars to copy
     81  *
     82  * @return Returns dest.
     83  */
     84 OSCL_IMPORT_REF char* oscl_strncpy(char* dest, const char* src, uint32 count);
     85 
     86 /**
     87  * Copies the chars of one string to another.
     88  *
     89  * Copies the initial count characters of src to dest and
     90  * returns dest. If count is less than or equal to the
     91  * length of src, a null character is not appended automatically
     92  * to the copied string. If count is greater than the length
     93  * of src, the destination string is padded with null characters
     94  * up to length count. The behavior of strncpy is undefined
     95  * if the source and destination strings overlap.
     96  *
     97  * @param dest   Destination string
     98  * @param src    NULL terminated source string
     99  * @param count  Number of chars to copy
    100  *
    101  * @return Returns dest.
    102  */
    103 OSCL_IMPORT_REF oscl_wchar* oscl_strncpy(oscl_wchar* dest, const oscl_wchar* src, uint32 count);
    104 
    105 /**
    106  * Lexicographically compares two NULL terminated strings,
    107  * str1 and str2, and returns a value indicating the relationship
    108  * between them.
    109  *
    110  * @param str1   String to compare
    111  * @param str2   String to compare
    112  *
    113  * @return Negative if str1 < str2
    114  *         Positive if str1 > str2
    115  *         Zero if equal
    116  */
    117 OSCL_IMPORT_REF int32 oscl_strcmp(const char* str1, const char* str2);
    118 
    119 /**
    120  * Lexicographically compares two NULL terminated strings,
    121  * str1 and str2, and returns a value indicating the relationship
    122  * between them.
    123  *
    124  * @param str1   String to compare
    125  * @param str2   String to compare
    126  *
    127  * @return Negative if str1 < str2
    128  *         Positive if str1 > str2
    129  *         Zero if equal
    130  */
    131 OSCL_IMPORT_REF int32 oscl_strcmp(const oscl_wchar* str1, const oscl_wchar* str2);
    132 
    133 
    134 /**
    135  * Lexicographically compares, at most, the first count characters
    136  * in str1 and str2 and returns a value indicating the relationship
    137  * between the substrings.
    138  *
    139  * @param str1   String to compare
    140  * @param str2   String to compare
    141  * @param count  Number of characters to compare
    142  *
    143  * @return Negative if str1 < str2
    144  *         Positive if str1 > str2
    145  *         Zero if equal
    146  */
    147 OSCL_IMPORT_REF int32 oscl_strncmp(const char* str1, const char* str2, uint32 count);
    148 
    149 /**
    150  * Lexicographically compares, at most, the first count characters
    151  * in str1 and str2 and returns a value indicating the relationship
    152  * between the substrings.
    153  *
    154  * @param str1   String to compare
    155  * @param str2   String to compare
    156  * @param count  Number of characters to compare
    157  *
    158  * @return Negative if str1 < str2
    159  *         Positive if str1 > str2
    160  *         Zero if equal
    161  */
    162 OSCL_IMPORT_REF int32 oscl_strncmp(const oscl_wchar* str1, const oscl_wchar* str2, uint32 count);
    163 
    164 /**
    165  * Appends up to count characters from string src to string
    166  * dest, and then appends a terminating null character. The
    167  * initial character of src overwrites the null character at
    168  * the end of dest. Subsequent characters in src are appended
    169  * to dest until either the end of src is reached or count
    170  * characters have been copied. If copying takes place between
    171  * objects that overlap, the behavior is undefined.
    172  *
    173  * @param dest   null terminated destination string
    174  * @param src    source string
    175  * @param count  number of characters to append.
    176  *
    177  * @return dest
    178  */
    179 OSCL_IMPORT_REF char* oscl_strncat(char* dest, const char* src, uint32 count);
    180 
    181 /**
    182  * Appends up to count characters from string src to string
    183  * dest, and then appends a terminating null character. The
    184  * initial character of src overwrites the null character at
    185  * the end of dest. Subsequent characters in src are appended
    186  * to dest until either the end of src is reached or count
    187  * characters have been copied. If copying takes place between
    188  * objects that overlap, the behavior is undefined.
    189  *
    190  * @param dest   null terminated destination string
    191  * @param src    source string
    192  * @param count  number of characters to append.
    193  *
    194  * @return dest
    195  */
    196 OSCL_IMPORT_REF oscl_wchar* oscl_strncat(oscl_wchar* dest, const oscl_wchar* src, uint32 count);
    197 
    198 /**
    199  * Finds the first occurrence of c in string, or it
    200  * returns NULL if c is not found. The null-terminating
    201  * character is included in the search.
    202  *
    203  * @param str    null terminated source string
    204  * @param c      character to search for
    205  *
    206  * @return
    207  */
    208 OSCL_IMPORT_REF const char* oscl_strchr(const char *str, int32 c);
    209 OSCL_IMPORT_REF char* oscl_strchr(char *str, int32 c);
    210 
    211 /**
    212  * Finds the first occurrence of c in string, or it
    213  * returns NULL if c is not found. The null-terminating
    214  * character is included in the search.
    215  *
    216  * @param str    null terminated source string
    217  * @param c      character to search for
    218  *
    219  * @return
    220  */
    221 OSCL_IMPORT_REF const oscl_wchar* oscl_strchr(const oscl_wchar *str, int32 c);
    222 OSCL_IMPORT_REF oscl_wchar* oscl_strchr(oscl_wchar *str, int32 c);
    223 
    224 /**
    225  * Finds the last occurrence of c in string, or it
    226  * returns NULL if c is not found. The null-terminating
    227  * character is included in the search.
    228  *
    229  * @param str    null terminated source string
    230  * @param c      character to search for
    231  *
    232  * @return
    233  */
    234 OSCL_IMPORT_REF const char* oscl_strrchr(const char *str, int32 c);
    235 OSCL_IMPORT_REF char* oscl_strrchr(char *str, int32 c);
    236 OSCL_IMPORT_REF const oscl_wchar* oscl_strrchr(const oscl_wchar *str, int32 c);
    237 OSCL_IMPORT_REF oscl_wchar* oscl_strrchr(oscl_wchar *str, int32 c);
    238 
    239 /**
    240  * Sets the characters of a string to a specified character
    241  *
    242  * @param dest   buffer to modify
    243  * @param val    character to set
    244  * @param count  number of chars to set
    245  *
    246  * @return the value of dest
    247  */
    248 OSCL_IMPORT_REF char* oscl_strset(char* dest, char val, uint32 count);
    249 
    250 /**
    251  * Sets the characters of a string to a specified character
    252  *
    253  * @param dest   buffer to modify
    254  * @param val    character to set
    255  * @param count  number of chars to set
    256  *
    257  * @return the value of dest
    258  */
    259 OSCL_IMPORT_REF oscl_wchar* oscl_strset(oscl_wchar* dest, oscl_wchar val, uint32 count);
    260 
    261 
    262 /**
    263  * Case in-sensitive string comparision.
    264  *
    265  * @param str1  string to compare
    266  * @param str2  string to compare
    267  *
    268  *
    269  * @return Negative if str1 < str2
    270  *         Positive if str1 > str2
    271  *         Zero if equal
    272  */
    273 OSCL_IMPORT_REF int32 oscl_CIstrcmp(const char *str1, const char *str2);
    274 
    275 /**
    276  * Case in-sensitive string comparision.
    277  *
    278  * @param str1  string to compare
    279  * @param str2  string to compare
    280  *
    281  *
    282  * @return Negative if str1 < str2
    283  *         Positive if str1 > str2
    284  *         Zero if equal
    285  */
    286 OSCL_IMPORT_REF int32 oscl_CIstrcmp(const oscl_wchar *str1, const oscl_wchar *str2);
    287 
    288 /**
    289  * Lexicographically compares(case in-sensitive), at most, the first
    290  * count characters in str1 and str2 and returns a value indicating
    291  * the relationship between the substrings.
    292  *
    293  * @param str1  string to compare
    294  * @param str2  string to compare
    295  * @param count  Number of characters to compare
    296  *
    297  *
    298  * @return Negative if str1 < str2
    299  *         Positive if str1 > str2
    300  *         Zero if equal
    301  */
    302 OSCL_IMPORT_REF int32 oscl_CIstrncmp(const char *str1, const char *str2, uint32 count);
    303 
    304 /**
    305  * Lexicographically compares(case in-sensitive), at most, the first
    306  * count characters in str1 and str2 and returns a value indicating
    307  * the relationship between the substrings.
    308  *
    309  * @param str1  string to compare
    310  * @param str2  string to compare
    311  * @param count  Number of characters to compare
    312  *
    313  *
    314  * @return Negative if str1 < str2
    315  *         Positive if str1 > str2
    316  *         Zero if equal
    317  */
    318 OSCL_IMPORT_REF int32 oscl_CIstrncmp(const oscl_wchar *str1, const oscl_wchar *str2, uint32 count);
    319 
    320 /**
    321  * convert upper case ASCII character to lower case.
    322  * behaviour of this function for non-ASCII characters is not defined.
    323  *
    324  * @param car    upper case character.
    325  *
    326  * @return    lower case character.
    327  */
    328 OSCL_IMPORT_REF char oscl_tolower(const char car);
    329 
    330 
    331 /**
    332  * convert upper case ASCII character to lower case.
    333  * behaviour of this function for non-ASCII characters is not defined.
    334  *
    335  * @param car    upper case character.
    336  *
    337  * @return    lower case character.
    338  */
    339 OSCL_IMPORT_REF oscl_wchar oscl_tolower(const oscl_wchar car);
    340 
    341 
    342 /**
    343  * check if supplied parameter is an alphabet (ASCII only).
    344  *
    345  * @param car
    346  *
    347  * @return    1 if car is an alphabet
    348  *            0 if car is not an alphabet.
    349  */
    350 OSCL_IMPORT_REF bool oscl_isLetter(const char car);
    351 
    352 
    353 /**
    354  * find the occurrence of sub-string in a string.
    355  *
    356  * @param str1   string.
    357  * @param str2   sub-string
    358  *
    359  * @return    pointer to the begining of sub-string.
    360  */
    361 OSCL_IMPORT_REF const char* oscl_strstr(const char* str1, const char* str2);
    362 OSCL_IMPORT_REF char* oscl_strstr(char* str1, const char* str2);
    363 
    364 
    365 /**
    366  * find the occurrence of sub-string in a string.
    367  *
    368  * @param str1   string.
    369  * @param str2   sub-string
    370  *
    371  * @return    pointer to the begining of sub-string.
    372  */
    373 OSCL_IMPORT_REF const oscl_wchar* oscl_strstr(const oscl_wchar* str1, const oscl_wchar* str2);
    374 OSCL_IMPORT_REF oscl_wchar* oscl_strstr(oscl_wchar* str1, const oscl_wchar* str2);
    375 
    376 
    377 /**
    378  * Appends string src to string dest, and then appends a
    379  * terminating null character. The initial character of src
    380  * overwrites the null character at the end of dest.
    381  * Subsequent characters in src are appended to dest until
    382  * the end of src is reached. If copying takes place between
    383  * objects that overlap, the behavior is undefined.
    384  *
    385  * @param dest   null terminated destination string
    386  * @param src    source string
    387  *
    388  *
    389  * @return dest
    390  */
    391 OSCL_IMPORT_REF char* oscl_strcat(char* dest, const char* src);
    392 
    393 
    394 /**
    395  * Appends up to count characters from string src to string
    396  * dest, and then appends a terminating null character. The
    397  * initial character of src overwrites the null character at
    398  * the end of dest. Subsequent characters in src are appended
    399  * to dest until either the end of src is reached or count
    400  * characters have been copied. If copying takes place between
    401  * objects that overlap, the behavior is undefined.
    402  *
    403  * @param dest   null terminated destination string
    404  * @param src    source string
    405  * @param count  number of characters to append.
    406  *
    407  * @return dest
    408  */
    409 OSCL_IMPORT_REF oscl_wchar* oscl_strcat(oscl_wchar* dest, const oscl_wchar* src);
    410 
    411 
    412 /*! @} */
    413 
    414 
    415 #endif
    416