mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-27 12:11:41 +01:00 
			
		
		
		
	
		
			
	
	
		
			209 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			209 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /******************************************************************************
 | ||
|  |  * | ||
|  |  *  Copyright (C) 2014 The Android Open Source Project | ||
|  |  *  Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved. | ||
|  |  * | ||
|  |  *  Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  |  *  you may not use this file except in compliance with the License. | ||
|  |  *  You may obtain a copy of the License at: | ||
|  |  * | ||
|  |  *  http://www.apache.org/licenses/LICENSE-2.0
 | ||
|  |  * | ||
|  |  *  Unless required by applicable law or agreed to in writing, software | ||
|  |  *  distributed under the License is distributed on an "AS IS" BASIS, | ||
|  |  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  |  *  See the License for the specific language governing permissions and | ||
|  |  *  limitations under the License. | ||
|  |  * | ||
|  |  ******************************************************************************/ | ||
|  | #ifndef OI_STRING_H
 | ||
|  | #define OI_STRING_H
 | ||
|  | /**
 | ||
|  |  * @file | ||
|  |  * This file contains BM3 supplied portable string.h functions | ||
|  |  * | ||
|  |  */ | ||
|  | 
 | ||
|  | /**********************************************************************************
 | ||
|  |   $Revision: #1 $ | ||
|  | ***********************************************************************************/ | ||
|  | 
 | ||
|  | #include "oi_cpu_dep.h"
 | ||
|  | #include "oi_stddefs.h"
 | ||
|  | 
 | ||
|  | #if defined(USE_NATIVE_MEMCPY) || defined(USE_NATIVE_MALLOC)
 | ||
|  | #include <string.h>
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /** \addtogroup Misc Miscellaneous APIs */ | ||
|  | /**@{*/ | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * If we are using Native malloc(), we must also use | ||
|  |  * native Ansi string.h functions for memory manipulation. | ||
|  |  */ | ||
|  | #ifdef USE_NATIVE_MALLOC
 | ||
|  | #ifndef USE_NATIVE_MEMCPY
 | ||
|  | #define USE_NATIVE_MEMCPY
 | ||
|  | #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef USE_NATIVE_MEMCPY
 | ||
|  | 
 | ||
|  | #define OI_MemCopy(to, from, size)    memcpy((to), (from), (size))
 | ||
|  | #define OI_MemSet(block, val, size)   memset((block), (val), (size))
 | ||
|  | #define OI_MemZero(block, size)       memset((block), 0, (size))
 | ||
|  | #define OI_MemCmp(s1, s2, n)          memcmp((s1), (s2), (n))
 | ||
|  | #define OI_Strcpy(dest, src)          strcpy((dest),(src))
 | ||
|  | #define OI_Strcat(dest, src)          strcat((dest),(src))
 | ||
|  | #define OI_StrLen(str)                strlen((str))
 | ||
|  | #define OI_Strcmp(s1, s2)             strcmp((s1), (s2))
 | ||
|  | #define OI_Strncmp(s1, s2, n)         strncmp((s1), (s2), (n))
 | ||
|  | 
 | ||
|  | #else
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_MemCopy | ||
|  |  * | ||
|  |  * Copy an arbitrary number of bytes from one memory address to another. | ||
|  |  * The underlying implementation is the ANSI memmove() or equivalant, so | ||
|  |  * overlapping memory copies will work correctly. | ||
|  |  */ | ||
|  | void OI_MemCopy(void *To, void const *From, OI_UINT32 Size); | ||
|  | 
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_MemSet | ||
|  |  * | ||
|  |  * Sets all bytes in a block of memory to the same value | ||
|  |  */ | ||
|  | void OI_MemSet(void *Block, OI_UINT8 Val, OI_UINT32 Size); | ||
|  | 
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_MemZero | ||
|  |  * | ||
|  |  * Sets all bytes in a block of memory to zero | ||
|  |  */ | ||
|  | void OI_MemZero(void *Block, OI_UINT32 Size); | ||
|  | 
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_MemCmp | ||
|  |  * | ||
|  |  * Compare two blocks of memory | ||
|  |  * | ||
|  |  * Returns: | ||
|  |  *        0, if s1 == s2 | ||
|  |  *      < 0, if s1 < s2 | ||
|  |  *      > 0, if s2 > s2 | ||
|  |  */ | ||
|  | OI_INT OI_MemCmp(void const *s1, void const *s2, OI_UINT32 n); | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_Strcpy | ||
|  |  * | ||
|  |  * Copies the Null terminated string from pStr to pDest, and | ||
|  |  * returns pDest. | ||
|  |  */ | ||
|  | 
 | ||
