38#ifndef BLOCXX_SAFE_CSTRING_HPP_INCLUDE_GUARD_
39#define BLOCXX_SAFE_CSTRING_HPP_INCLUDE_GUARD_
41#include "blocxx/BLOCXX_config.h"
54#define vsnprintf _vsnprintf
74 inline char const *
nonull(
char const * s)
119 template <std::
size_t N>
inline
128 template <std::
size_t N>
inline
138 template <std::
size_t N>
inline
140 char (&
dst)[
N], std::size_t
pos,
char const *
src
150 template <std::
size_t N>
inline
206 template <std::
size_t N>
inline
215 template <std::
size_t N>
inline
225 template <std::
size_t N>
inline
227 char (&
dst)[
N], std::size_t
pos,
char const *
src
237 template <std::
size_t N>
inline
290 template <std::
size_t N>
inline
299 template <std::
size_t N>
inline
357 template <std::
size_t N>
inline
366 template <std::
size_t N>
inline
379 :
static_cast<std::size_t
>(
retval)
392 template <
typename T1>
406 template <
typename T1,
typename T2>
422 template <
typename T1,
typename T2,
typename T3>
438 template <
typename T1,
typename T2,
typename T3,
typename T4>
454 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
467 template <std::
size_t N,
typename T1>
476 template <std::
size_t N,
typename T1,
typename T2>
487 template <std::
size_t N,
typename T1,
typename T2,
typename T3>
489 char (&
dst)[
N],
char const *
fmt,
499 template <std::
size_t N,
typename T1,
typename T2,
typename T3,
typename T4>
501 char (&
dst)[
N],
char const *
fmt,
511 template <std::size_t
N,
typename T1,
typename T2,
typename T3,
typename T4,
514 char (&
dst)[
N],
char const *
fmt,
531 template <
typename T1>
547 template <
typename T1,
typename T2>
565 template <
typename T1,
typename T2,
typename T3>
583 template <
typename T1,
typename T2,
typename T3,
typename T4>
601 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
614 template <std::
size_t N,
typename T1>
623 template <std::
size_t N,
typename T1,
typename T2>
634 template <std::
size_t N,
typename T1,
typename T2,
typename T3>
636 char (&
dst)[
N],
char const *
fmt,
646 template <std::
size_t N,
typename T1,
typename T2,
typename T3,
typename T4>
648 char (&
dst)[
N],
char const *
fmt,
658 template <std::size_t
N,
typename T1,
typename T2,
typename T3,
typename T4,
661 char (&
dst)[
N],
char const *
fmt,
675 template <
typename T1>
686 template <std::
size_t N>
inline
711 template <std::
size_t N>
inline
720#define BLOCXX_INTSTR_AUX(x) # x
730#define BLOCXX_INTSTR(x) BLOCXX_INTSTR_AUX(x)
#define BLOCXX_DECLARE_EXCEPTION(NAME)
Declare a new exception class named <NAME>Exception that derives from Exception This macro is typical...
std::size_t nchars_output(int retval, std::size_t dstsize)
std::size_t nchars_check(int retval, std::size_t dstsize)
char * str_dup_nothrow(char const *s)
Like std::strdup, except that no-throw new is used to allocate memory and NULL is returned on allocat...
std::size_t strcpy_to_pos_check(char(&dst)[N], std::size_t pos, char const *src)
Like strcpy_check, but the destination is the subarray dst[pos..N-1] and the return value is an array...
char const * nonull(char const *s)
RETURNS: s if s is nonnull, otherwise returns empty string.
int const DEST_UNTERMINATED
std::size_t sprintf_check(char *dst, std::size_t dstsize, char const *fmt, T1 const &x1)
PROMISE: Behaves like sprintf(dst, fmt, ...) except that output stops at dstsize - 1 characters.
char * strcpy_trunc(char *dst, std::size_t dstsize, char const *src)
PROMISE: copies the first n = min(strlen(src), dstsize - 1) characters of C-string src to dst,...
std::size_t vprintf_trunc(char *dst, std::size_t dstsize, char const *fmt, va_list ap)
PROMISE: Behaves like vprintf(dst, fmt, ap) except that output stops at dstsize - 1 characters.
char * str_dup(char const *s)
Like std::strdup, except that new is used to allocate memory.
std::size_t strcpy_to_pos_trunc(char(&dst)[N], std::size_t pos, char const *src)
Like strcpy_trunc, but the destination is the subarray dst[pos..N-1] and the return value is an array...
char * strcpy_check(char *dst, std::size_t dstsize, char const *src)
PROMISE: copies the first n = min(strlen(src), dstsize - 1) chars of the C-string src to dst and appe...
char * strcat_check(char *dst, std::size_t dstsize, char const *src)
PROMISE: If dst[0..dstsize-1] contains a '\0', appends to C-string dst the first min(strlen(src),...
int const RESULT_TRUNCATED
Error codes for use with OverflowException class.
char * strcat_trunc(char *dst, std::size_t dstsize, char const *src)
PROMISE: If dst[0..dstsize-1] contains a '\0', appends to C-string dst the first min(strlen(src),...
std::size_t vprintf_check(char *dst, std::size_t dstsize, char const *fmt, va_list ap)
PROMISE: Behaves like vprintf(dst, fmt, ap) except that output stops at dstsize - 1 characters.
std::size_t sprintf_trunc(char *dst, std::size_t dstsize, char const *fmt, T1 const &x1)
PROMISE: Behaves like sprintf(dst, fmt, ...) except that output stops at dstsize - 1 characters.
bool operator==(const Array< T > &x, const Array< T > &y)