xref: /btstack/3rd-party/bluedroid/decoder/include/oi_string.h (revision df25739fc3ea5a0a90f0f5925e6461d653697d2e)
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