minimal list of wx CRT wrappers (so doxygen highlights occurrences of wxFunc() if Func() is a std CRT function

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59683 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2009-03-21 00:40:12 +00:00
parent a6121fc4e0
commit 530793f0be
2 changed files with 235 additions and 174 deletions

View File

@@ -0,0 +1,18 @@
/////////////////////////////////////////////////////////////////////////////
// Name: funcmacro_crt.h
// Purpose: wx wrappers for CRT functions
// Author: wxWidgets team
// RCS-ID: $Id$
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
/**
@defgroup group_funcmacro_crt Wrappers of CRT functions
@ingroup group_funcmacro
For documentation of these functions please refer to the documentation
of the standard CRT functions (see e.g. http://www.cppreference.com/wiki/c/start).
*/

View File

@@ -1,184 +1,227 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: wxcrt.h // Name: wx/wxcrt.h
// Purpose: interface of global CRT wrapper functions // Purpose: interface of global wx wrappers for CRT functions
// Author: wxWidgets team // Author: wxWidgets team
// RCS-ID: $Id$ // RCS-ID: $Id$
// Licence: wxWindows license // Licence: wxWindows license
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
/** @addtogroup group_funcmacro_string */
/** @addtogroup group_funcmacro_crt */
//@{ //@{
/** bool wxIsEmpty(const char *s);
Returns @true if the pointer @a p is either @NULL or points to an empty string, bool wxIsEmpty(const wchar_t *s);
@false otherwise. bool wxIsEmpty(const wxCharBuffer& s);
bool wxIsEmpty(const wxWCharBuffer& s);
@header{wx/wxcrt.h} bool wxIsEmpty(const wxString& s);
*/ bool wxIsEmpty(const wxCStrData& s);
bool wxIsEmpty(const char* p); wxChar* wxTmemchr(const wxChar* s, wxChar c, size_t l);
int wxTmemcmp(const wxChar* sz1, const wxChar* sz2, size_t len);
/** wxChar* wxTmemcpy(wxChar* szOut, const wxChar* szIn, size_t len);
This is a safe version of standard function @e strlen(): it does exactly wxChar* wxTmemmove(wxChar* szOut, const wxChar* szIn, size_t len);
the same thing (i.e. returns the length of the string) except that it wxChar* wxTmemset(wxChar* szOut, const wxChar cIn, size_t len);
returns 0 if @a p is the @NULL pointer. char* wxTmemchr(const char* s, char c, size_t len);
int wxTmemcmp(const char* sz1, const char* sz2, size_t len);
@header{wx/wxcrt.h} char* wxTmemcpy(char* szOut, const char* szIn, size_t len);
*/ char* wxTmemmove(char* szOut, const char* szIn, size_t len);
size_t wxStrlen(const char* p); char* wxTmemset(char* szOut, const char cIn, size_t len);
char* wxSetlocale(int category, const wxCharBuffer& locale);
/** char* wxSetlocale(int category, const wxString& locale);
This is a safe version of standard function @e strlen(): it returns the length char* wxSetlocale(int category, const wxCStrData& locale);
of the string s in bytes if this length is smaller than @a maxlen bytes. size_t wxStrlen(const wxCharBuffer& s);
Otherwise it returns @a maxlen. size_t wxStrlen(const wxWCharBuffer& s);
size_t wxStrlen(const wxString& s);
The @a maxlen parameter makes it easier to avoid array indexing errors size_t wxStrlen(const wxCStrData& s);
since you are sure that wxStrnlen() won't read any memory exceeding the size_t wxStrnlen(const char *str, size_t maxlen);
@c "*(p+maxlen)" location. size_t wxStrnlen(const char *str, size_t maxlen);
size_t wxStrnlen(const wchar_t *str, size_t maxlen);
@since 2.9.0 size_t wxStrnlen(const wchar_t *str, size_t maxlen);
char* wxStrdup(const wxCharBuffer& s);
@header{wx/wxcrt.h} wchar_t* wxStrdup(const wxWCharBuffer& s);
*/ char* wxStrdup(const wxString& s);
size_t wxStrnlen(const char* p, size_t maxlen); char* wxStrdup(const wxCStrData& s);
char *wxStrcpy(char *dest, const char *src);
/** wchar_t *wxStrcpy(wchar_t *dest, const wchar_t *src);
This function complements the standard C function @e stricmp() which char *wxStrcpy(char *dest, const wxString& src);
performs case-insensitive comparison. char *wxStrcpy(char *dest, const wxCStrData& src);
char *wxStrcpy(char *dest, const wxCharBuffer& src);
@return A negative value, 0, or positive value if @a p1 is less than, wchar_t *wxStrcpy(wchar_t *dest, const wxString& src);
equal to or greater than @a p2. The comparison is case-sensitive. wchar_t *wxStrcpy(wchar_t *dest, const wxCStrData& src);
wchar_t *wxStrcpy(wchar_t *dest, const wxWCharBuffer& src);
@header{wx/wxcrt.h} char *wxStrcpy(char *dest, const wchar_t *src);
*/ wchar_t *wxStrcpy(wchar_t *dest, const char *src);
int wxStrcmp(const char* p1, const char* p2); char *wxStrncpy(char *dest, const char *src, size_t n);
wchar_t *wxStrncpy(wchar_t *dest, const wchar_t *src, size_t n);
/** char *wxStrncpy(char *dest, const wxString& src, size_t n);
This function complements the standard C function @e strcmp() which performs char *wxStrncpy(char *dest, const wxCStrData& src, size_t n);
case-sensitive comparison. char *wxStrncpy(char *dest, const wxCharBuffer& src, size_t n);
wchar_t *wxStrncpy(wchar_t *dest, const wxString& src, size_t n);
@return A negative value, 0, or positive value if @a p1 is less than, wchar_t *wxStrncpy(wchar_t *dest, const wxCStrData& src, size_t n);
equal to or greater than @e p2. The comparison is case-insensitive. wchar_t *wxStrncpy(wchar_t *dest, const wxWCharBuffer& src, size_t n);
char *wxStrncpy(char *dest, const wchar_t *src, size_t n);
@header{wx/wxcrt.h} wchar_t *wxStrncpy(wchar_t *dest, const char *src, size_t n);
*/ size_t wxStrlcpy(char *dest, const char *src, size_t n);
int wxStricmp(const char* p1, const char* p2); size_t wxStrlcpy(wchar_t *dest, const wchar_t *src, size_t n);
char *wxStrcat(char *dest, const char *src);
/** wchar_t *wxStrcat(wchar_t *dest, const wchar_t *src);
@deprecated Use wxString::operator== instead. char *wxStrcat(char *dest, const wxString& src);
char *wxStrcat(char *dest, const wxCStrData& src);
This macro is defined as: char *wxStrcat(char *dest, const wxCharBuffer& src);
wchar_t *wxStrcat(wchar_t *dest, const wxString& src);
@code wchar_t *wxStrcat(wchar_t *dest, const wxCStrData& src);
#define wxStringEq(s1, s2) (s1 && s2 && (strcmp(s1, s2) == 0)) wchar_t *wxStrcat(wchar_t *dest, const wxWCharBuffer& src);
@endcode char *wxStrcat(char *dest, const wchar_t *src);
wchar_t *wxStrcat(wchar_t *dest, const char *src);
@header{wx/wxcrt.h} char *wxStrncat(char *dest, const char *src, size_t n);
*/ wchar_t *wxStrncat(wchar_t *dest, const wchar_t *src, size_t n);
bool wxStringEq(const wxString& s1, const wxString& s2); char *wxStrncat(char *dest, const wxString& src, size_t n);
char *wxStrncat(char *dest, const wxCStrData& src, size_t n);
/** char *wxStrncat(char *dest, const wxCharBuffer& src, size_t n);
@deprecated Use wxString::Find() instead. wchar_t *wxStrncat(wchar_t *dest, const wxString& src, size_t n);
wchar_t *wxStrncat(wchar_t *dest, const wxCStrData& src, size_t n);
Returns @true if the substring @a s1 is found within @a s2, ignoring case wchar_t *wxStrncat(wchar_t *dest, const wxWCharBuffer& src, size_t n);
if @a exact is @false. If @a subString is @false, no substring matching is char *wxStrncat(char *dest, const wchar_t *src, size_t n);
done. wchar_t *wxStrncat(wchar_t *dest, const char *src, size_t n);
int wxStrcmp_String(const wxString& s1, const T& s2);
@header{wx/wxcrt.h} int wxStricmp_String(const wxString& s1, const T& s2);
*/ int wxStrcoll_String(const wxString& s1, const T& s2);;
bool wxStringMatch(const wxString& s1, const wxString& s2, int wxStrcoll_String(const wxString& s1, const T& s2);
bool subString = true, bool exact = false); size_t wxStrspn_String(const wxString& s1, const T& s2);
size_t wxStrcspn_String(const wxString& s1, const T& s2);
/** int wxStrncmp_String(const wxString& s1, const T& s2, size_t n);
This is a convenience function wrapping wxStringTokenizer which simply int wxStrnicmp_String(const wxString& s1, const T& s2, size_t n);
returns all tokens found in the given @a string in an array. size_t wxStrxfrm(char *dest, const char *src, size_t n);
size_t wxStrxfrm(wchar_t *dest, const wchar_t *src, size_t n);
Please see wxStringTokenizer::wxStringTokenizer() for a description of the size_t wxStrxfrm(T *dest, const wxCharTypeBuffer<T>& src, size_t n);
other parameters. size_t wxStrxfrm(char *dest, const wxString& src, size_t n);
size_t wxStrxfrm(wchar_t *dest, const wxString& src, size_t n);
@header{wx/wxcrt.h} size_t wxStrxfrm(char *dest, const wxCStrData& src, size_t n);
*/ size_t wxStrxfrm(wchar_t *dest, const wxCStrData& src, size_t n);
wxArrayString wxStringTokenize(const wxString& string, char *wxStrtok(char *str, const char *delim, char **saveptr);
const wxString& delims = wxDEFAULT_DELIMITERS, wchar_t *wxStrtok(wchar_t *str, const wchar_t *delim, wchar_t **saveptr);
wxStringTokenizerMode mode = wxTOKEN_DEFAULT); char *wxStrtok(char *str, const wxCStrData& delim, char **saveptr);
wchar_t *wxStrtok(wchar_t *str, const wxCStrData& delim, wchar_t **saveptr);
/** char *wxStrtok(char *str, const wxString& delim, char **saveptr);
Safe and more convenient replacement for strncpy(). wchar_t *wxStrtok(wchar_t *str, const wxString& delim, wchar_t **saveptr);
const char *wxStrstr(const char *haystack, const char *needle);
This function copies the source string @a src to the destination buffer @a const wchar_t *wxStrstr(const wchar_t *haystack, const wchar_t *needle);
dst of size @a n without overflowing the buffer and ensuring that it is const char *wxStrstr(const char *haystack, const wxString& needle);
always @NUL-terminated. const wchar_t *wxStrstr(const wchar_t *haystack, const wxString& needle);
const char *wxStrstr(const wxString& haystack, const wxString& needle);
Example of use: const char *wxStrstr(const wxCStrData& haystack, const wxString& needle);
@code const char *wxStrstr(const wxCStrData& haystack, const wxCStrData& needle);
char buf[256]; const char *wxStrstr(const wxString& haystack, const char *needle);
if ( wxStrlcpy(buf, GetSomeString(), WXSIZEOF(buf)) > WXSIZEOF(buf) ) const char *wxStrstr(const wxCStrData& haystack, const char *needle);
... handle truncation ... const wchar_t *wxStrstr(const wxString& haystack, const wchar_t *needle);
@endcode const wchar_t *wxStrstr(const wxCStrData& haystack, const wchar_t *needle);
Notice that using wxStrncpy() in similar way is wrong, the above is broadly const char *wxStrchr(const char *s, char c);
equivalent to const wchar_t *wxStrchr(const wchar_t *s, wchar_t c);
@code const char *wxStrrchr(const char *s, char c);
char buf[256]; const wchar_t *wxStrrchr(const wchar_t *s, wchar_t c);
buf[WXSIZEOF(buf) - 1] = '\0'; const char *wxStrchr(const char *s, const wxUniChar& c);
wxStrncpy(buf, GetSomeString(), WXSIZEOF(buf) - 1); const wchar_t *wxStrchr(const wchar_t *s, const wxUniChar& c);
if ( buf[WXSIZEOF(buf) - 1] != '\0' ) const char *wxStrrchr(const char *s, const wxUniChar& c);
{ const wchar_t *wxStrrchr(const wchar_t *s, const wxUniChar& c);
... truncation occurred ... const char *wxStrchr(const char *s, const wxUniCharRef& c);
// need to NUL-terminate string manually const wchar_t *wxStrchr(const wchar_t *s, const wxUniCharRef& c);
buf[WXSIZEOF(buf) - 1] = '\0'; const char *wxStrrchr(const char *s, const wxUniCharRef& c);
} const wchar_t *wxStrrchr(const wchar_t *s, const wxUniCharRef& c);
@endcode const T* wxStrchr(const wxCharTypeBuffer<T>& s, T c);
which should explain the advantage of using wxStrlcpy(). const T* wxStrrchr(const wxCharTypeBuffer<T>& s, T c);
const T* wxStrchr(const wxCharTypeBuffer<T>& s, const wxUniChar& c);
Notice that this function is similar to the OpenBSD strlcpy() function. const T* wxStrrchr(const wxCharTypeBuffer<T>& s, const wxUniChar& c);
const T* wxStrchr(const wxCharTypeBuffer<T>& s, const wxUniCharRef& c);
@param dst const T* wxStrrchr(const wxCharTypeBuffer<T>& s, const wxUniCharRef& c);
Destination buffer of size (greater or) equal to @a n. const char* wxStrchr(const wxString& s, char c);
@param src const char* wxStrrchr(const wxString& s, char c);
@NUL-terminated source string. const char* wxStrchr(const wxString& s, int c);
@param n const char* wxStrrchr(const wxString& s, int c);
The size of the destination buffer. const char* wxStrchr(const wxString& s, const wxUniChar& c);
@return const char* wxStrrchr(const wxString& s, const wxUniChar& c);
The length of @a src, if the returned value is greater or equal to @a n const char* wxStrchr(const wxString& s, const wxUniCharRef& c);
then there was not enough space in the destination buffer and the const char* wxStrrchr(const wxString& s, const wxUniCharRef& c);
string was truncated. const wchar_t* wxStrchr(const wxString& s, wchar_t c);
const wchar_t* wxStrrchr(const wxString& s, wchar_t c);
@since 2.9.0 const char* wxStrchr(const wxCStrData& s, char c);
const char* wxStrrchr(const wxCStrData& s, char c);
@header{wx/wxcrt.h} const char* wxStrchr(const wxCStrData& s, int c);
*/ const char* wxStrrchr(const wxCStrData& s, int c);
size_t wxStrlcpy(char *dst, const char *src, size_t n); const char* wxStrchr(const wxCStrData& s, const wxUniChar& c);
const char* wxStrrchr(const wxCStrData& s, const wxUniChar& c);
/** const char* wxStrchr(const wxCStrData& s, const wxUniCharRef& c);
This function replaces the dangerous standard function @e sprintf() and is const char* wxStrrchr(const wxCStrData& s, const wxUniCharRef& c);
like @e snprintf() available on some platforms. The only difference with const wchar_t* wxStrchr(const wxCStrData& s, wchar_t c);
@e sprintf() is that an additional argument - buffer size - is taken and const wchar_t* wxStrrchr(const wxCStrData& s, wchar_t c);
the buffer is never overflowed. const char *wxStrpbrk(const char *s, const char *accept);
const wchar_t *wxStrpbrk(const wchar_t *s, const wchar_t *accept);
Returns the number of characters copied to the buffer or -1 if there is not const char *wxStrpbrk(const char *s, const wxString& accept);
enough space. const char *wxStrpbrk(const char *s, const wxCStrData& accept);
const wchar_t *wxStrpbrk(const wchar_t *s, const wxString& accept);
@see wxVsnprintf(), wxString::Printf() const wchar_t *wxStrpbrk(const wchar_t *s, const wxCStrData& accept);
const char *wxStrpbrk(const wxString& s, const wxString& accept);
@header{wx/wxcrt.h} const char *wxStrpbrk(const wxString& s, const char *accept);
*/ const wchar_t *wxStrpbrk(const wxString& s, const wchar_t *accept);
int wxSnprintf(char* buf, size_t len, const char* format, ...); const char *wxStrpbrk(const wxString& s, const wxCStrData& accept);
const char *wxStrpbrk(const wxCStrData& s, const wxString& accept);
/** const char *wxStrpbrk(const wxCStrData& s, const char *accept);
The same as wxSnprintf() but takes a @c va_list argument instead of an const wchar_t *wxStrpbrk(const wxCStrData& s, const wchar_t *accept);
arbitrary number of parameters. const char *wxStrpbrk(const wxCStrData& s, const wxCStrData& accept);
const T *wxStrpbrk(const S& s, const wxCharTypeBuffer<T>& accept);
@note If @c wxUSE_PRINTF_POS_PARAMS is set to 1, then this function /* inlined non-const versions */;
supports positional arguments (see wxString::Printf() for more char *wxStrstr(char *haystack, const char *needle);
information). However other functions of the same family (wxPrintf(), wchar_t *wxStrstr(wchar_t *haystack, const wchar_t *needle);
wxSprintf(), wxFprintf(), wxVfprintf(), wxVfprintf(), wxVprintf(), char *wxStrstr(char *haystack, const wxString& needle);
wxVsprintf()) currently do not to support positional parameters even wchar_t *wxStrstr(wchar_t *haystack, const wxString& needle);
when @c wxUSE_PRINTF_POS_PARAMS is 1. char * wxStrchr(char *s, char c);
char * wxStrrchr(char *s, char c);
@see wxSnprintf(), wxString::PrintfV() wchar_t * wxStrchr(wchar_t *s, wchar_t c);
wchar_t * wxStrrchr(wchar_t *s, wchar_t c);
@header{wx/wxcrt.h} char * wxStrpbrk(char *s, const char *accept);
*/ wchar_t * wxStrpbrk(wchar_t *s, const wchar_t *accept);
int wxVsnprintf(char* buf, size_t len, const char* format, va_list argPtr); char * wxStrpbrk(char *s, const wxString& accept);
wchar_t * wxStrpbrk(wchar_t *s, const wxString& accept);
FILE *wxFopen(const wxString& path, const wxString& mode);
FILE *wxFreopen(const wxString& path, const wxString& mode, FILE *stream);
int wxRemove(const wxString& path);
int wxRename(const wxString& oldpath, const wxString& newpath);
char *wxFgets(char *s, int size, FILE *stream);
int wxFgetc(FILE *stream);
int wxUngetc(int c, FILE *stream);
int wxAtoi(const wxString& str);
int wxAtoi(const wxString& str);
long wxAtol(const wxString& str);
long wxAtol(const wxString& str);
double wxAtof(const wxString& str);
double wxAtof(const wxString& str);
double wxStrtod(const char *nptr, char **endptr);
double wxStrtod(const wchar_t *nptr, wchar_t **endptr);
double wxStrtod(const wxCharTypeBuffer<T>& nptr, T **endptr);
double wxStrtod(const wxString& nptr, T endptr);
double wxStrtod(const wxCStrData& nptr, T endptr);
int wxSystem(const wxString& str);
int wxSystem(const wxString& str);
char* wxGetenv(const char *name);
wchar_t* wxGetenv(const wchar_t *name);
char* wxGetenv(const wxString& name);
char* wxGetenv(const wxCStrData& name);
char* wxGetenv(const wxCharBuffer& name);
wchar_t* wxGetenv(const wxWCharBuffer& name);
size_t wxStrftime(char *s, size_t max, size_t max, const wxString& format, const struct tm *tm);
size_t wxStrftime(wchar_t *s, size_t max, size_t max, const wxString& format, const struct tm *tm);
bool wxIsalnum(const wxUniChar& c) ;
bool wxIsalpha(const wxUniChar& c) ;
bool wxIscntrl(const wxUniChar& c) ;
bool wxIsdigit(const wxUniChar& c) ;
bool wxIsgraph(const wxUniChar& c) ;
bool wxIslower(const wxUniChar& c) ;
bool wxIsprint(const wxUniChar& c) ;
bool wxIspunct(const wxUniChar& c) ;
bool wxIsspace(const wxUniChar& c) ;
bool wxIsupper(const wxUniChar& c) ;
bool wxIsxdigit(const wxUniChar& c);
wxUniChar wxTolower(const wxUniChar& c);
wxUniChar wxToupper(const wxUniChar& c);
int wxIsctrl(const wxUniChar& c);
//@} //@}