view test/build-bc-overload-tests.sh @ 19897:09ed6f7538dd

avoid needing to include hdf5 in public header files (bug #44370, #43180) * oct-hdf5-id.cc, oct-hdf5-id.h: New files. * libinterp/corefcn/module.mk: Update. * libgui/src/module.mk (src_libgui_src_la_CPPFLAGS): Remove $(HDF5_CPPFLAGS) from the list. * load-save.h (enum load_save_format_type): Always include LS_HDF5 in the list of values. * ls-hdf5.cc (read_hdf5_data, save_hdf5_data): Call check_hdf5_id_type. * oct-hdf5.h: Also #define HDF5_SAVE_TYPE. * ov.h, ov-base.h: Include oct-hdf5-id.h instead of oct-hdf5.h. Always declare load_hdf5 and save_hdf5 functions. * ov-base-int.cc, ov-base-int.h, ov-base.cc, ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc, ov-bool-sparse.h, ov-bool.cc, ov-bool.h, ov-cell.cc, ov-cell.h, ov-class.cc, ov-class.h, ov-complex.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc, ov-cx-sparse.h, ov-fcn-handle.cc, ov-fcn-handle.h, ov-fcn-inline.cc, ov-fcn-inline.h, ov-float.cc, ov-float.h, ov-flt-complex.cc, ov-flt-complex.h, ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-int16.cc, ov-int32.cc, ov-int64.cc, ov-int8.cc, ov-lazy-idx.h, ov-oncleanup.cc, ov-oncleanup.h, ov-range.cc ov-range.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov-struct.cc, ov-struct.h, ov-uint16.cc, ov-uint32.cc, ov-uint64.cc, ov-uint8.cc: Move #ifdef HAVE_HDF5 inside load_hdf5 and save_hdf5 functions. Always declare and define load_hdf5 and save_hdf5 functions.
author John W. Eaton <jwe@octave.org> and Mike Miller <mtmiller@ieee.org>
date Thu, 26 Feb 2015 10:49:20 -0500
parents 4197fc428c7d
children 4f911b4e012b
line wrap: on
line source

#! /bin/sh

# Copyright (C) 2010-2015 VZLU Prague
#
# 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/>.

CLASSES="
  double
  single
  char
  logical
  int8
  int16
  int32
  int64
  uint8
  uint16
  uint32
  uint64
  struct
  cell
  function_handle
"

if [ $# -eq 1 ]; then
  case "$1" in
    --list-files)
      echo tbcover.m
      echo bc-overloads.tst
      for class in $CLASSES; do
        echo @$class/tbcover.m
      done
      exit
    ;;
    --list-dirs)
      for class in $CLASSES; do
        echo @$class
      done
      exit
    ;;
    --list-classes)
      echo $CLASSES
      exit
    ;;
    *)
      expected_results_file="$1"
    ;;
  esac
else
  echo "usage: build_bc_overload_tests.sh expected-results-file" 1>&2
  exit 1
fi

for class in $CLASSES; do
  DIR="@$class"
  test -d $DIR || mkdir $DIR || { echo "error: could not create $DIR"; exit; }
  cat > $DIR/tbcover.m << EOF
% !!! DO NOT EDIT !!!
% generated automatically by build_bc_overload_tests.sh
function s = tbcover (x, y)
  s = '$class';
EOF
done

cat > tbcover.m << EOF
% !!! DO NOT EDIT !!!
% generated automatically by build_bc_overload_tests.sh
function s = tbcover (x, y)
  s = 'none';
EOF

if test "$1" = "overloads_only" ; then
  exit
fi

cat > bc-overloads.tst << EOF
## !!! DO NOT EDIT !!!
## THIS IS AN AUTOMATICALLY GENERATED FILE
## modify build_bc_overload_tests.sh to generate the tests you need.

%!shared ex
%! ex.double = 1;
%! ex.single = single (1);
%! ex.logical = true;
%! ex.char = 'char';
%! ex.int8  = int8 (1);
%! ex.int16 = int16 (1);
%! ex.int32 = int32 (1);
%! ex.int64 = int64 (1);
%! ex.uint8  = uint8 (1);
%! ex.uint16 = uint16 (1);
%! ex.uint32 = uint32 (1);
%! ex.uint64 = uint64 (1);
%! ex.cell = {};
%! ex.struct = struct ();
%! ex.function_handle = @numel;

EOF

cat $expected_results_file | \
while read cl1 cl2 clr ; do
  cat >> bc-overloads.tst << EOF
%% Name call
%!assert (tbcover (ex.$cl1, ex.$cl2), "$clr")
%% Handle call
%!assert ((@tbcover) (ex.$cl1, ex.$cl2), "$clr")

EOF
done

cat >> bc-overloads.tst << EOF
%%test handles through cellfun
%!test
%! f = fieldnames (ex);
%! n = numel (f);
%! s = c1 = c2 = cell (n);
%! for i = 1:n
%!   for j = 1:n
%!     c1{i,j} = ex.(f{i});
%!     c2{i,j} = ex.(f{j});
%!     s{i,j} = tbcover (ex.(f{i}), ex.(f{j}));
%!   endfor
%! endfor
%! assert (cellfun (@tbcover, c1, c2, "uniformoutput", false), s);
EOF