changeset 21785:c9f8a7f7915e

use forward declarations instead of including oct-inttypes.h where possible * oct-inttypes-fwd.h: New file. * liboctave/util/module.mk: Update. * oct-inttypes.h, pr-output.h, Array.cc, dNDArray.h, fNDArray.h, idx-vector.h, int16NDArray.h, int32NDArray.h, int64NDArray.h, int8NDArray.h, uint16NDArray.h, uint32NDArray.h, uint64NDArray.h, uint8NDArray.h, lo-mappers.h, data-conv.h: Include oct-inttypes-fwd.h instead of oct-inttypes.h where possible.
author John W. Eaton <jwe@octave.org>
date Fri, 27 May 2016 15:19:45 -0400
parents d13883644981
children df064166f180
files libinterp/corefcn/pr-output.h liboctave/array/Array.cc liboctave/array/dNDArray.h liboctave/array/fNDArray.h liboctave/array/idx-vector.h liboctave/array/int16NDArray.h liboctave/array/int32NDArray.h liboctave/array/int64NDArray.h liboctave/array/int8NDArray.h liboctave/array/uint16NDArray.h liboctave/array/uint32NDArray.h liboctave/array/uint64NDArray.h liboctave/array/uint8NDArray.h liboctave/numeric/lo-mappers.h liboctave/util/data-conv.h liboctave/util/module.mk liboctave/util/oct-inttypes-fwd.h liboctave/util/oct-inttypes.h
diffstat 18 files changed, 70 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/pr-output.h	Fri May 27 15:16:47 2016 -0400
+++ b/libinterp/corefcn/pr-output.h	Fri May 27 15:19:45 2016 -0400
@@ -28,6 +28,7 @@
 #include <iosfwd>
 
 #include "oct-cmplx.h"
+#include "oct-inttypes-fwd.h"
 
 template <typename T> class Array;
 class ComplexMatrix;
@@ -51,9 +52,7 @@
 class Cell;
 class octave_value;
 
