diff liboctave/wrappers/uniconv-wrappers.c @ 23123:c6ca5fe1505c

use wrappers for uniconv functions; style fixes for unicode conv fcns * boostrap.conf (gnulib_modules): Include localcharset, uniconv/u8-conv-from-enc, and uniconv/u8-conv-to-enc in the list. Remove libunistring from the list. * liboctave/wrappers/localcharset-wrapper.c, liboctave/wrappers/localcharset-wrapper.h, liboctave/wrappers/uniconv-wrappers.c, liboctave/wrappers/uniconv-wrappers.h: New files. * liboctave/wrappers/module.mk: Update. * strfns.cc: Include uniconv-wrappers.h, not uniconv. Assume uniconv functions are available (provided by gnulib). (F__native2unicode__, F__unicode2native__): Use wrapper functions. Simplify. (F__unicode2native__): Return uint8 array. * native2unicode.m, unicode2native.m: Style fixes. Update tests. Use assert directly, not testif. Use error <> ..., not fail.
author John W. Eaton <jwe@octave.org>
date Tue, 31 Jan 2017 13:51:42 -0500
parents
children 194eb4bd202b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/liboctave/wrappers/uniconv-wrappers.c	Tue Jan 31 13:51:42 2017 -0500
@@ -0,0 +1,50 @@
+/*
+
+Copyright (C) 2017 John W. Eaton
+
+This file is part of Octave.
+
+Octave is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+Octave is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Octave; see the file COPYING.  If not, see
+<http://www.gnu.org/licenses/>.
+
+*/
+
+// The conversion functions are provided by gnulib.  We don't include
+// gnulib headers directly in Octave's C++ source files to avoid
+// problems that may be caused by the way that gnulib overrides standard
+// library functions.
+
+#if defined (HAVE_CONFIG_H)
+#  include "config.h"
+#endif
+
+#include "uniconv.h"
+
+#include "uniconv-wrappers.h"
+
+uint8_t *
+octave_u8_conv_from_encoding (const char *fromcode, const char *src,
+                              size_t srclen, size_t *lengthp)
+{
+  return u8_conv_from_encoding (fromcode, iconveh_question_mark,
+                                src, srclen, NULL, NULL, lengthp);
+}
+
+extern char *
+octave_u8_conv_to_encoding (const char *tocode, const uint8_t *src,
+                            size_t srclen, size_t *lengthp)
+{
+  return u8_conv_to_encoding (tocode, iconveh_question_mark,
+                              src, srclen, NULL, NULL, lengthp);
+}