diff libinterp/octave-value/ov.h @ 29234:853e60367cb6

Set API tags in files in libinterp/octave-value (patch #8919). Add API tag to (template) class definitions. Add API tag to (un-defined) functions and member functions in headers.
author Markus Mützel <markus.muetzel@gmx.de>
date Tue, 29 Dec 2020 18:21:12 +0100
parents f8efd03a553e
children 7854d5752dd2
line wrap: on
line diff
--- a/libinterp/octave-value/ov.h	Tue Dec 29 18:15:36 2020 +0100
+++ b/libinterp/octave-value/ov.h	Tue Dec 29 18:21:12 2020 +0100
@@ -144,22 +144,23 @@
     unknown_assign_op
   };
 
-  static binary_op assign_op_to_binary_op (assign_op);
+  static OCTINTERP_API binary_op assign_op_to_binary_op (assign_op);
 
-  static assign_op binary_op_to_assign_op (binary_op);
+  static OCTINTERP_API assign_op binary_op_to_assign_op (binary_op);
 
-  static std::string unary_op_as_string (unary_op);
-  static std::string unary_op_fcn_name (unary_op);
+  static OCTINTERP_API std::string unary_op_as_string (unary_op);
+  static OCTINTERP_API std::string unary_op_fcn_name (unary_op);
 
-  static std::string binary_op_as_string (binary_op);
-  static std::string binary_op_fcn_name (binary_op);
+  static OCTINTERP_API std::string binary_op_as_string (binary_op);
+  static OCTINTERP_API std::string binary_op_fcn_name (binary_op);
 
-  static std::string binary_op_fcn_name (compound_binary_op);
+  static OCTINTERP_API std::string binary_op_fcn_name (compound_binary_op);
 
-  static std::string assign_op_as_string (assign_op);
+  static OCTINTERP_API std::string assign_op_as_string (assign_op);
 
-  static octave_value empty_conv (const std::string& type,
-                                  const octave_value& rhs = octave_value ());
+  static OCTINTERP_API octave_value
+  empty_conv (const std::string& type,
+              const octave_value& rhs = octave_value ());
 
   enum magic_colon { magic_colon_t };
 
@@ -169,12 +170,12 @@
     rep->count++;
   }
 
-  octave_value (short int i);
-  octave_value (unsigned short int i);
-  octave_value (int i);
-  octave_value (unsigned int i);
-  octave_value (long int i);
-  octave_value (unsigned long int i);
+  OCTINTERP_API octave_value (short int i);
+  OCTINTERP_API octave_value (unsigned short int i);
+  OCTINTERP_API octave_value (int i);
+  OCTINTERP_API octave_value (unsigned int i);
+  OCTINTERP_API octave_value (long int i);
+  OCTINTERP_API octave_value (unsigned long int i);
 
   // FIXME: These are kluges.  They turn into doubles internally, which will
   // break for very large values.  We just use them to store things like
@@ -182,127 +183,148 @@
   // than can be represented exactly in a double.
 
 #if defined (OCTAVE_HAVE_LONG_LONG_INT)
-  octave_value (long long int i);
+  OCTINTERP_API octave_value (long long int i);
 #endif
 #if defined (OCTAVE_HAVE_UNSIGNED_LONG_LONG_INT)
-  octave_value (unsigned long long int i);
+  OCTINTERP_API octave_value (unsigned long long int i);
 #endif
 