-#include "intNDArray.h"
-#include "oct-inttypes.h"
-
+template <typename T> class intNDArray;
 
 extern OCTINTERP_API void
 octave_print_internal (std::ostream& os, bool d,
--- a/liboctave/array/Array.cc	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/Array.cc	Fri May 27 15:19:45 2016 -0400
@@ -39,6 +39,7 @@
 #include "Array-util.h"
 #include "idx-vector.h"
 #include "lo-error.h"
+#include "lo-mappers.h"
 #include "oct-locbuf.h"
 
 // One dimensional array class.  Handles the reference counting for
--- a/liboctave/array/dNDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/dNDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -26,12 +26,13 @@
 #include "octave-config.h"
 
 #include "MArray.h"
-#include "intNDArray.h"
 
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 #include "bsxfun-decl.h"
 
+template <typename T> class intNDArray;
+
 class
 OCTAVE_API
 NDArray : public MArray<double>
--- a/liboctave/array/fNDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/fNDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -26,12 +26,13 @@
 #include "octave-config.h"
 
 #include "MArray.h"
-#include "intNDArray.h"
 
 #include "mx-defs.h"
 #include "mx-op-decl.h"
 #include "bsxfun-decl.h"
 
+template <typename T> class intNDArray;
+
 class
 OCTAVE_API
 FloatNDArray : public MArray<float>
--- a/liboctave/array/idx-vector.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/idx-vector.h	Fri May 27 15:19:45 2016 -0400
@@ -35,7 +35,7 @@
 #include <memory>
 
 #include "dim-vector.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "oct-refcount.h"
 
 template <typename T> class Array;
--- a/liboctave/array/int16NDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/int16NDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -27,7 +27,7 @@
 
 #include "intNDArray.h"
 #include "mx-op-decl.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "bsxfun-decl.h"
 
 typedef intNDArray<octave_int16> int16NDArray;
--- a/liboctave/array/int32NDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/int32NDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -27,7 +27,7 @@
 
 #include "intNDArray.h"
 #include "mx-op-decl.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "bsxfun-decl.h"
 
 typedef intNDArray<octave_int32> int32NDArray;
--- a/liboctave/array/int64NDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/int64NDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -27,7 +27,7 @@
 
 #include "intNDArray.h"
 #include "mx-op-decl.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "bsxfun-decl.h"
 
 typedef intNDArray<octave_int64> int64NDArray;
--- a/liboctave/array/int8NDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/int8NDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -27,7 +27,7 @@
 
 #include "intNDArray.h"
 #include "mx-op-decl.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "bsxfun-decl.h"
 
 typedef intNDArray<octave_int8> int8NDArray;
--- a/liboctave/array/uint16NDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/uint16NDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -27,7 +27,7 @@
 
 #include "intNDArray.h"
 #include "mx-op-decl.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "bsxfun-decl.h"
 
 typedef intNDArray<octave_uint16> uint16NDArray;
--- a/liboctave/array/uint32NDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/uint32NDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -27,7 +27,7 @@
 
 #include "intNDArray.h"
 #include "mx-op-decl.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "bsxfun-decl.h"
 
 typedef intNDArray<octave_uint32> uint32NDArray;
--- a/liboctave/array/uint64NDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/uint64NDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -27,7 +27,7 @@
 
 #include "intNDArray.h"
 #include "mx-op-decl.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "bsxfun-decl.h"
 
 typedef intNDArray<octave_uint64> uint64NDArray;
--- a/liboctave/array/uint8NDArray.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/array/uint8NDArray.h	Fri May 27 15:19:45 2016 -0400
@@ -27,7 +27,7 @@
 
 #include "intNDArray.h"
 #include "mx-op-decl.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 #include "bsxfun-decl.h"
 
 typedef intNDArray<octave_uint8> uint8NDArray;
--- a/liboctave/numeric/lo-mappers.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/numeric/lo-mappers.h	Fri May 27 15:19:45 2016 -0400
@@ -29,7 +29,6 @@
 #include <limits>
 
 #include "oct-cmplx.h"
-#include "oct-inttypes.h"
 #include "lo-math.h"
 #include "lo-ieee.h"
 
--- a/liboctave/util/data-conv.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/util/data-conv.h	Fri May 27 15:19:45 2016 -0400
@@ -28,7 +28,7 @@
 #include <limits>
 
 #include "mach-info.h"
-#include "oct-inttypes.h"
+#include "oct-inttypes-fwd.h"
 
 class
 OCTAVE_API
--- a/liboctave/util/module.mk	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/util/module.mk	Fri May 27 15:19:45 2016 -0400
@@ -22,6 +22,7 @@
   liboctave/util/oct-cmplx.h \
   liboctave/util/oct-glob.h \
   liboctave/util/oct-inttypes.h \
+  liboctave/util/oct-inttypes-fwd.h \
   liboctave/util/oct-locbuf.h \
   liboctave/util/oct-mutex.h \
   liboctave/util/oct-refcount.h \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/liboctave/util/oct-inttypes-fwd.h	Fri May 27 15:19:45 2016 -0400
@@ -0,0 +1,40 @@
+/*
+
+Copyright (C) 2016 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/>.
+
+*/
+
+#if ! defined (octave_oct_inttypes_fwd_h)
+#define octave_oct_inttypes_fwd_h 1
+
+#include "octave-config.h"
+
+template <typename T> class octave_int;
+
+typedef octave_int<int8_t> octave_int8;
+typedef octave_int<int16_t> octave_int16;
+typedef octave_int<int32_t> octave_int32;
+typedef octave_int<int64_t> octave_int64;
+
+typedef octave_int<uint8_t> octave_uint8;
+typedef octave_int<uint16_t> octave_uint16;
+typedef octave_int<uint32_t> octave_uint32;
+typedef octave_int<uint64_t> octave_uint64;
+
+#endif
--- a/liboctave/util/oct-inttypes.h	Fri May 27 15:16:47 2016 -0400
+++ b/liboctave/util/oct-inttypes.h	Fri May 27 15:19:45 2016 -0400
@@ -35,6 +35,18 @@
 #include "lo-math.h"
 #include "lo-mappers.h"
 
+template <typename T> class octave_int;
+
+typedef octave_int<int8_t> octave_int8;
+typedef octave_int<int16_t> octave_int16;
+typedef octave_int<int32_t> octave_int32;
+typedef octave_int<int64_t> octave_int64;
+
+typedef octave_int<uint8_t> octave_uint8;
+typedef octave_int<uint16_t> octave_uint16;
+typedef octave_int<uint32_t> octave_uint32;
+typedef octave_int<uint64_t> octave_uint64;
+
 #if defined (OCTAVE_INT_USE_LONG_DOUBLE)
 
 namespace octave
@@ -1133,16 +1145,6 @@
     return a & mask;
 }
 
-typedef octave_int<int8_t> octave_int8;
-typedef octave_int<int16_t> octave_int16;
-typedef octave_int<int32_t> octave_int32;
-typedef octave_int<int64_t> octave_int64;
-
-typedef octave_int<uint8_t> octave_uint8;
-typedef octave_int<uint16_t> octave_uint16;
-typedef octave_int<uint32_t> octave_uint32;
-typedef octave_int<uint64_t> octave_uint64;
-
 #if defined (OCTAVE_ENSURE_LONG_DOUBLE_OPERATIONS_ARE_NOT_TRUNCATED)
 
 #define DECLARE_EXTERNAL_LONG_DOUBLE_OP(T, OP) \