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