changeset 5515:d46a116f2c8d

* src/of-communications-1-catop.patch: New file.
author John W. Eaton <jwe@octave.org>
date Tue, 25 Aug 2020 15:05:59 -0400
parents d3a47a9a1413
children 50478c969620
files dist-files.mk src/of-communications-1-catop.patch
diffstat 2 files changed, 203 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Fri Aug 21 09:55:47 2020 -0400
+++ b/dist-files.mk	Tue Aug 25 15:05:59 2020 -0400
@@ -459,6 +459,7 @@
   ocaml-native.mk \
   of-actuarial.mk \
   of-audio.mk \
+  of-communications-1-catop.patch \
   of-communications.mk \
   of-control.mk \
   of-data-smoothing.mk \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/of-communications-1-catop.patch	Tue Aug 25 15:05:59 2020 -0400
@@ -0,0 +1,202 @@
+diff -uNr a/src/config.h.in b/src/config.h.in
+--- a/src/config.h.in	2020-01-04 12:50:13.541197341 -0500
++++ b/src/config.h.in	2020-08-25 14:50:29.000000000 -0400
+@@ -26,6 +26,9 @@
+ /* Define to 1 if you have the <octave/errwarn.h> header file. */
+ #undef HAVE_OCTAVE_ERRWARN_H
+ 
++/* Define if first catop function argument is const-qualified */
++#undef HAVE_OCTAVE_FIRST_CATOP_ARG_CONST
++
+ /* Define to 1 if you have the <octave/gripes.h> header file. */
+ #undef HAVE_OCTAVE_GRIPES_H
+ 
+diff -uNr a/src/configure b/src/configure
+--- a/src/configure	2020-01-04 12:50:13.249198461 -0500
++++ b/src/configure	2020-08-25 13:48:13.000000000 -0400
+@@ -4083,6 +4083,63 @@
+ 
+ fi
+ 
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether first catop function argument is const-qualified" >&5
++$as_echo_n "checking whether first catop function argument is const-qualified... " >&6; }
++if ${comm_cv_octave_first_catop_fcn_arg_const_qualified+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  comm_save_CPPFLAGS=$CPPFLAGS
++   comm_save_CXXFLAGS=$CXXFLAGS
++   CPPFLAGS="$CPPFLAGS $HDF5_CFLAGS"
++   CXXFLAGS="$CXXFLAGS $comm_CXXFLAGS"
++   ac_ext=cpp
++ac_cpp='$CXXCPP $CPPFLAGS'
++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
++
++   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++       #include <octave/oct.h>
++       #include <octave/ov-typeinfo.h>
++
++int
++main ()
++{
++
++       octave_value foobar_fcn (const octave_base_value&,
++                                const octave_base_value&,
++                                const Array<octave_idx_type>& ra_idx);
++       octave::type_info::cat_op_fcn fcn = foobar_fcn;
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_cxx_try_compile "$LINENO"; then :
++  comm_cv_octave_first_catop_fcn_arg_const_qualified=yes
++else
++  comm_cv_octave_first_catop_fcn_arg_const_qualified=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++   ac_ext=cpp
++ac_cpp='$CXXCPP $CPPFLAGS'
++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
++
++   CPPFLAGS=$comm_save_CPPFLAGS
++   CXXFLAGS=$comm_save_CXXFLAGS
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $comm_cv_octave_first_catop_fcn_arg_const_qualified" >&5
++$as_echo "$comm_cv_octave_first_catop_fcn_arg_const_qualified" >&6; }
++if test $comm_cv_octave_first_catop_fcn_arg_const_qualified = yes; then
++
++$as_echo "#define HAVE_OCTAVE_FIRST_CATOP_ARG_CONST 1" >>confdefs.h
++
++fi
++
+ ac_config_files="$ac_config_files Makefile"
+ 
+ cat >confcache <<\_ACEOF
+diff -uNr a/src/configure.ac b/src/configure.ac
+--- a/src/configure.ac	2020-01-04 12:49:06.000000000 -0500
++++ b/src/configure.ac	2020-08-25 13:47:59.000000000 -0400
+@@ -252,5 +252,30 @@
+   AC_DEFINE([HAVE_OCTAVE_BASE_VALUE_PRINT_CONST],[1],[Define if octave_base_value::print is const-qualified])
+ fi
+ 
++AC_CACHE_CHECK([whether first catop function argument is const-qualified],
++  [comm_cv_octave_first_catop_fcn_arg_const_qualified],
++  [comm_save_CPPFLAGS=$CPPFLAGS
++   comm_save_CXXFLAGS=$CXXFLAGS
++   CPPFLAGS="$CPPFLAGS $HDF5_CFLAGS"
++   CXXFLAGS="$CXXFLAGS $comm_CXXFLAGS"
++   AC_LANG_PUSH(C++)
++   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++       #include <octave/oct.h>
++       #include <octave/ov-typeinfo.h>
++       ]], [[
++       octave_value foobar_fcn (const octave_base_value&,
++                                const octave_base_value&,
++                                const Array<octave_idx_type>& ra_idx);
++       octave::type_info::cat_op_fcn fcn = foobar_fcn;
++       ]])],
++     [comm_cv_octave_first_catop_fcn_arg_const_qualified=yes],
++     [comm_cv_octave_first_catop_fcn_arg_const_qualified=no])
++   AC_LANG_POP(C++)
++   CPPFLAGS=$comm_save_CPPFLAGS
++   CXXFLAGS=$comm_save_CXXFLAGS])
++if test $comm_cv_octave_first_catop_fcn_arg_const_qualified = yes; then
++  AC_DEFINE([HAVE_OCTAVE_FIRST_CATOP_ARG_CONST],[1],[Define if first catop function argument is const-qualified])
++fi
++
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
+diff -uNr a/src/galois-ops.h b/src/galois-ops.h
+--- a/src/galois-ops.h	2020-01-04 12:49:06.000000000 -0500
++++ b/src/galois-ops.h	2020-08-25 14:00:18.000000000 -0400
+@@ -40,11 +40,19 @@
+ #endif
+ 
+ #if ! defined (CATOPDECL)
+-#  define CATOPDECL(name, a1, a2)                                       \
++#  if defined (HAVE_OCTAVE_FIRST_CATOP_ARG_CONST)
++#    define CATOPDECL(name, a1, a2)                                     \
++  static octave_value                                                   \
++  CONCAT2(oct_catop_, name) (const octave_base_value& a1,               \
++                             const octave_base_value& a2,               \
++                             const Array<octave_idx_type>& ra_idx)
++#  else
++#    define CATOPDECL(name, a1, a2)                                     \
+   static octave_value                                                   \
+   CONCAT2(oct_catop_, name) (octave_base_value& a1,                     \
+                              const octave_base_value& a2,               \
+                              const Array<octave_idx_type>& ra_idx)
++#  endif
+ #endif
+ 
+ // Override the operator and function definition defines from Octave
+@@ -124,7 +132,24 @@
+     return new octave_galois (f (v1.t1 ## _value (), v2.matrix_value ())); \
+   }
+ 
+-#define DEFCATOP_G_FN(name, t1, t2, f) \
++#if defined (HAVE_OCTAVE_FIRST_CATOP_ARG_CONST)
++#  define DEFCATOP_G_FN(name, t1, t2, f) \
++  CATOPDECL (name, a1, a2) \
++  { \
++    CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
++    return new octave_galois (f (v1.t1 ## _value (), v2.t2 ## _value (), \
++                                 ra_idx)); \
++  }
++
++#define DEFCATOP_G_METHOD(name, t1, t2, f) \
++  CATOPDECL (name, a1, a2) \
++  { \
++    CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
++    return new octave_galois (v1.t1 ## _value (). f (v2.t2 ## _value (), \
++                                                     ra_idx)); \
++  }
++#else
++#  define DEFCATOP_G_FN(name, t1, t2, f) \
+   CATOPDECL (name, a1, a2) \
+   { \
+     CAST_BINOP_ARGS (octave_ ## t1&, const octave_ ## t2&); \
+@@ -139,6 +164,7 @@
+     return new octave_galois (v1.t1 ## _value (). f (v2.t2 ## _value (), \
+                                                      ra_idx)); \
+   }
++#endif
+ 
+ #define INSTALL_G_CATOP(t1, t2, f) INSTALL_CATOP (t1, t2, f)
+ 
+diff -uNr a/src/op-gm-s.cc b/src/op-gm-s.cc
+--- a/src/op-gm-s.cc	2020-01-04 12:49:06.000000000 -0500
++++ b/src/op-gm-s.cc	2020-08-25 13:50:19.000000000 -0400
+@@ -68,7 +68,11 @@
+ 
+ DEFCATOP (gm_s, galois, scalar)
+ {
++#if defined (HAVE_OCTAVE_FIRST_CATOP_ARG_CONST)
++  CAST_BINOP_ARGS (const octave_galois&, const octave_scalar&);
++#else
+   CAST_BINOP_ARGS (octave_galois&, const octave_scalar&);
++#endif
+   return new octave_galois (v1.galois_value (). concat (v2.matrix_value (),
+                                                         ra_idx));
+ }
+diff -uNr a/src/op-s-gm.cc b/src/op-s-gm.cc
+--- a/src/op-s-gm.cc	2020-01-04 12:49:06.000000000 -0500
++++ b/src/op-s-gm.cc	2020-08-25 14:51:01.000000000 -0400
+@@ -81,7 +81,11 @@
+ 
+ DEFCATOP (s_gm, scalar, galois)
+ {
++#if defined (HAVE_OCTAVE_FIRST_CATOP_ARG_CONST)
++  CAST_BINOP_ARGS (const octave_scalar&, const octave_galois&);
++#else
+   CAST_BINOP_ARGS (octave_scalar&, const octave_galois&);
++#endif
+   return new octave_galois (concat (v1.matrix_value (), v2.galois_value (),
+                                     ra_idx));
+ }