changeset 28640:308cee7cf3ee

octave -> mxArray type traits * mx-type-traits.h: New file. * libinterp/corefcn/module.mk: Update.
author John W. Eaton <jwe@octave.org>
date Wed, 19 Aug 2020 23:36:01 -0400
parents 7ebe185e3818
children 2c15231c3154
files libinterp/corefcn/module.mk libinterp/corefcn/mx-type-traits.h
diffstat 2 files changed, 152 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/module.mk	Thu Aug 06 23:57:40 2020 -0400
+++ b/libinterp/corefcn/module.mk	Wed Aug 19 23:36:01 2020 -0400
@@ -58,6 +58,7 @@
   %reldir%/ls-utils.h \
   %reldir%/mex.h \
   %reldir%/mexproto.h \
+  %reldir%/mx-type-traits.h \
   %reldir%/mxarray.h \
   %reldir%/oct-errno.h \
   %reldir%/oct-fstrm.h \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libinterp/corefcn/mx-type-traits.h	Wed Aug 19 23:36:01 2020 -0400
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) 2020 The Octave Project Developers
+//
+// See the file COPYRIGHT.md in the top-level directory of this
+// distribution or <https://octave.org/copyright/>.
+//
+// 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
+// <https://www.gnu.org/licenses/>.
+//
+////////////////////////////////////////////////////////////////////////
+
+#if ! defined (octave_mx_type_traits_h)
+#define octave_mx_type_traits_h 1
+
+#include "octave-config.h"
+
+#include "mxtypes.h"
+#include "oct-inttypes.h"
+
+template <typename T>
+class
+mx_type_traits
+{
+public:
+  static const mxClassID mx_class;
+  typedef T mx_type;
+};
+
+template <>
+class
+mx_type_traits<bool>
+{
+public:
+  static const mxClassID mx_class = mxLOGICAL_CLASS;
+  typedef mxDouble mx_type;
+};
+
+template <>
+class
+mx_type_traits<char>
+{
+public:
+  static const mxClassID mx_class = mxCHAR_CLASS;
+  typedef mxChar mx_type;
+};
+
+template <>
+class
+mx_type_traits<double>
+{
+public:
+  static const mxClassID mx_class = mxDOUBLE_CLASS;
+  typedef mxDouble mx_type;
+};
+
+template <>
+class
+mx_type_traits<float>
+{
+public:
+  static const mxClassID mx_class = mxSINGLE_CLASS;
+  typedef mxSingle mx_type;
+};
+
+template <>
+class
+mx_type_traits<octave_int8>
+{
+public:
+  static const mxClassID mx_class = mxINT8_CLASS;
+  typedef mxInt8 mx_type;
+};
+
+template <>
+class
+mx_type_traits<octave_uint8>
+{
+public:
+  static const mxClassID mx_class = mxUINT8_CLASS;
+  typedef mxUint8 mx_type;
+};
+
+template <>
+class
+mx_type_traits<octave_int16>
+{
+public:
+  static const mxClassID mx_class = mxINT16_CLASS;
+  typedef mxInt16 mx_type;
+};
+
+template <>
+class
+mx_type_traits<octave_uint16>
+{
+public:
+  static const mxClassID mx_class = mxUINT16_CLASS;
+  typedef mxUint16 mx_type;
+};
+
+template <>
+class
+mx_type_traits<octave_int32>
+{
+public:
+  static const mxClassID mx_class = mxINT32_CLASS;
+  typedef mxInt32 mx_type;
+};
+
+template <>
+class
+mx_type_traits<octave_uint32>
+{
+public:
+  static const mxClassID mx_class = mxUINT32_CLASS;
+  typedef mxUint32 mx_type;
+};
+
+template <>
+class
+mx_type_traits<octave_int64>
+{
+public:
+  static const mxClassID mx_class = mxINT64_CLASS;
+  typedef mxInt64 mx_type;
+};
+
+template <>
+class
+mx_type_traits<octave_uint64>
+{
+public:
+  static const mxClassID mx_class = mxUINT64_CLASS;
+  typedef mxUint64 mx_type;
+};
+
+#endif