From ac024a8026016de0f8eb749bc7988f1a45573332 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Thu, 19 Feb 2015 06:47:13 -1000 Subject: Latest Intrim C++11 workaround waitng on feedback --- nuttx-patches/c++11.patch | 142 ++++++++++++++++++++++++++++++++++++++++++++ nuttx-patches/ctime.patch | 12 ---- nuttx-patches/wchar.h.patch | 57 ------------------ 3 files changed, 142 insertions(+), 69 deletions(-) create mode 100644 nuttx-patches/c++11.patch delete mode 100644 nuttx-patches/ctime.patch delete mode 100644 nuttx-patches/wchar.h.patch diff --git a/nuttx-patches/c++11.patch b/nuttx-patches/c++11.patch new file mode 100644 index 000000000..17b3fd52f --- /dev/null +++ b/nuttx-patches/c++11.patch @@ -0,0 +1,142 @@ +diff --git NuttX/nuttx/include/cxx/cwchar NuttX/nuttx/include/cxx/cwchar +index 60c261d..68a1c04 100755 +--- NuttX/nuttx/include/cxx/cwchar ++++ NuttX/nuttx/include/cxx/cwchar +@@ -46,4 +46,97 @@ + // Namespace + //*************************************************************************** + ++namespace std ++{ ++ using ::mbstate_t; ++} // namespace std ++ ++/* These functions are not implemented, but listed here to allow compilation ++* Any resulting linker error will require the implementation of the offending ++* function(s) Code contributions are welcome. ++*/ ++ ++#if __cplusplus >= 201103L ++ ++wint_t btowc(int); ++int fwprintf(FILE *, const wchar_t *, ...); ++int fwscanf(FILE *, const wchar_t *, ...); ++int iswalnum(wint_t); ++int iswalpha(wint_t); ++int iswcntrl(wint_t); ++int iswdigit(wint_t); ++int iswgraph(wint_t); ++int iswlower(wint_t); ++int iswprint(wint_t); ++int iswpunct(wint_t); ++int iswspace(wint_t); ++int iswupper(wint_t); ++int iswxdigit(wint_t); ++int iswctype(wint_t, wctype_t); ++wint_t fgetwc(FILE *); ++wchar_t *fgetws(wchar_t *, int, FILE *); ++wint_t fputwc(wchar_t, FILE *); ++int fputws(const wchar_t *, FILE *); ++int fwide(FILE *, int); ++wint_t getwc(FILE *); ++wint_t getwchar(void); ++int mbsinit(const mbstate_t *); ++size_t mbrlen(const char *, size_t, mbstate_t *); ++size_t mbrtowc(wchar_t *, const char *, size_t, ++ mbstate_t *); ++size_t mbsrtowcs(wchar_t *, const char **, size_t, ++ mbstate_t *); ++wint_t putwc(wchar_t, FILE *); ++wint_t putwchar(wchar_t); ++int swprintf(wchar_t *, size_t, const wchar_t *, ...); ++int swscanf(const wchar_t *, const wchar_t *, ...); ++wint_t towlower(wint_t); ++wint_t towupper(wint_t); ++wint_t ungetwc(wint_t, FILE *); ++int vfwprintf(FILE *, const wchar_t *, va_list); ++int vwprintf(const wchar_t *, va_list); ++int vswprintf(wchar_t *, size_t, const wchar_t *, ++ va_list); ++size_t wcrtomb(char *, wchar_t, mbstate_t *); ++wchar_t *wcscat(wchar_t *, const wchar_t *); ++wchar_t *wcschr(const wchar_t *, wchar_t); ++int wcscmp(const wchar_t *, const wchar_t *); ++int wcscoll(const wchar_t *, const wchar_t *); ++wchar_t *wcscpy(wchar_t *, const wchar_t *); ++size_t wcscspn(const wchar_t *, const wchar_t *); ++size_t wcsftime(wchar_t *, size_t, const wchar_t *, ++ const struct tm *); ++size_t wcslen(const wchar_t *); ++wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t); ++int wcsncmp(const wchar_t *, const wchar_t *, size_t); ++wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t); ++wchar_t *wcspbrk(const wchar_t *, const wchar_t *); ++wchar_t *wcsrchr(const wchar_t *, wchar_t); ++size_t wcsrtombs(char *, const wchar_t **, size_t, ++ mbstate_t *); ++size_t wcsspn(const wchar_t *, const wchar_t *); ++wchar_t *wcsstr(const wchar_t *, const wchar_t *); ++double wcstod(const wchar_t *, wchar_t **); ++wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **); ++long int wcstol(const wchar_t *, wchar_t **, int); ++unsigned long int wcstoul(const wchar_t *, wchar_t **, int); ++wchar_t *wcswcs(const wchar_t *, const wchar_t *); ++int wcswidth(const wchar_t *, size_t); ++size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); ++int wctob(wint_t); ++wctype_t wctype(const char *); ++int wcwidth(wchar_t); ++wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); ++int wmemcmp(const wchar_t *, const wchar_t *, size_t); ++wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t); ++wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); ++wchar_t *wmemset(wchar_t *, wchar_t, size_t); ++int wprintf(const wchar_t *, ...); ++int wscanf(const wchar_t *, ...); ++int vfwscanf(FILE *, const wchar_t *, va_list); ++int vswscanf(const wchar_t *, const wchar_t *, va_list); ++int vwscanf(const wchar_t *, va_list); ++float wcstof(const wchar_t *, wchar_t **); ++ ++#endif + #endif // __INCLUDE_CXX_CWCHAR +diff --git NuttX/nuttx/include/wchar.h NuttX/nuttx/include/wchar.h +index 54fa796..263212a 100644 +--- NuttX/nuttx/include/wchar.h ++++ NuttX/nuttx/include/wchar.h +@@ -93,15 +93,31 @@ + * wctype_t + * A scalar type of a data object that can hold values which represent + * locale-specific character classification. +- * +- * mbstate_t ++ */ ++ ++#ifndef _WCTYPE_T ++#define _WCTYPE_T ++# ifdef _AEABI_PORTABLE ++typedef void *wctype_t; ++# else ++typedef int wctype_t; ++# endif ++#endif /* !_WCTYPE_T */ ++ ++ /* mbstate_t + * An object type other than an array type that can hold the conversion + * state information necessary to convert between sequences of (possibly + * multibyte) characters and wide-characters. If a codeset is being used + * such that an mbstate_t needs to preserve more than 2 levels of reserved + * state, the results are unspecified. +- * +- * FILE ++ */ ++ ++typedef struct ++{ ++ int __fill[6]; ++} mbstate_t; ++ ++/* FILE + * As described in . + * + * size_t diff --git a/nuttx-patches/ctime.patch b/nuttx-patches/ctime.patch deleted file mode 100644 index 4d8b1fd0f..000000000 --- a/nuttx-patches/ctime.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git NuttX/nuttx/include/cxx/ctime NuttX/nuttx/include/cxx/ctime -index 3d3dfae..18fdded 100644 ---- NuttX/nuttx/include/cxx/ctime -+++ NuttX/nuttx/include/cxx/ctime -@@ -53,7 +53,6 @@ namespace std - using ::clockid_t; - using ::timer_t; - using ::timespec; -- using ::timeval; - using ::tm; - using ::itimerspec; - using ::sigevent; diff --git a/nuttx-patches/wchar.h.patch b/nuttx-patches/wchar.h.patch deleted file mode 100644 index 716db992e..000000000 --- a/nuttx-patches/wchar.h.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff --git NuttX/nuttx/include/wchar.h NuttX/nuttx/include/wchar.h -index 54fa796..889b272 100644 ---- NuttX/nuttx/include/wchar.h -+++ NuttX/nuttx/include/wchar.h -@@ -118,7 +118,19 @@ typedef int wint_t; - * Reference: Opengroup.org - */ - --struct tm; /* Forward reference (see ) */ -+ struct tm; /* Forward reference (see ) */ -+ -+/* An object type other than an array type that can hold the conversion state -+ * information necessary to convert between sequences of (possibly multi-byte) -+ * characters and wide characters. If a codeset is being -+ * used such that an mbstate_t needs to preserve more than two levels of -+ * reserved state, the results are unspecified. -+ */ -+ -+typedef struct -+{ -+ int __fill[6]; -+} mbstate_t; - - /**************************************************************************** - * Public Data -@@ -142,7 +154,18 @@ extern "C" - * Reference: Opengroup.org - */ - --#if 0 /* Not yet implemented */ -+ -+#ifndef _WCTYPE_T -+#define _WCTYPE_T -+# ifdef _AEABI_PORTABLE -+typedef void *wctype_t; -+# else -+typedef int wctype_t; -+# endif -+#endif /* !_WCTYPE_T */ -+ -+ /* Not yet implemented */ -+ - wint_t btowc(int); - int fwprintf(FILE *, const wchar_t *, ...); - int fwscanf(FILE *, const wchar_t *, ...); -@@ -218,7 +241,10 @@ wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); - wchar_t *wmemset(wchar_t *, wchar_t, size_t); - int wprintf(const wchar_t *, ...); - int wscanf(const wchar_t *, ...); --#endif -+int vfwscanf(FILE *, const wchar_t *, va_list); -+int vswscanf(const wchar_t *, const wchar_t *, va_list); -+int vwscanf(const wchar_t *, va_list); -+float wcstof(const wchar_t *, wchar_t **); - - #undef EXTERN - #ifdef __cplusplus -- cgit v1.2.3