-  octave_value (octave::sys::time t);
-  octave_value (double d);
-  octave_value (float d);
-  octave_value (const Array<octave_value>& a, bool is_cs_list = false);
-  octave_value (const Cell& c, bool is_cs_list = false);
-  octave_value (const Matrix& m, const MatrixType& t = MatrixType ());
-  octave_value (const FloatMatrix& m, const MatrixType& t = MatrixType ());
-  octave_value (const NDArray& nda);
-  octave_value (const FloatNDArray& nda);
-  octave_value (const Array<double>& m);
-  octave_value (const Array<float>& m);
-  octave_value (const DiagMatrix& d);
-  octave_value (const DiagArray2<double>& d);
-  octave_value (const DiagArray2<float>& d);
-  octave_value (const DiagArray2<Complex>& d);
-  octave_value (const DiagArray2<FloatComplex>& d);
-  octave_value (const FloatDiagMatrix& d);
-  octave_value (const RowVector& v);
-  octave_value (const FloatRowVector& v);
-  octave_value (const ColumnVector& v);
-  octave_value (const FloatColumnVector& v);
-  octave_value (const Complex& C);
-  octave_value (const FloatComplex& C);
-  octave_value (const ComplexMatrix& m, const MatrixType& t = MatrixType ());
-  octave_value (const FloatComplexMatrix& m,
-                const MatrixType& t = MatrixType ());
-  octave_value (const ComplexNDArray& cnda);
-  octave_value (const FloatComplexNDArray& cnda);
-  octave_value (const Array<Complex>& m);
-  octave_value (const Array<FloatComplex>& m);
-  octave_value (const ComplexDiagMatrix& d);
-  octave_value (const FloatComplexDiagMatrix& d);
-  octave_value (const ComplexRowVector& v);
-  octave_value (const FloatComplexRowVector& v);
-  octave_value (const ComplexColumnVector& v);
-  octave_value (const FloatComplexColumnVector& v);
-  octave_value (const PermMatrix& p);
-  octave_value (bool b);
-  octave_value (const boolMatrix& bm, const MatrixType& t = MatrixType ());
-  octave_value (const boolNDArray& bnda);
-  octave_value (const Array<bool>& bnda);
-  octave_value (char c, char type = '\'');
-  octave_value (const char *s, char type = '\'');
-  octave_value (const std::string& s, char type = '\'');
-  octave_value (const string_vector& s, char type = '\'');
-  octave_value (const charMatrix& chm,  char type = '\'');
-  octave_value (const charNDArray& chnda, char type = '\'');
-  octave_value (const Array<char>& chnda, char type = '\'');
+  OCTINTERP_API octave_value (octave::sys::time t);
+  OCTINTERP_API octave_value (double d);
+  OCTINTERP_API octave_value (float d);
+  OCTINTERP_API octave_value (const Array<octave_value>& a,
+                              bool is_cs_list = false);
+  OCTINTERP_API octave_value (const Cell& c, bool is_cs_list = false);
+  OCTINTERP_API octave_value (const Matrix& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const FloatMatrix& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const NDArray& nda);
+  OCTINTERP_API octave_value (const FloatNDArray& nda);
+  OCTINTERP_API octave_value (const Array<double>& m);
+  OCTINTERP_API octave_value (const Array<float>& m);
+  OCTINTERP_API octave_value (const DiagMatrix& d);
+  OCTINTERP_API octave_value (const DiagArray2<double>& d);
+  OCTINTERP_API octave_value (const DiagArray2<float>& d);
+  OCTINTERP_API octave_value (const DiagArray2<Complex>& d);
+  OCTINTERP_API octave_value (const DiagArray2<FloatComplex>& d);
+  OCTINTERP_API octave_value (const FloatDiagMatrix& d);
+  OCTINTERP_API octave_value (const RowVector& v);
+  OCTINTERP_API octave_value (const FloatRowVector& v);
+  OCTINTERP_API octave_value (const ColumnVector& v);
+  OCTINTERP_API octave_value (const FloatColumnVector& v);
+  OCTINTERP_API octave_value (const Complex& C);
+  OCTINTERP_API octave_value (const FloatComplex& C);
+  OCTINTERP_API octave_value (const ComplexMatrix& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const FloatComplexMatrix& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const ComplexNDArray& cnda);
+  OCTINTERP_API octave_value (const FloatComplexNDArray& cnda);
+  OCTINTERP_API octave_value (const Array<Complex>& m);
+  OCTINTERP_API octave_value (const Array<FloatComplex>& m);
+  OCTINTERP_API octave_value (const ComplexDiagMatrix& d);
+  OCTINTERP_API octave_value (const FloatComplexDiagMatrix& d);
+  OCTINTERP_API octave_value (const ComplexRowVector& v);
+  OCTINTERP_API octave_value (const FloatComplexRowVector& v);
+  OCTINTERP_API octave_value (const ComplexColumnVector& v);
+  OCTINTERP_API octave_value (const FloatComplexColumnVector& v);
+  OCTINTERP_API octave_value (const PermMatrix& p);
+  OCTINTERP_API octave_value (bool b);
+  OCTINTERP_API octave_value (const boolMatrix& bm,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const boolNDArray& bnda);
+  OCTINTERP_API octave_value (const Array<bool>& bnda);
+  OCTINTERP_API octave_value (char c, char type = '\'');
+  OCTINTERP_API octave_value (const char *s, char type = '\'');
+  OCTINTERP_API octave_value (const std::string& s, char type = '\'');
+  OCTINTERP_API octave_value (const string_vector& s, char type = '\'');
+  OCTINTERP_API octave_value (const charMatrix& chm,  char type = '\'');
+  OCTINTERP_API octave_value (const charNDArray& chnda, char type = '\'');
+  OCTINTERP_API octave_value (const Array<char>& chnda, char type = '\'');
 