|  | OI_CHAR *OI_Strcpy(OI_CHAR *pDest, | ||
|  |                    OI_CHAR const *pStr); | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_Strcat | ||
|  |  * | ||
|  |  * Concatonates the pStr string to the end of pDest, and | ||
|  |  * returns pDest. | ||
|  |  */ | ||
|  | 
 | ||
|  | OI_CHAR *OI_Strcat(OI_CHAR *pDest, | ||
|  |                    OI_CHAR const *pStr) ; | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_StrLen | ||
|  |  * | ||
|  |  * Calculates the number of OI_CHARs in pStr (not including | ||
|  |  * the Null terminator) and returns the value. | ||
|  |  */ | ||
|  | OI_UINT OI_StrLen(OI_CHAR const *pStr) ; | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_Strcmp | ||
|  |  * | ||
|  |  * Compares two Null terminated strings | ||
|  |  * | ||
|  |  * Returns: | ||
|  |  *        0, if s1 == s2 | ||
|  |  *      < 0, if s1 < s2 | ||
|  |  *      > 0, if s2 > s2 | ||
|  |  */ | ||
|  | OI_INT OI_Strcmp(OI_CHAR const *s1, | ||
|  |                  OI_CHAR const *s2); | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_Strncmp | ||
|  |  * | ||
|  |  * Compares the first "len" OI_CHARs of strings s1 and s2. | ||
|  |  * | ||
|  |  * Returns: | ||
|  |  *        0, if s1 == s2 | ||
|  |  *      < 0, if s1 < s2 | ||
|  |  *      > 0, if s2 > s2 | ||
|  |  */ | ||
|  | OI_INT OI_Strncmp(OI_CHAR const *s1, | ||
|  |                   OI_CHAR const *s2, | ||
|  |                   OI_UINT32      len); | ||
|  | 
 | ||
|  | 
 | ||
|  | #endif /* USE_NATIVE_MEMCPY */
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_StrcmpInsensitive | ||
|  |  * | ||
|  |  * Compares two Null terminated strings, treating | ||
|  |  * the Upper and Lower case of 'A' through 'Z' as | ||
|  |  * equivilent. | ||
|  |  * | ||
|  |  * Returns: | ||
|  |  *        0, if s1 == s2 | ||
|  |  *      < 0, if s1 < s2 | ||
|  |  *      > 0, if s2 > s2 | ||
|  |  */ | ||
|  | OI_INT OI_StrcmpInsensitive(OI_CHAR const *s1, | ||
|  |                             OI_CHAR const *s2); | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OI_StrncmpInsensitive | ||
|  |  * | ||
|  |  * Compares the first "len" OI_CHARs of strings s1 and s2, | ||
|  |  * treating the Upper and Lower case of 'A' through 'Z' as | ||
|  |  * equivilent. | ||
|  |  * | ||
|  |  * | ||
|  |  * Returns: | ||
|  |  *        0, if s1 == s2 | ||
|  |  *      < 0, if s1 < s2 | ||
|  |  *      > 0, if s2 > s2 | ||
|  |  */ | ||
|  | OI_INT OI_StrncmpInsensitive(OI_CHAR const *s1, | ||
|  |                              OI_CHAR const *s2, | ||
|  |                              OI_UINT        len); | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /*****************************************************************************/ | ||
|  | #endif /* OI_STRING_H */
 | ||
|  | 
 |