355 lines
9.5 KiB
C
355 lines
9.5 KiB
C
/*
|
|
* Copyright 2001-2008 Texas Instruments - http://www.ti.com/
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
|
|
/*
|
|
* ======== csl.h ========
|
|
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
|
|
* Purpose:
|
|
* Platform independent C Standard library functions.
|
|
*
|
|
* Public Functions:
|
|
* CSL_AnsiToWchar
|
|
* CSL_Atoi
|
|
* CSL_ByteSwap
|
|
* CSL_Exit
|
|
* CSL_Init
|
|
* CSL_NumToAscii
|
|
* CSL_Strcmp
|
|
* CSL_Strcpyn
|
|
* CSL_Strlen
|
|
* CSL_Strncat
|
|
* CSL_Strncmp
|
|
* CSL_Strtok
|
|
* CSL_Strtokr
|
|
* CSL_WcharToAnsi
|
|
* CSL_Wstrlen
|
|
*
|
|
*! Revision History:
|
|
*! ================
|
|
*! 07-Aug-2002 jeh: Added CSL_Strtokr().
|
|
*! 21-Sep-2001 jeh: Added CSL_Strncmp.
|
|
*! 22-Nov-2000 map: Added CSL_Atoi and CSL_Strtok
|
|
*! 19-Nov-2000 kc: Added CSL_ByteSwap().
|
|
*! 09-Nov-2000 kc: Added CSL_Strncat.
|
|
*! 29-Oct-1999 kc: Added CSL_Wstrlen().
|
|
*! 20-Sep-1999 ag: Added CSL_Wchar2Ansi().
|
|
*! 19-Jan-1998 cr: Code review cleanup (mostly documentation fixes).
|
|
*! 29-Dec-1997 cr: Changed CSL_lowercase to CSL_Uppercase, added
|
|
*! CSL_AnsiToWchar.
|
|
*! 30-Sep-1997 cr: Added explicit cdecl descriptors to fxn definitions.
|
|
*! 25-Jun-1997 cr: Added CSL_strcmp.
|
|
*! 12-Jun-1996 gp: Created.
|
|
*/
|
|
|
|
#ifndef CSL_
|
|
#define CSL_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <dspapi.h>
|
|
|
|
#ifdef UNICODE
|
|
/*
|
|
* ======== CSL_AnsiToWchar ========
|
|
* Purpose:
|
|
* Convert an ansi string to a wide char string.
|
|
* Parameters:
|
|
* wpstrDest: wide char buffer pointer.
|
|
* pstrSource: ansi string buffer pointer.
|
|
* uSize: size of wpstrDest buffer.
|
|
* Returns:
|
|
* Number of characters copied into wpstrDest, excluding the NULL char.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* Ensures:
|
|
* Details:
|
|
* uSize is the number of CHARACTERS in wpstrDest, NOT the number of BYTES
|
|
* in wpstrDest. with a WCHAR, the number of characters is bytes/2.
|
|
*/
|
|
extern ULONG CSL_AnsiToWchar(OUT WCHAR * pwszDest,
|
|
IN PSTR pstrSource, ULONG uSize);
|
|
#endif
|
|
|
|
/*
|
|
* ======== CSL_Atoi ========
|
|
* Purpose:
|
|
* Convert a 1 or 2 digit string number into an integer
|
|
* Parameters:
|
|
* ptstrSrc: pointer to string.
|
|
* Returns:
|
|
* Integer
|
|
* Requires:
|
|
* CSL initialized.
|
|
* ptstrSrc is a valid string pointer.
|
|
* Ensures:
|
|
*/
|
|
extern INT CSL_Atoi(IN CONST CHAR * ptstrSrc);
|
|
|
|
/*
|
|
* ======== CSL_ByteSwap ========
|
|
* Purpose:
|
|
* Convert an ansi string to a wide char string.
|
|
* Parameters:
|
|
* pstrSrc: Data to be copied and swapped.
|
|
* pstrDest: Output buffer for swapped data.
|
|
* ulBytes: Number of bytes to be swapped (should be even).
|
|
* Returns:
|
|
* Requires:
|
|
* CSL initialized.
|
|
* Ensures:
|
|
* Details:
|
|
*/
|
|
extern VOID CSL_ByteSwap(IN PSTR pstrSrc,
|
|
OUT PSTR pstrDest, IN ULONG ulBytes);
|
|
|
|
/*
|
|
* ======== CSL_Exit ========
|
|
* Purpose:
|
|
* Discontinue usage of the CSL module.
|
|
* Parameters:
|
|
* Returns:
|
|
* Requires:
|
|
* CSL initialized.
|
|
* Ensures:
|
|
* Resources acquired in CSL_Init() are freed.
|
|
*/
|
|
extern VOID CSL_Exit();
|
|
|
|
/*
|
|
* ======== CSL_Init ========
|
|
* Purpose:
|
|
* Initialize the CSL module's private state.
|
|
* Parameters:
|
|
* Returns:
|
|
* TRUE if initialized; FALSE if error occured.
|
|
* Requires:
|
|
* Ensures:
|
|
* A requirement for each of the other public CSL functions.
|
|
*/
|
|
extern bool CSL_Init();
|
|
|
|
/*
|
|
* ======== CSL_NumToAscii ========
|
|
* Purpose:
|
|
* Convert a 1 or 2 digit number to a 2 digit string.
|
|
* Parameters:
|
|
* pstrNumber: Buffer to store converted string.
|
|
* dwNum: Number to convert.
|
|
* Returns:
|
|
* Requires:
|
|
* pstrNumber must be able to hold at least three characters.
|
|
* Ensures:
|
|
* pstrNumber will be null terminated.
|
|
*/
|
|
extern VOID CSL_NumToAscii(OUT PSTR pstrNumber, IN DWORD dwNum);
|
|
|
|
/*
|
|
* ======== CSL_Strcmp ========
|
|
* Purpose:
|
|
* Compare 2 ASCII strings. Works the same way as stdio's strcmp.
|
|
* Parameters:
|
|
* pstrStr1: String 1.
|
|
* pstrStr2: String 2.
|
|
* Returns:
|
|
* A signed value that gives the results of the comparison:
|
|
* Zero: String1 equals String2.
|
|
* < Zero: String1 is less than String2.
|
|
* > Zero: String1 is greater than String2.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* pstrStr1 is valid.
|
|
* pstrStr2 is valid.
|
|
* Ensures:
|
|
*/
|
|
extern LONG CSL_Strcmp(IN CONST PSTR pstrStr1, IN CONST PSTR pstrStr2);
|
|
|
|
/*
|
|
* ======== CSL_Strcpyn ========
|
|
* Purpose:
|
|
* Safe strcpy function.
|
|
* Parameters:
|
|
* pstrDest: Ptr to destination buffer.
|
|
* pstrSrc: Ptr to source buffer.
|
|
* cMax: Size of destination buffer.
|
|
* Returns:
|
|
* Ptr to destination buffer; or NULL if error.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* pstrDest is valid.
|
|
* pstrSrc is valid.
|
|
* Ensures:
|
|
* Will not copy more than cMax bytes from pstrSrc into pstrDest.
|
|
* pstrDest will be terminated by a NULL character.
|
|
*/
|
|
extern PSTR CSL_Strcpyn(OUT PSTR pstrDest, IN CONST PSTR pstrSrc,
|
|
IN DWORD cMax);
|
|
|
|
/*
|
|
* ======== CSL_Strstr ========
|
|
* Purpose:
|
|
* Find substring in a stringn.
|
|
* Parameters:
|
|
* haystack: Ptr to string1.
|
|
* needle: Ptr to substring to catch.
|
|
* Returns:
|
|
* Ptr to first char matching the substring in the main string.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* haystack is valid.
|
|
* needle is valid.
|
|
* Ensures:
|
|
*/
|
|
extern PSTR CSL_Strstr(IN CONST PSTR haystack, IN CONST PSTR needle);
|
|
|
|
/*
|
|
* ======== CSL_Strlen ========
|
|
* Purpose:
|
|
* Determine the length of a null terminated ASCI string.
|
|
* Parameters:
|
|
* pstrSrc: pointer to string.
|
|
* Returns:
|
|
* String length in bytes.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* pstrSrc is a valid string pointer.
|
|
* Ensures:
|
|
*/
|
|
extern DWORD CSL_Strlen(IN CONST PSTR pstrSrc);
|
|
|
|
/*
|
|
* ======== CSL_Strncat ========
|
|
* Purpose:
|
|
* Concatenate two strings together.
|
|
* Parameters:
|
|
* pszDest: Destination string.
|
|
* pszSrc: Source string.
|
|
* dwSize: Number of characters to copy.
|
|
* Returns:
|
|
* Pointer to destination string.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* pszDest and pszSrc are valid pointers.
|
|
* Ensures:
|
|
*/
|
|
extern PSTR CSL_Strncat(IN PSTR pszDest,
|
|
IN PSTR pszSrc, IN DWORD dwSize);
|
|
|
|
/*
|
|
* ======== CSL_Strncmp ========
|
|
* Purpose:
|
|
* Compare at most n characters of two ASCII strings. Works the same
|
|
* way as stdio's strncmp.
|
|
* Parameters:
|
|
* pstrStr1: String 1.
|
|
* pstrStr2: String 2.
|
|
* n: Number of characters to compare.
|
|
* Returns:
|
|
* A signed value that gives the results of the comparison:
|
|
* Zero: String1 equals String2.
|
|
* < Zero: String1 is less than String2.
|
|
* > Zero: String1 is greater than String2.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* pstrStr1 is valid.
|
|
* pstrStr2 is valid.
|
|
* Ensures:
|
|
*/
|
|
extern LONG CSL_Strncmp(IN CONST PSTR pstrStr1,
|
|
IN CONST PSTR pstrStr2, IN DWORD n);
|
|
|
|
/*
|
|
* ======== CSL_Strtok ========
|
|
* Purpose:
|
|
* Tokenize a NULL terminated string
|
|
* Parameters:
|
|
* ptstrSrc: pointer to string.
|
|
* szSeparators: pointer to a string of seperators
|
|
* Returns:
|
|
* String
|
|
* Requires:
|
|
* CSL initialized.
|
|
* ptstrSrc is a valid string pointer.
|
|
* szSeparators is a valid string pointer.
|
|
* Ensures:
|
|
*/
|
|
extern CHAR *CSL_Strtok(IN CHAR * ptstrSrc,
|
|
IN CONST CHAR * szSeparators);
|
|
|
|
/*
|
|
* ======== CSL_Strtokr ========
|
|
* Purpose:
|
|
* Re-entrant version of strtok.
|
|
* Parameters:
|
|
* pstrSrc: Pointer to string. May be NULL on subsequent calls.
|
|
* szSeparators: Pointer to a string of seperators
|
|
* ppstrCur: Location to store start of string for next call to
|
|
* to CSL_Strtokr.
|
|
* Returns:
|
|
* String (the token)
|
|
* Requires:
|
|
* CSL initialized.
|
|
* szSeparators != NULL
|
|
* ppstrCur != NULL
|
|
* Ensures:
|
|
*/
|
|
extern CHAR *CSL_Strtokr(IN CHAR * pstrSrc,
|
|
IN CONST CHAR * szSeparators,
|
|
OUT CHAR ** ppstrCur);
|
|
|
|
#ifdef UNICODE
|
|
/*
|
|
* ======== CSL_WcharToAnsi ========
|
|
* Purpose:
|
|
* Convert a wide char string to an ansi string.
|
|
* Parameters:
|
|
* pstrDest: ansi string buffer pointer.
|
|
* pwszSource: wide char buffer pointer.
|
|
* uSize: number of chars to convert.
|
|
* Returns:
|
|
* Number of characters copied into pstrDest.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* Ensures:
|
|
* Details:
|
|
* lNumOfChars is the number of CHARACTERS in wpstrDest, NOT the number of
|
|
* BYTES
|
|
*/
|
|
extern ULONG CSL_WcharToAnsi(OUT PSTR pstrDest,
|
|
IN WCHAR * pwszSource, IN ULONG uSize);
|
|
|
|
/*
|
|
* ======== CSL_Wstrlen ========
|
|
* Purpose:
|
|
* Determine the length of a null terminated UNICODE string.
|
|
* Parameters:
|
|
* ptstrSrc: pointer to string.
|
|
* Returns:
|
|
* String length in bytes.
|
|
* Requires:
|
|
* CSL initialized.
|
|
* ptstrSrc is a valid string pointer.
|
|
* Ensures:
|
|
*/
|
|
extern DWORD CSL_Wstrlen(IN CONST TCHAR * ptstrSrc);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* CSL_ */
|