-  octave_value (const SparseMatrix& m, const MatrixType& t = MatrixType ());
-  octave_value (const Sparse<double>& m, const MatrixType& t = MatrixType ());
-  octave_value (const SparseComplexMatrix& m,
-                const MatrixType& t = MatrixType ());
-  octave_value (const Sparse<Complex>& m, const MatrixType& t = MatrixType ());
-  octave_value (const SparseBoolMatrix& bm,
-                const MatrixType& t = MatrixType ());
-  octave_value (const Sparse<bool>& m, const MatrixType& t = MatrixType ());
-  octave_value (const octave_int8& i);
-  octave_value (const octave_int16& i);
-  octave_value (const octave_int32& i);
-  octave_value (const octave_int64& i);
-  octave_value (const octave_uint8& i);
-  octave_value (const octave_uint16& i);
-  octave_value (const octave_uint32& i);
-  octave_value (const octave_uint64& i);
-  octave_value (const int8NDArray& inda);
-  octave_value (const Array<octave_int8>& inda);
-  octave_value (const int16NDArray& inda);
-  octave_value (const Array<octave_int16>& inda);
-  octave_value (const int32NDArray& inda);
-  octave_value (const Array<octave_int32>& inda);
-  octave_value (const int64NDArray& inda);
-  octave_value (const Array<octave_int64>& inda);
-  octave_value (const uint8NDArray& inda);
-  octave_value (const Array<octave_uint8>& inda);
-  octave_value (const uint16NDArray& inda);
-  octave_value (const Array<octave_uint16>& inda);
-  octave_value (const uint32NDArray& inda);
-  octave_value (const Array<octave_uint32>& inda);
-  octave_value (const uint64NDArray& inda);
-  octave_value (const Array<octave_uint64>& inda);
-  octave_value (const Array<octave_idx_type>& inda,
-                bool zero_based = false, bool cache_index = false);
-  octave_value (const Array<std::string>& cellstr);
-  octave_value (const idx_vector& idx, bool lazy = true);
+  OCTINTERP_API octave_value (const SparseMatrix& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const Sparse<double>& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const SparseComplexMatrix& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const Sparse<Complex>& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const SparseBoolMatrix& bm,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const Sparse<bool>& m,
+                              const MatrixType& t = MatrixType ());
+  OCTINTERP_API octave_value (const octave_int8& i);
+  OCTINTERP_API octave_value (const octave_int16& i);
+  OCTINTERP_API octave_value (const octave_int32& i);
+  OCTINTERP_API octave_value (const octave_int64& i);
+  OCTINTERP_API octave_value (const octave_uint8& i);
+  OCTINTERP_API octave_value (const octave_uint16& i);
+  OCTINTERP_API octave_value (const octave_uint32& i);
+  OCTINTERP_API octave_value (const octave_uint64& i);
+  OCTINTERP_API octave_value (const int8NDArray& inda);
+  OCTINTERP_API octave_value (const Array<octave_int8>& inda);
+  OCTINTERP_API octave_value (const int16NDArray& inda);
+  OCTINTERP_API octave_value (const Array<octave_int16>& inda);
+  OCTINTERP_API octave_value (const int32NDArray& inda);
+  OCTINTERP_API octave_value (const Array<octave_int32>& inda);
+  OCTINTERP_API octave_value (const int64NDArray& inda);
+  OCTINTERP_API octave_value (const Array<octave_int64>& inda);
+  OCTINTERP_API octave_value (const uint8NDArray& inda);
+  OCTINTERP_API octave_value (const Array<octave_uint8>& inda);
+  OCTINTERP_API octave_value (const uint16NDArray& inda);
+  OCTINTERP_API octave_value (const Array<octave_uint16>& inda);
+  OCTINTERP_API octave_value (const uint32NDArray& inda);
+  OCTINTERP_API octave_value (const Array<octave_uint32>& inda);
+  OCTINTERP_API octave_value (const uint64NDArray& inda);
+  OCTINTERP_API octave_value (const Array<octave_uint64>& inda);
+  OCTINTERP_API octave_value (const Array<octave_idx_type>& inda,
+                              bool zero_based = false,
+                              bool cache_index = false);
+  OCTINTERP_API octave_value (const Array<std::string>& cellstr);
+  OCTINTERP_API octave_value (const idx_vector& idx, bool lazy = true);
   OCTAVE_DEPRECATED (7, "use 'octave_value (range<double>&)' instead")
-  octave_value (double base, double limit, double inc);
+  OCTINTERP_API octave_value (double base, double limit, double inc);
   OCTAVE_DEPRECATED (7, "use 'octave_value (range<double>&)' instead")
-  octave_value (const Range& r, bool force_range = false);
-  octave_value (const octave::range<char>& r, char type, bool force_range = false);
-  octave_value (const octave::range<float>& r, bool force_range = false);
-  octave_value (const octave::range<double>& r, bool force_range = false);
-  octave_value (const octave::range<octave_int8>& r, bool force_range = false);
-  octave_value (const octave::range<octave_int16>& r, bool force_range = false);
-  octave_value (const octave::range<octave_int32>& r, bool force_range = false);
-  octave_value (const octave::range<octave_int64>& r, bool force_range = false);
-  octave_value (const octave::range<octave_uint8>& r, bool force_range = false);
-  octave_value (const octave::range<octave_uint16>& r, bool force_range = false);
-  octave_value (const octave::range<octave_uint32>& r, bool force_range = false);
-  octave_value (const octave::range<octave_uint64>& r, bool force_range = false);
-  octave_value (const octave_map& m);
-  octave_value (const octave_scalar_map& m);
-  octave_value (const std::map<std::string, octave_value>&);
-  octave_value (const octave_map& m, const std::string& id,
-                const std::list<std::string>& plist);
-  octave_value (const octave_scalar_map& m, const std::string& id,
-                const std::list<std::string>& plist);
+  OCTINTERP_API octave_value (const Range& r, bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<char>& r, char type,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<float>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<double>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<octave_int8>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<octave_int16>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<octave_int32>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<octave_int64>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<octave_uint8>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<octave_uint16>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<octave_uint32>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave::range<octave_uint64>& r,
+                              bool force_range = false);
+  OCTINTERP_API octave_value (const octave_map& m);
+  OCTINTERP_API octave_value (const octave_scalar_map& m);
+  OCTINTERP_API octave_value (const std::map<std::string, octave_value>&);
+  OCTINTERP_API octave_value (const octave_map& m, const std::string& id,
+                              const std::list<std::string>& plist);
+  OCTINTERP_API octave_value (const octave_scalar_map& m, const std::string& id,
+                              const std::list<std::string>& plist);
 
   // This one is explicit because it can cause some trouble to
   // accidentally create a cs-list when one was not intended.
-  explicit octave_value (const octave_value_list& m);
+  explicit OCTINTERP_API octave_value (const octave_value_list& m);
 
-  octave_value (octave_value::magic_colon);
+  OCTINTERP_API octave_value (octave_value::magic_colon);
 
