From 01348e0ab622ceab00d8a09f31d7c47e53c9372f Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Fri, 2 Dec 2005 08:37:08 +0000 Subject: [PATCH] add inttypes.i wchar.i git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7914 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Lib/inttypes.i | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++ Lib/wchar.i | 9 ++++++ 2 files changed, 97 insertions(+) create mode 100644 Lib/inttypes.i create mode 100644 Lib/wchar.i diff --git a/Lib/inttypes.i b/Lib/inttypes.i new file mode 100644 index 000000000..7f4dab618 --- /dev/null +++ b/Lib/inttypes.i @@ -0,0 +1,88 @@ +/* + * ISO C99: 7.8 Format conversion of integer types + */ +%{ +#include +%} + +%include +%include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef SWIGWORDSIZE64 + + /* We have to define the `uintmax_t' type using `ldiv_t'. */ + typedef struct + { + long int quot; /* Quotient. */ + long int rem; /* Remainder. */ + } imaxdiv_t; + +#else + + /* We have to define the `uintmax_t' type using `lldiv_t'. */ + typedef struct + { + long long int quot; /* Quotient. */ + long long int rem; /* Remainder. */ + } imaxdiv_t; + +#endif + + /* Compute absolute value of N. */ + extern intmax_t imaxabs (intmax_t n); + + /* Return the `imaxdiv_t' representation of the value of NUMER over DENOM. */ + extern imaxdiv_t imaxdiv (intmax_t numer, intmax_t denom); + + /* Like `strtol' but convert to `intmax_t'. */ + extern intmax_t strtoimax (const char *nptr, char **endptr, int base); + + /* Like `strtoul' but convert to `uintmax_t'. */ + extern uintmax_t strtoumax (const char *nptr, char ** endptr, int base); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern intmax_t wcstoimax (const wchar_t *nptr, wchar_t **endptr, int base); + + /* Like `wcstoul' but convert to `uintmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t ** endptr, int base); +#endif + +#ifdef SWIGWORDSIZE64 + + /* Like `strtol' but convert to `intmax_t'. */ + extern intmax_t strtoimax (const char *nptr, char **endptr, int base); + + /* Like `strtoul' but convert to `uintmax_t'. */ + extern uintmax_t strtoumax (const char *nptr, char **endptr,int base); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern intmax_t wcstoimax (const wchar_t *nptr, wchar_t **endptr, int base); + + /* Like `wcstoul' but convert to `uintmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t **endptr, int base); +#endif + +#else /* SWIGWORDSIZE32 */ + + /* Like `strtol' but convert to `intmax_t'. */ + extern intmax_t strtoimax (const char *nptr, char **endptr, int base); + + /* Like `strtoul' but convert to `uintmax_t'. */ + extern uintmax_t strtoumax (const char *nptr, char **endptr, int base); + +#ifdef SWIG_WCHAR + /* Like `wcstol' but convert to `intmax_t'. */ + extern uintmax_t wcstoumax (const wchar_t *nptr, wchar_t **endptr, int base); +#endif + +#endif /* SWIGWORDSIZE32 */ + +#ifdef __cplusplus +} +#endif diff --git a/Lib/wchar.i b/Lib/wchar.i new file mode 100644 index 000000000..0d9ace635 --- /dev/null +++ b/Lib/wchar.i @@ -0,0 +1,9 @@ +/* + wchar_t not supported, unless otherwise specified in the target + language. + +*/ + +#if defined(SWIG_WCHAR) +#undef SWIG_WCHAR +#endif