  idaman void ida_export qatexit(void (idaapi *func)(void));
  
  /*==================================================*/
-@@ -1593,6 +1605,7 @@
- 
- // Convert a unicode character to 1 byte character. If failed, return 0.
- uchar wchar2char(wchar16_t wc);
-+#endif // SWIG
- 
- idaman bool ida_export u2cstr(const wchar16_t *in, qstring *out, int nsyms=-1); // unicode -> char
+@@ -1598,6 +1610,7 @@
  idaman bool ida_export c2ustr(const char *in, qwstring *out, int nsyms=-1);   // char -> unicode
+ // utf8 -> 16bit unicode
+ idaman int ida_export utf8_unicode(const char *in, wchar16_t *out, size_t outsize);
++#endif // SWIG
+ 
+ // Old Visual C++ compilers were not defining the following:
+ #ifdef __NT__
 diff -ur idasdk-versions/5.3/include/typeinf.hpp swigsdk-versions/5.3/include/typeinf.hpp
 --- idasdk-versions/5.3/include/typeinf.hpp	2008-05-07 15:23:00.000000000 +0300
 +++ swigsdk-versions/5.3/include/typeinf.hpp	2008-09-30 20:51:08.000000000 +0300

 };
 
 inline bool is_func_entry(const func_t *pfn) { return pfn != NULL && (pfn->flags & FUNC_TAIL) == 0; }
diff -ur idasdk-versions/5.3/include/ida.hpp swigsdk-versions/5.3/include/ida.hpp
--- idasdk-versions/5.3/include/ida.hpp	2008-05-04 21:36:00.000000000 +0300
+++ swigsdk-versions/5.3/include/ida.hpp	2008-09-30 18:23:09.000000000 +0300

 //      Utility functions
diff -ur idasdk-versions/5.3/include/expr.hpp swigsdk-versions/5.3/include/expr.hpp
--- idasdk-versions/5.3/include/expr.hpp	2008-07-03 16:28:00.000000000 +0300
+++ swigsdk-versions/5.3/include/expr.hpp	2008-11-02 20:04:48.000000000 +0200
@@ -67,12 +67,16 @@
                                 // number of arguments. The actual number of
                                 // arguments will be passed in 'num'
 
+#ifndef SWIG
   union
   {
+#endif //SWIG
     char *str;                  // VT_STR
     sval_t num;                 // VT_LONG
     ushort e[6];                // VT_FLOAT
+#ifndef SWIG
   };
+#endif // SWIG
 
