Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2014 The Android Open Source Project
      4  *  Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved.
      5  *
      6  *  Licensed under the Apache License, Version 2.0 (the "License");
      7  *  you may not use this file except in compliance with the License.
      8  *  You may obtain a copy of the License at:
      9  *
     10  *  http://www.apache.org/licenses/LICENSE-2.0
     11  *
     12  *  Unless required by applicable law or agreed to in writing, software
     13  *  distributed under the License is distributed on an "AS IS" BASIS,
     14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15  *  See the License for the specific language governing permissions and
     16  *  limitations under the License.
     17  *
     18  ******************************************************************************/
     19 #ifndef OI_STRING_H
     20 #define OI_STRING_H
     21 /**
     22  * @file
     23  * This file contains BM3 supplied portable string.h functions
     24  *
     25  */
     26 
     27 /**********************************************************************************
     28   $Revision: #1 $
     29 ***********************************************************************************/
     30 
     31 #include "oi_cpu_dep.h"
     32 #include "oi_stddefs.h"
     33 
     34 #if defined(USE_NATIVE_MEMCPY) || defined(USE_NATIVE_MALLOC)
     35 #include <string.h>
     36 #endif
     37 
     38 /** \addtogroup Misc Miscellaneous APIs */
     39 /**@{*/
     40 
     41 #ifdef __cplusplus
     42 extern "C" {
     43 #endif
     44 
     45 
     46 /*
     47  * If we are using Native malloc(), we must also use
     48  * native Ansi string.h functions for memory manipulation.
     49  */
     50 #ifdef USE_NATIVE_MALLOC
     51 #ifndef USE_NATIVE_MEMCPY
     52 #define USE_NATIVE_MEMCPY
     53 #endif
     54 #endif
     55 
     56 #ifdef USE_NATIVE_MEMCPY
     57 
     58 #define OI_MemCopy(to, from, size)    memcpy((to), (from), (size))
     59 #define OI_MemSet(block, val, size)   memset((block), (val), (size))
     60 #define OI_MemZero(block, size)       memset((block), 0, (size))
     61 #define OI_MemCmp(s1, s2, n)          memcmp((s1), (s2), (n))
     62 #define OI_Strcpy(dest, src)          strcpy((dest),(src))
     63 #define OI_Strcat(dest, src)          strcat((dest),(src))
     64 #define OI_StrLen(str)                strlen((str))
     65 #define OI_Strcmp(s1, s2)             strcmp((s1), (s2))
     66 #define OI_Strncmp(s1, s2, n)         strncmp((s1), (s2), (n))
     67 
     68 #else
     69 
     70 /*
     71  * OI_MemCopy
     72  *
     73  * Copy an arbitrary number of bytes from one memory address to another.
     74  * The underlying implementation is the ANSI memmove() or equivalant, so
     75  * overlapping memory copies will work correctly.
     76  */
     77 void OI_MemCopy(void *To, void const *From, OI_UINT32 Size);
     78 
     79 
     80 /*
     81  * OI_MemSet
     82  *
     83  * Sets all bytes in a block of memory to the same value
     84  */
     85 void OI_MemSet(void *Block, OI_UINT8 Val, OI_UINT32 Size);
     86 
     87 
     88 /*
     89  * OI_MemZero
     90  *
     91  * Sets all bytes in a block of memory to zero
     92  */
     93 void OI_MemZero(void *Block, OI_UINT32 Size);
     94 
     95 
     96 /*
     97  * OI_MemCmp
     98  *
     99  * Compare two blocks of memory
    100  *
    101  * Returns:
    102  *        0, if s1 == s2
    103  *      < 0, if s1 < s2
    104  *      > 0, if s2 > s2
    105  */
    106 OI_INT OI_MemCmp(void const *s1, void const *s2, OI_UINT32 n);
    107 
    108 /*
    109  * OI_Strcpy
    110  *
    111  * Copies the Null terminated string from pStr to pDest, and
    112  * returns pDest.
    113  */
    114 
    115 OI_CHAR* OI_Strcpy(OI_CHAR *pDest,
    116                    OI_CHAR const *pStr);
    117 
    118 /*
    119  * OI_Strcat
    120  *
    121  * Concatonates the pStr string to the end of pDest, and
    122  * returns pDest.
    123  */
    124 
    125 OI_CHAR* OI_Strcat(OI_CHAR *pDest,
    126                    OI_CHAR const *pStr) ;
    127 
    128 /*
    129  * OI_StrLen
    130  *
    131  * Calculates the number of OI_CHARs in pStr (not including
    132  * the Null terminator) and returns the value.
    133  */
    134 OI_UINT OI_StrLen(OI_CHAR const *pStr) ;
    135 
    136 /*
    137  * OI_Strcmp
    138  *
    139  * Compares two Null terminated strings
    140  *
    141  * Returns:
    142  *        0, if s1 == s2
    143  *      < 0, if s1 < s2
    144  *      > 0, if s2 > s2
    145  */
    146 OI_INT OI_Strcmp(OI_CHAR const *s1,
    147                  OI_CHAR const *s2);
    148 
    149 /*
    150  * OI_Strncmp
    151  *
    152  * Compares the first "len" OI_CHARs of strings s1 and s2.
    153  *
    154  * Returns:
    155  *        0, if s1 == s2
    156  *      < 0, if s1 < s2
    157  *      > 0, if s2 > s2
    158  */
    159 OI_INT OI_Strncmp(OI_CHAR const *s1,
    160                   OI_CHAR const *s2,
    161                   OI_UINT32      len);
    162 
    163 
    164 #endif /* USE_NATIVE_MEMCPY */
    165 
    166 /*
    167  * OI_StrcmpInsensitive
    168  *
    169  * Compares two Null terminated strings, treating
    170  * the Upper and Lower case of 'A' through 'Z' as
    171  * equivilent.
    172  *
    173  * Returns:
    174  *        0, if s1 == s2
    175  *      < 0, if s1 < s2
    176  *      > 0, if s2 > s2
    177  */
    178 OI_INT OI_StrcmpInsensitive(OI_CHAR const *s1,
    179                             OI_CHAR const *s2);
    180 
    181 /*
    182  * OI_StrncmpInsensitive
    183  *
    184  * Compares the first "len" OI_CHARs of strings s1 and s2,
    185  * treating the Upper and Lower case of 'A' through 'Z' as
    186  * equivilent.
    187  *
    188  *
    189  * Returns:
    190  *        0, if s1 == s2
    191  *      < 0, if s1 < s2
    192  *      > 0, if s2 > s2
    193  */
    194 OI_INT OI_StrncmpInsensitive(OI_CHAR const *s1,
    195                              OI_CHAR const *s2,
    196                              OI_UINT        len);
    197 
    198 
    199 
    200 #ifdef __cplusplus
    201 }
    202 #endif
    203 
    204 /** @} */
    205 
    206 /*****************************************************************************/
    207 #endif /* OI_STRING_H */
    208 
    209