-  octave_value (octave_base_value *new_rep, bool borrow = false);
+  OCTINTERP_API octave_value (octave_base_value *new_rep, bool borrow = false);
 
   // Copy constructor.
 
@@ -320,7 +342,7 @@
 
   // This should only be called for derived types.
 
-  octave_base_value * clone (void) const;
+  OCTINTERP_API octave_base_value * clone (void) const;
 
   octave_base_value * empty_clone (void) const
   { return rep->empty_clone (); }
@@ -408,7 +430,7 @@
   octave_base_value::type_conv_info numeric_demotion_function (void) const
   { return rep->numeric_demotion_function (); }
 
-  void maybe_mutate (void);
+  OCTINTERP_API void maybe_mutate (void);
 
   octave_value squeeze (void) const
   { return rep->squeeze (); }
@@ -447,8 +469,8 @@
   // FIXME: Do we really need all these different versions of subsref
   // and related functions?
 
-  octave_value single_subsref (const std::string& type,
-                               const octave_value_list& idx);
+  OCTINTERP_API octave_value
+  single_subsref (const std::string& type, const octave_value_list& idx);
 
   octave_value subsref (const std::string& type,
                         const std::list<octave_value_list>& idx)
@@ -459,22 +481,21 @@
                         bool auto_add)
   { return rep->subsref (type, idx, auto_add); }
 
-  octave_value_list subsref (const std::string& type,
-                             const std::list<octave_value_list>& idx,
-                             int nargout);
+  OCTINTERP_API octave_value_list
+  subsref (const std::string& type, const std::list<octave_value_list>& idx,
+           int nargout);
 
-  octave_value next_subsref (const std::string& type, const
-                             std::list<octave_value_list>& idx,
-                             size_t skip = 1);
+  OCTINTERP_API octave_value
+  next_subsref (const std::string& type,
+                const std::list<octave_value_list>& idx, size_t skip = 1);
 
-  octave_value_list next_subsref (int nargout,
-                                  const std::string& type, const
-                                  std::list<octave_value_list>& idx,
-                                  size_t skip = 1);
+  OCTINTERP_API octave_value_list
+  next_subsref (int nargout, const std::string& type,
+                const std::list<octave_value_list>& idx, size_t skip = 1);
 
-  octave_value next_subsref (bool auto_add, const std::string& type, const
-                             std::list<octave_value_list>& idx,
-                             size_t skip = 1);
+  OCTINTERP_API octave_value
+  next_subsref (bool auto_add, const std::string& type,
+                const std::list<octave_value_list>& idx, size_t skip = 1);
 
   octave_value index_op (const octave_value_list& idx, bool resize_ok = false)
   {
@@ -488,19 +509,20 @@
     return index_op (idx, resize_ok);
   }
 
-  octave_value subsasgn (const std::string& type,
-                         const std::list<octave_value_list>& idx,
-                         const octave_value& rhs);
+  OCTINTERP_API octave_value
+  subsasgn (const std::string& type, const std::list<octave_value_list>& idx,
+            const octave_value& rhs);
 
-  octave_value undef_subsasgn (const std::string& type,
-                               const std::list<octave_value_list>& idx,
-                               const octave_value& rhs);
+  OCTINTERP_API octave_value
+  undef_subsasgn (const std::string& type,
+                  const std::list<octave_value_list>& idx,
+                  const octave_value& rhs);
 
-  octave_value& assign (assign_op op, const std::string& type,
-                        const std::list<octave_value_list>& idx,
-                        const octave_value& rhs);
+  OCTINTERP_API octave_value&
+  assign (assign_op op, const std::string& type,
+          const std::list<octave_value_list>& idx, const octave_value& rhs);
 
