aboutsummaryrefslogtreecommitdiff
path: root/nuttx-patches/c++11.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx-patches/c++11.patch')
-rw-r--r--nuttx-patches/c++11.patch142
1 files changed, 142 insertions, 0 deletions
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 <stdio.h>.
+ *
+ * size_t