# HG changeset patch # User John W. Eaton # Date 1597894561 14400 # Node ID 308cee7cf3ee8c3f19db143d585f0864d57fe715 # Parent 7ebe185e381889dddac7a92721693ca92e6dad9d octave -> mxArray type traits * mx-type-traits.h: New file. * libinterp/corefcn/module.mk: Update. diff -r 7ebe185e3818 -r 308cee7cf3ee libinterp/corefcn/module.mk --- 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 \ diff -r 7ebe185e3818 -r 308cee7cf3ee libinterp/corefcn/mx-type-traits.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 . +// +// 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 +// . +// +//////////////////////////////////////////////////////////////////////// + +#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 +class +mx_type_traits +{ +public: + static const mxClassID mx_class; + typedef T mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxLOGICAL_CLASS; + typedef mxDouble mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxCHAR_CLASS; + typedef mxChar mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxDOUBLE_CLASS; + typedef mxDouble mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxSINGLE_CLASS; + typedef mxSingle mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxINT8_CLASS; + typedef mxInt8 mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxUINT8_CLASS; + typedef mxUint8 mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxINT16_CLASS; + typedef mxInt16 mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxUINT16_CLASS; + typedef mxUint16 mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxINT32_CLASS; + typedef mxInt32 mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxUINT32_CLASS; + typedef mxUint32 mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxINT64_CLASS; + typedef mxInt64 mx_type; +}; + +template <> +class +mx_type_traits +{ +public: + static const mxClassID mx_class = mxUINT64_CLASS; + typedef mxUint64 mx_type; +}; + +#endif