-  octave_value& assign (assign_op, const octave_value& rhs);
+  OCTINTERP_API octave_value& assign (assign_op, const octave_value& rhs);
 
   idx_vector index_vector (bool require_integers = false) const
   {
@@ -511,13 +533,13 @@
 
   dim_vector dims (void) const { return rep->dims (); }
 
-  std::string get_dims_str (void) const;
+  OCTINTERP_API std::string get_dims_str (void) const;
 
   octave_idx_type rows (void) const { return rep->rows (); }
 
   octave_idx_type columns (void) const { return rep->columns (); }
 
-  octave_idx_type length (void) const;
+  OCTINTERP_API octave_idx_type length (void) const;
 
   int ndims (void) const { return rep->ndims (); }
 
@@ -980,9 +1002,9 @@
   octave::range<octave_uint64> uint64_range_value (void) const
   { return rep->uint64_range_value (); }
 
-  octave_map map_value (void) const;
+  OCTINTERP_API octave_map map_value (void) const;
 
-  octave_scalar_map scalar_map_value (void) const;
+  OCTINTERP_API octave_scalar_map scalar_map_value (void) const;
 
   string_vector map_keys (void) const
   { return rep->map_keys (); }
@@ -1003,67 +1025,80 @@
   bool is_instance_of (const std::string& cls_name) const
   { return rep->is_instance_of (cls_name); }
 
-  octave_classdef * classdef_object_value (bool silent = false) const;
+  OCTINTERP_API octave_classdef *
+  classdef_object_value (bool silent = false) const;
 
-  octave_function * function_value (bool silent = false) const;
+  OCTINTERP_API octave_function *
+  function_value (bool silent = false) const;
 
-  octave_user_function * user_function_value (bool silent = false) const;
+  OCTINTERP_API octave_user_function *
+  user_function_value (bool silent = false) const;
 
-  octave_user_script * user_script_value (bool silent = false) const;
+  OCTINTERP_API octave_user_script *
+  user_script_value (bool silent = false) const;
 
-  octave_user_code * user_code_value (bool silent = false) const;
+  OCTINTERP_API octave_user_code * user_code_value (bool silent = false) const;
 
-  octave_fcn_handle * fcn_handle_value (bool silent = false) const;
+  OCTINTERP_API octave_fcn_handle *
+  fcn_handle_value (bool silent = false) const;
 
-  octave_value_list list_value (void) const;
+  OCTINTERP_API octave_value_list list_value (void) const;
 
-  ColumnVector column_vector_value (bool frc_str_conv = false,
-                                    bool frc_vec_conv = false) const;
+  OCTINTERP_API ColumnVector
+  column_vector_value (bool frc_str_conv = false,
+                       bool frc_vec_conv = false) const;
 
-  ComplexColumnVector
+  OCTINTERP_API ComplexColumnVector
   complex_column_vector_value (bool frc_str_conv = false,
                                bool frc_vec_conv = false) const;
 
-  RowVector row_vector_value (bool frc_str_conv = false,
-                              bool frc_vec_conv = false) const;
+  OCTINTERP_API RowVector
+  row_vector_value (bool frc_str_conv = false,
+                    bool frc_vec_conv = false) const;
 
-  ComplexRowVector
+  OCTINTERP_API ComplexRowVector
   complex_row_vector_value (bool frc_str_conv = false,
                             bool frc_vec_conv = false) const;
 
-  FloatColumnVector float_column_vector_value (bool frc_str_conv = false,
-                                               bool frc_vec_conv = false) const;
+  OCTINTERP_API FloatColumnVector
+  float_column_vector_value (bool frc_str_conv = false,
+                             bool frc_vec_conv = false) const;
 
-  FloatComplexColumnVector
+  OCTINTERP_API FloatComplexColumnVector
   float_complex_column_vector_value (bool frc_str_conv = false,
                                      bool frc_vec_conv = false) const;
 
-  FloatRowVector float_row_vector_value (bool frc_str_conv = false,
-                                         bool frc_vec_conv = false) const;
+  OCTINTERP_API FloatRowVector
+  float_row_vector_value (bool frc_str_conv = false,
+                          bool frc_vec_conv = false) const;
 
-  FloatComplexRowVector
+  OCTINTERP_API FloatComplexRowVector
   float_complex_row_vector_value (bool frc_str_conv = false,
                                   bool frc_vec_conv = false) const;
 
-  Array<int> int_vector_value (bool req_int = false,
-                               bool frc_str_conv = false,
-                               bool frc_vec_conv = false) const;
+  OCTINTERP_API Array<int>
+  int_vector_value (bool req_int = false,
+                    bool frc_str_conv = false,
+                    bool frc_vec_conv = false) const;
 
-  Array<octave_idx_type>
+  OCTINTERP_API Array<octave_idx_type>
   octave_idx_type_vector_value (bool req_int = false,
                                 bool frc_str_conv = false,
                                 bool frc_vec_conv = false) const;
 
-  Array<double> vector_value (bool frc_str_conv = false,
-                              bool frc_vec_conv = false) const;
+  OCTINTERP_API Array<double>
+  vector_value (bool frc_str_conv = false,
+                bool frc_vec_conv = false) const;
 
-  Array<Complex> complex_vector_value (bool frc_str_conv = false,
-                                       bool frc_vec_conv = false) const;
+  OCTINTERP_API Array<Complex>
+  complex_vector_value (bool frc_str_conv = false,
+                        bool frc_vec_conv = false) const;
 
-  Array<float> float_vector_value (bool frc_str_conv = false,
-                                   bool frc_vec_conv = false) const;
+  OCTINTERP_API Array<float>
+  float_vector_value (bool frc_str_conv = false,
+                      bool frc_vec_conv = false) const;
 
-  Array<FloatComplex>
+  OCTINTERP_API Array<FloatComplex>
   float_complex_vector_value (bool frc_str_conv = false,
                               bool frc_vec_conv = false) const;
 
@@ -1075,183 +1110,216 @@
   // specific types and display error messages that are more meaningful than
   // the generic "error: wrong type argument 'cell'" message.
 
-  short int xshort_value (const char *fmt, ...) const;
+  OCTINTERP_API short int xshort_value (const char *fmt, ...) const;
 
-  unsigned short int xushort_value (const char *fmt, ...) const;
+  OCTINTERP_API unsigned short int xushort_value (const char *fmt, ...) const;
 
-  int xint_value (const char *fmt, ...) const;
+  OCTINTERP_API int xint_value (const char *fmt, ...) const;
 
-  unsigned int xuint_value (const char *fmt, ...) const;
+  OCTINTERP_API unsigned int xuint_value (const char *fmt, ...) const;
+
+  OCTINTERP_API int xnint_value (const char *fmt, ...) const;
 
-  int xnint_value (const char *fmt, ...) const;
+  OCTINTERP_API long int xlong_value (const char *fmt, ...) const;
 
-  long int xlong_value (const char *fmt, ...) const;
+  OCTINTERP_API unsigned long int xulong_value (const char *fmt, ...) const;
 
-  unsigned long int xulong_value (const char *fmt, ...) const;
+  OCTINTERP_API int64_t xint64_value (const char *fmt, ...) const;
 
-  int64_t xint64_value (const char *fmt, ...) const;
+  OCTINTERP_API uint64_t xuint64_value (const char *fmt, ...) const;
+
+  OCTINTERP_API octave_idx_type xidx_type_value (const char *fmt, ...) const;
 
-  uint64_t xuint64_value (const char *fmt, ...) const;
+  OCTINTERP_API double xdouble_value (const char *fmt, ...) const;
 
-  octave_idx_type xidx_type_value (const char *fmt, ...) const;
+  OCTINTERP_API float xfloat_value (const char *fmt, ...) const;
 
-  double xdouble_value (const char *fmt, ...) const;
+  OCTINTERP_API double xscalar_value (const char *fmt, ...) const;
 
-  float xfloat_value (const char *fmt, ...) const;
+  OCTINTERP_API float xfloat_scalar_value (const char *fmt, ...) const;
+
+  OCTINTERP_API Matrix xmatrix_value (const char *fmt, ...) const;
 
-  double xscalar_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatMatrix xfloat_matrix_value (const char *fmt, ...) const;
 
-  float xfloat_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API NDArray xarray_value (const char *fmt, ...) const;
 
-  Matrix xmatrix_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatNDArray xfloat_array_value (const char *fmt, ...) const;
 
-  FloatMatrix xfloat_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API Complex xcomplex_value (const char *fmt, ...) const;
 
-  NDArray xarray_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatComplex xfloat_complex_value (const char *fmt, ...) const;
 
-  FloatNDArray xfloat_array_value (const char *fmt, ...) const;
-
-  Complex xcomplex_value (const char *fmt, ...) const;
+  OCTINTERP_API ComplexMatrix
+  xcomplex_matrix_value (const char *fmt, ...) const;
 
-  FloatComplex xfloat_complex_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatComplexMatrix
+  xfloat_complex_matrix_value (const char *fmt, ...) const;
 
-  ComplexMatrix xcomplex_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API ComplexNDArray
+  xcomplex_array_value (const char *fmt, ...) const;
 
-  FloatComplexMatrix xfloat_complex_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatComplexNDArray
+  xfloat_complex_array_value (const char *fmt, ...) const;
 
-  ComplexNDArray xcomplex_array_value (const char *fmt, ...) const;
+  OCTINTERP_API bool xbool_value (const char *fmt, ...) const;
 
-  FloatComplexNDArray xfloat_complex_array_value (const char *fmt, ...) const;
+  OCTINTERP_API boolMatrix xbool_matrix_value (const char *fmt, ...) const;
 
-  bool xbool_value (const char *fmt, ...) const;
+  OCTINTERP_API boolNDArray xbool_array_value (const char *fmt, ...) const;
 
-  boolMatrix xbool_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API charMatrix xchar_matrix_value (const char *fmt, ...) const;
 
-  boolNDArray xbool_array_value (const char *fmt, ...) const;
+  OCTINTERP_API charNDArray xchar_array_value (const char *fmt, ...) const;
 
-  charMatrix xchar_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API SparseMatrix xsparse_matrix_value (const char *fmt, ...) const;
 
-  charNDArray xchar_array_value (const char *fmt, ...) const;
+  OCTINTERP_API SparseComplexMatrix
+  xsparse_complex_matrix_value (const char *fmt, ...) const;
 
-  SparseMatrix xsparse_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API SparseBoolMatrix
+  xsparse_bool_matrix_value (const char *fmt, ...) const;
 
-  SparseComplexMatrix xsparse_complex_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API DiagMatrix xdiag_matrix_value (const char *fmt, ...) const;
 
-  SparseBoolMatrix xsparse_bool_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatDiagMatrix
+  xfloat_diag_matrix_value (const char *fmt, ...) const;
 
-  DiagMatrix xdiag_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API ComplexDiagMatrix
+  xcomplex_diag_matrix_value (const char *fmt, ...) const;
 
-  FloatDiagMatrix xfloat_diag_matrix_value (const char *fmt, ...) const;
-
-  ComplexDiagMatrix xcomplex_diag_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatComplexDiagMatrix
+  xfloat_complex_diag_matrix_value (const char *fmt, ...) const;
 
-  FloatComplexDiagMatrix xfloat_complex_diag_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API PermMatrix xperm_matrix_value (const char *fmt, ...) const;
 
-  PermMatrix xperm_matrix_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_int8 xint8_scalar_value (const char *fmt, ...) const;
 
-  octave_int8 xint8_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_int16 xint16_scalar_value (const char *fmt, ...) const;
 
-  octave_int16 xint16_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_int32 xint32_scalar_value (const char *fmt, ...) const;
+
+  OCTINTERP_API octave_int64 xint64_scalar_value (const char *fmt, ...) const;
 
-  octave_int32 xint32_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_uint8 xuint8_scalar_value (const char *fmt, ...) const;
 
-  octave_int64 xint64_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_uint16 xuint16_scalar_value (const char *fmt, ...) const;
 
-  octave_uint8 xuint8_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_uint32 xuint32_scalar_value (const char *fmt, ...) const;
 
-  octave_uint16 xuint16_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_uint64 xuint64_scalar_value (const char *fmt, ...) const;
 
-  octave_uint32 xuint32_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API int8NDArray xint8_array_value (const char *fmt, ...) const;
 
-  octave_uint64 xuint64_scalar_value (const char *fmt, ...) const;
+  OCTINTERP_API int16NDArray xint16_array_value (const char *fmt, ...) const;
 
-  int8NDArray xint8_array_value (const char *fmt, ...) const;
+  OCTINTERP_API int32NDArray xint32_array_value (const char *fmt, ...) const;
 
-  int16NDArray xint16_array_value (const char *fmt, ...) const;
+  OCTINTERP_API int64NDArray xint64_array_value (const char *fmt, ...) const;
 
-  int32NDArray xint32_array_value (const char *fmt, ...) const;
+  OCTINTERP_API uint8NDArray xuint8_array_value (const char *fmt, ...) const;
+
+  OCTINTERP_API uint16NDArray xuint16_array_value (const char *fmt, ...) const;
 
-  int64NDArray xint64_array_value (const char *fmt, ...) const;
+  OCTINTERP_API uint32NDArray xuint32_array_value (const char *fmt, ...) const;
 
-  uint8NDArray xuint8_array_value (const char *fmt, ...) const;
+  OCTINTERP_API uint64NDArray xuint64_array_value (const char *fmt, ...) const;
 
-  uint16NDArray xuint16_array_value (const char *fmt, ...) const;
+  OCTINTERP_API std::string xstring_value (const char *fmt, ...) const;
 
-  uint32NDArray xuint32_array_value (const char *fmt, ...) const;
+  OCTINTERP_API string_vector xstring_vector_value (const char *fmt, ...) const;
 
-  uint64NDArray xuint64_array_value (const char *fmt, ...) const;
+  OCTINTERP_API Cell xcell_value (const char *fmt, ...) const;
 
-  std::string xstring_value (const char *fmt, ...) const;
-
-  string_vector xstring_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API Array<std::string> xcellstr_value (const char *fmt, ...) const;
 
-  Cell xcell_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<float>
+  xfloat_range_value (const char *fmt, ...) const;
 
-  Array<std::string> xcellstr_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<double>
+  xrange_value (const char *fmt, ...) const;
 
-  octave::range<float> xfloat_range_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<octave_int8>
+  xint8_range_value (const char *fmt, ...) const;
 
-  octave::range<double> xrange_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<octave_int16>
+  xint16_range_value (const char *fmt, ...) const;
 
-  octave::range<octave_int8> xint8_range_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<octave_int32>
+  xint32_range_value (const char *fmt, ...) const;
 
-  octave::range<octave_int16> xint16_range_value (const char *fmt, ...) const;
-
-  octave::range<octave_int32> xint32_range_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<octave_int64>
+  xint64_range_value (const char *fmt, ...) const;
 
-  octave::range<octave_int64> xint64_range_value (const char *fmt, ...) const;
-
-  octave::range<octave_uint8> xuint8_range_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<octave_uint8>
+  xuint8_range_value (const char *fmt, ...) const;
 
-  octave::range<octave_uint16> xuint16_range_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<octave_uint16>
+  xuint16_range_value (const char *fmt, ...) const;
 
-  octave::range<octave_uint32> xuint32_range_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<octave_uint32>
+  xuint32_range_value (const char *fmt, ...) const;
 
-  octave::range<octave_uint64> xuint64_range_value (const char *fmt, ...) const;
+  OCTINTERP_API octave::range<octave_uint64>
+  xuint64_range_value (const char *fmt, ...) const;
 
-  octave_map xmap_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_map xmap_value (const char *fmt, ...) const;
 
-  octave_scalar_map xscalar_map_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_scalar_map
+  xscalar_map_value (const char *fmt, ...) const;
 
-  ColumnVector xcolumn_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API ColumnVector xcolumn_vector_value (const char *fmt, ...) const;
 
-  ComplexColumnVector
+  OCTINTERP_API ComplexColumnVector
   xcomplex_column_vector_value (const char *fmt, ...) const;
 
-  RowVector xrow_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API RowVector xrow_vector_value (const char *fmt, ...) const;
 
-  ComplexRowVector xcomplex_row_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API ComplexRowVector
+  xcomplex_row_vector_value (const char *fmt, ...) const;
 
-  FloatColumnVector xfloat_column_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatColumnVector
+  xfloat_column_vector_value (const char *fmt, ...) const;
 
-  FloatComplexColumnVector
+  OCTINTERP_API FloatComplexColumnVector
   xfloat_complex_column_vector_value (const char *fmt, ...) const;
 
-  FloatRowVector xfloat_row_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API FloatRowVector
+  xfloat_row_vector_value (const char *fmt, ...) const;
 
-  FloatComplexRowVector
+  OCTINTERP_API FloatComplexRowVector
   xfloat_complex_row_vector_value (const char *fmt, ...) const;
 
-  Array<int> xint_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API Array<int> xint_vector_value (const char *fmt, ...) const;
 
-  Array<octave_idx_type>
+  OCTINTERP_API Array<octave_idx_type>
   xoctave_idx_type_vector_value (const char *fmt, ...) const;
 
-  Array<double> xvector_value (const char *fmt, ...) const;
+  OCTINTERP_API Array<double> xvector_value (const char *fmt, ...) const;
 
-  Array<Complex> xcomplex_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API Array<Complex>
+  xcomplex_vector_value (const char *fmt, ...) const;
 
-  Array<float> xfloat_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API Array<float> xfloat_vector_value (const char *fmt, ...) const;
 
-  Array<FloatComplex> xfloat_complex_vector_value (const char *fmt, ...) const;
+  OCTINTERP_API Array<FloatComplex>
+  xfloat_complex_vector_value (const char *fmt, ...) const;
+
+  OCTINTERP_API octave_function * xfunction_value (const char *fmt, ...) const;
 
-  octave_function * xfunction_value (const char *fmt, ...) const;
-  octave_user_function * xuser_function_value (const char *fmt, ...) const;
-  octave_user_script * xuser_script_value (const char *fmt, ...) const;
-  octave_user_code * xuser_code_value (const char *fmt, ...) const;
-  octave_fcn_handle * xfcn_handle_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_user_function *
+  xuser_function_value (const char *fmt, ...) const;
+
+  OCTINTERP_API octave_user_script *
+  xuser_script_value (const char *fmt, ...) const;
 
-  octave_value_list xlist_value (const char *fmt, ...) const;
+  OCTINTERP_API octave_user_code *
+  xuser_code_value (const char *fmt, ...) const;
+
+  OCTINTERP_API octave_fcn_handle *
+  xfcn_handle_value (const char *fmt, ...) const;
+
+  OCTINTERP_API octave_value_list xlist_value (const char *fmt, ...) const;
 
   // Possibly economize a lazy-indexed value.
 
@@ -1262,12 +1330,12 @@
   // storing it to a "permanent" location, like a named variable, a cell or a
   // struct component, or a return value of a function.
 
-  octave_value storable_value (void) const;
+  OCTINTERP_API octave_value storable_value (void) const;
 
   // Ditto, but in place, i.e., equivalent to *this = this->storable_value (),
   // but possibly more efficient.
 
-  void make_storable_value (void);
+  OCTINTERP_API void make_storable_value (void);
 
   // FIXME: These should probably be private.
   // Conversions.  If a user of this class wants a certain kind of constant,
@@ -1301,7 +1369,7 @@
 
   void short_disp (std::ostream& os) const { rep->short_disp (os); }
 
-  float_display_format get_edit_display_format (void) const;
+  OCTINTERP_API float_display_format get_edit_display_format (void) const;
 
   std::string edit_display (const float_display_format& fmt,
                             octave_idx_type i, octave_idx_type j) const
@@ -1319,7 +1387,7 @@
   // non-member functions for unary and binary operations declared
   // below, outside of the octave_value class declaration.
 
-  octave_value& non_const_unary_op (unary_op op);
+  OCTINTERP_API octave_value& non_const_unary_op (unary_op op);
 
   OCTAVE_DEPRECATED (7, "use 'octave_value::non_const_unary_op' instead")
   octave_value& do_non_const_unary_op (unary_op op)
@@ -1327,8 +1395,9 @@
     return non_const_unary_op (op);
   }
 
