+#ifndef wxWCHAR_T_IS_WXCHAR16
+size_t wxStrlen(const wxChar16 *s )
+{
+ if (!s) return 0;
+ size_t i=0;
+ while (*s!=0) { ++i; ++s; };
+ return i;
+}
+
+wxChar16* wxStrdup(const wxChar16* s)
+{
+ size_t size = (wxStrlen(s) + 1) * sizeof(wxChar16);
+ wxChar16 *ret = (wxChar16*) malloc(size);
+ memcpy(ret, s, size);
+ return ret;
+}
+#endif
+
+#ifndef wxWCHAR_T_IS_WXCHAR32
+size_t wxStrlen(const wxChar32 *s )
+{
+ if (!s) return 0;
+ size_t i=0;
+ while (*s!=0) { ++i; ++s; };
+ return i;
+}
+
+wxChar32* wxStrdup(const wxChar32* s)
+{
+ size_t size = (wxStrlen(s) + 1) * sizeof(wxChar32);
+ wxChar32 *ret = (wxChar32*) malloc(size);
+ if ( ret )
+ memcpy(ret, s, size);
+ return ret;
+}
+#endif
+