mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-11-03 23:51:39 +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 */
							 | 
						||
| 
								 | 
							
								
							 |