-  octave_value& non_const_unary_op (unary_op op, const std::string& type,
-                                    const std::list<octave_value_list>& idx);
+  OCTINTERP_API octave_value&
+  non_const_unary_op (unary_op op, const std::string& type,
+                      const std::list<octave_value_list>& idx);
 
   OCTAVE_DEPRECATED (7, "use 'octave_value::non_const_unary_op' instead")
   octave_value& do_non_const_unary_op (unary_op op, const std::string& type,
@@ -1341,8 +1410,8 @@
 
   bool is_copy_of (const octave_value& val) const { return rep == val.rep; }
 
-  void print_info (std::ostream& os,
-                   const std::string& prefix = "") const;
+  OCTINTERP_API void
+  print_info (std::ostream& os, const std::string& prefix = "") const;
 
   bool save_ascii (std::ostream& os) { return rep->save_ascii (os); }
 
@@ -1362,16 +1431,18 @@
   bool load_hdf5 (octave_hdf5_id loc_id, const char *name)
   { return rep->load_hdf5 (loc_id, name); }
 
-  int write (octave::stream& os, int block_size,
-             oct_data_conv::data_type output_type, int skip,
-             octave::mach_info::float_format flt_fmt) const;
+  OCTINTERP_API int
+  write (octave::stream& os, int block_size,
+         oct_data_conv::data_type output_type, int skip,
+         octave::mach_info::float_format flt_fmt) const;
 
   octave_base_value * internal_rep (void) const { return rep; }
 
   // Unsafe.  These functions exist to support the MEX interface.
   // You should not use them anywhere else.
-  void * mex_get_data (mxClassID class_id = mxUNKNOWN_CLASS,
-                       mxComplexity complexity = mxREAL) const;
+  OCTINTERP_API void *
+  mex_get_data (mxClassID class_id = mxUNKNOWN_CLASS,
+                mxComplexity complexity = mxREAL) const;
 
   octave_idx_type * mex_get_ir (void) const { return rep->mex_get_ir (); }
 
@@ -1519,15 +1590,15 @@
 
 private:
 
-  static octave_base_value *nil_rep (void);
+  static OCTINTERP_API octave_base_value *nil_rep (void);
 
-  assign_op unary_op_to_assign_op (unary_op op);
+  OCTINTERP_API assign_op unary_op_to_assign_op (unary_op op);
 
-  binary_op op_eq_to_binary_op (assign_op op);
+  OCTINTERP_API binary_op op_eq_to_binary_op (assign_op op);
 
   // This declaration protects against constructing octave_value from
   // const octave_base_value* which actually silently calls octave_value (bool).
-  octave_value (const octave_base_value *);
+  OCTINTERP_API octave_value (const octave_base_value *);
 
 };