octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

MSVC compiler support [patch 17]: octinterp.dll exported symbols


From: Michael Goffioul
Subject: MSVC compiler support [patch 17]: octinterp.dll exported symbols
Date: Tue, 17 Oct 2006 21:51:45 +0200
User-agent: Thunderbird 1.5.0.7 (Windows/20060909)

Defines symbols exported by octinterp DLL
Index: src/defun-int.h
===================================================================
RCS file: /cvs/octave/src/defun-int.h,v
retrieving revision 1.55
diff -p -c -r1.55 defun-int.h
*** src/defun-int.h     22 Jun 2006 00:57:28 -0000      1.55
--- src/defun-int.h     17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 34,66 ****
  
  class octave_value;
  
! extern void print_usage (void);
! extern void print_usage (const std::string&) GCC_ATTR_DEPRECATED;
  
! extern void check_version (const std::string& version, const std::string& 
fcn);
  
! extern void
  install_builtin_mapper (octave_mapper *mf);
  
! extern void
  install_builtin_function (octave_builtin::fcn f, const std::string& name,
                          const std::string& doc, bool is_text_fcn = false,
                          bool can_hide_function = true);
  
! extern void
  install_dld_function (octave_dld_function::fcn f, const std::string& name,
                      const octave_shlib& shl,
                      const std::string& doc, bool is_text_fcn = false);
  
! extern void
  install_mex_function (void *fptr, bool fmex, const std::string& name,
                      const octave_shlib& shl, bool is_text_fcn = false);
  
! extern void
  alias_builtin (const std::string& alias, const std::string& name);
  
  #define DECLARE_FUNX(name, args_name, nargout_name) \
!   octave_value_list \
    name (const octave_value_list& args_name, int nargout_name)
  
  #define DECLARE_FUN(name, args_name, nargout_name) \
--- 34,72 ----
  
  class octave_value;
  
! extern OCTINTERP_API void print_usage (void);
! extern OCTINTERP_API void print_usage (const std::string&) 
GCC_ATTR_DEPRECATED;
  
! extern OCTINTERP_API void check_version (const std::string& version, const 
std::string& fcn);
  
! extern OCTINTERP_API void
  install_builtin_mapper (octave_mapper *mf);
  
! extern OCTINTERP_API void
  install_builtin_function (octave_builtin::fcn f, const std::string& name,
                          const std::string& doc, bool is_text_fcn = false,
                          bool can_hide_function = true);
  
! extern OCTINTERP_API void
  install_dld_function (octave_dld_function::fcn f, const std::string& name,
                      const octave_shlib& shl,
                      const std::string& doc, bool is_text_fcn = false);
  
! extern OCTINTERP_API void
  install_mex_function (void *fptr, bool fmex, const std::string& name,
                      const octave_shlib& shl, bool is_text_fcn = false);
  
! extern OCTINTERP_API void
  alias_builtin (const std::string& alias, const std::string& name);
  
+ #ifdef _MSC_VER
+ #define EXPORT __declspec(dllexport)
+ #else
+ #define EXPORT
+ #endif
+ 
  #define DECLARE_FUNX(name, args_name, nargout_name) \
!   EXPORT octave_value_list \
    name (const octave_value_list& args_name, int nargout_name)
  
  #define DECLARE_FUN(name, args_name, nargout_name) \
*************** typedef bool (*octave_dld_fcn_installer)
*** 89,94 ****
--- 95,101 ----
  
  #define DEFINE_FUNX_INSTALLER_FUN3(name, fname, fsname, doc, cxx_abi) \
    extern "C" \
+   EXPORT \
    bool \
    fsname ## _ ## cxx_abi (const octave_shlib& shl) \
    { \
Index: src/error.h
===================================================================
RCS file: /cvs/octave/src/error.h,v
retrieving revision 1.39
diff -p -c -r1.39 error.h
*** src/error.h 26 Jul 2006 17:19:10 -0000      1.39
--- src/error.h 17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 30,84 ****
    panic ("impossible state reached in file `%s' at line %d", \
         __FILE__, __LINE__)
  
! extern void reset_error_handler (void);
  
! extern int warning_enabled (const std::string& id);
  
! extern void message (const char *name, const char *fmt, ...);
! extern void usage (const char *fmt, ...);
! extern void warning (const char *fmt, ...);
! extern void error (const char *fmt, ...);
! extern void parse_error (const char *fmt, ...);
  
! extern void
  message_with_id (const char *id, const char *name, const char *fmt, ...);
  
! extern void
  usage_with_id (const char *id, const char *fmt, ...);
  
! extern void
  warning_with_id (const char *id, const char *fmt, ...);
  
! extern void
  error_with_id (const char *id, const char *fmt, ...);
  
! extern void
  parse_error_with_id (const char *id, const char *fmt, ...);
  
! extern void panic (const char *fmt, ...) GCC_ATTR_NORETURN;
  
  // Helper function for print_usage defined in defun.cc.
! extern void defun_usage_message (const std::string& msg);
  
! extern void disable_warning (const std::string& id);
! extern void initialize_default_warning_state (void);
  
  // Current error state.
! extern int error_state;
  
  // Current warning state.
! extern int warning_state;
  
  // Tell the error handler whether to print messages, or just store
  // them for later.  Used for handling errors in eval() and
  // the `unwind_protect' statement.
! extern int buffer_error_messages;
  
  // TRUE means error messages are turned off.
! extern bool discard_error_messages;
  
  // TRUE means warning messages are turned off.
! extern bool discard_warning_messages;
  
  #endif
  
--- 30,84 ----
    panic ("impossible state reached in file `%s' at line %d", \
         __FILE__, __LINE__)
  
! extern OCTINTERP_API void reset_error_handler (void);
  
! extern OCTINTERP_API int warning_enabled (const std::string& id);
  
! extern OCTINTERP_API void message (const char *name, const char *fmt, ...);
! extern OCTINTERP_API void usage (const char *fmt, ...);
! extern OCTINTERP_API void warning (const char *fmt, ...);
! extern OCTINTERP_API void error (const char *fmt, ...);
! extern OCTINTERP_API void parse_error (const char *fmt, ...);
  
! extern OCTINTERP_API void
  message_with_id (const char *id, const char *name, const char *fmt, ...);
  
! extern OCTINTERP_API void
  usage_with_id (const char *id, const char *fmt, ...);
  
! extern OCTINTERP_API void
  warning_with_id (const char *id, const char *fmt, ...);
  
! extern OCTINTERP_API void
  error_with_id (const char *id, const char *fmt, ...);
  
! extern OCTINTERP_API void
  parse_error_with_id (const char *id, const char *fmt, ...);
  
! extern OCTINTERP_API void panic (const char *fmt, ...) GCC_ATTR_NORETURN;
  
  // Helper function for print_usage defined in defun.cc.
! extern OCTINTERP_API void defun_usage_message (const std::string& msg);
  
! extern OCTINTERP_API void disable_warning (const std::string& id);
! extern OCTINTERP_API void initialize_default_warning_state (void);
  
  // Current error state.
! extern OCTINTERP_API int error_state;
  
  // Current warning state.
! extern OCTINTERP_API int warning_state;
  
  // Tell the error handler whether to print messages, or just store
  // them for later.  Used for handling errors in eval() and
  // the `unwind_protect' statement.
! extern OCTINTERP_API int buffer_error_messages;
  
  // TRUE means error messages are turned off.
! extern OCTINTERP_API bool discard_error_messages;
  
  // TRUE means warning messages are turned off.
! extern OCTINTERP_API bool discard_warning_messages;
  
  #endif
  
Index: src/file-io.cc
===================================================================
RCS file: /cvs/octave/src/file-io.cc,v
retrieving revision 1.180
diff -p -c -r1.180 file-io.cc
*** src/file-io.cc      16 Oct 2006 17:36:33 -0000      1.180
--- src/file-io.cc      17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 75,80 ****
--- 75,82 ----
  #include "utils.h"
  #include "variables.h"
  
+ #include "file-io.h"
+ 
  static octave_value stdin_file;
  static octave_value stdout_file;
  static octave_value stderr_file;
Index: src/file-io.h
===================================================================
RCS file: /cvs/octave/src/file-io.h,v
retrieving revision 1.21
diff -p -c -r1.21 file-io.h
*** src/file-io.h       26 Apr 2005 19:24:32 -0000      1.21
--- src/file-io.h       17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 26,38 ****
  #if !defined (octave_file_io_h)
  #define octave_file_io_h 1
  
! extern void initialize_file_io (void);
  
! extern void close_files (void);
  
! extern void mark_for_deletion (const std::string&);
  
! extern void cleanup_tmp_files (void);
  
  #endif
  
--- 26,38 ----
  #if !defined (octave_file_io_h)
  #define octave_file_io_h 1
  
! extern OCTINTERP_API void initialize_file_io (void);
  
! extern OCTINTERP_API void close_files (void);
  
! extern OCTINTERP_API void mark_for_deletion (const std::string&);
  
! extern OCTINTERP_API void cleanup_tmp_files (void);
  
  #endif
  
Index: src/gripes.h
===================================================================
RCS file: /cvs/octave/src/gripes.h,v
retrieving revision 1.28
diff -p -c -r1.28 gripes.h
*** src/gripes.h        18 Aug 2006 21:27:04 -0000      1.28
--- src/gripes.h        17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 30,109 ****
  
  class octave_value;
  
! extern void
  gripe_not_supported (const char *);
  
! extern void
  gripe_string_invalid (void);
  
! extern void
  gripe_range_invalid (void);
  
! extern void
  gripe_nonconformant (void);
  
! extern void
  gripe_nonconformant (octave_idx_type r1, octave_idx_type c1, octave_idx_type 
r2, octave_idx_type c2);
  
! extern void
  gripe_empty_arg (const char *name, bool is_error);
  
! extern void
  gripe_square_matrix_required (const char *name);
  
! extern void
  gripe_user_supplied_eval (const char *name);
  
! extern void
  gripe_user_returned_invalid (const char *name);
  
! extern void
  gripe_invalid_conversion (const std::string& from, const std::string& to);
  
! extern void
  gripe_invalid_value_specified (const char *name);
  
! extern void
  gripe_2_or_3_dim_plot (void);
  
! extern void
  gripe_unrecognized_float_fmt (void);
  
! extern void
  gripe_unrecognized_data_fmt (const char *warn_for);
  
! extern void
  gripe_data_conversion (const char *from, const char *to);
  
! extern void
  gripe_wrong_type_arg (const char *name, const char *s,
                      bool is_error = true);
  
! extern void
  gripe_wrong_type_arg (const char *name, const std::string& s,
                      bool is_error = true);
  
! extern void
  gripe_wrong_type_arg (const char *name, const octave_value& tc,
                      bool is_error = true);
  
! extern void
  gripe_wrong_type_arg_for_unary_op (const octave_value& op);
  
! extern void
  gripe_wrong_type_arg_for_binary_op (const octave_value& op);
  
! extern void
  gripe_implicit_conversion (const char *id, const char *from, const char *to);
  
! extern void
  gripe_implicit_conversion (const std::string& id, const std::string& from,
                           const std::string& to);
  
! extern void
  gripe_divide_by_zero (void);
  
! extern void
  gripe_logical_conversion (void);
  
  #endif
--- 30,109 ----
  
  class octave_value;
  
! extern OCTINTERP_API void
  gripe_not_supported (const char *);
  
! extern OCTINTERP_API void
  gripe_string_invalid (void);
  
! extern OCTINTERP_API void
  gripe_range_invalid (void);
  
! extern OCTINTERP_API void
  gripe_nonconformant (void);
  
! extern OCTINTERP_API void
  gripe_nonconformant (octave_idx_type r1, octave_idx_type c1, octave_idx_type 
r2, octave_idx_type c2);
  
! extern OCTINTERP_API void
  gripe_empty_arg (const char *name, bool is_error);
  
! extern OCTINTERP_API void
  gripe_square_matrix_required (const char *name);
  
! extern OCTINTERP_API void
  gripe_user_supplied_eval (const char *name);
  
! extern OCTINTERP_API void
  gripe_user_returned_invalid (const char *name);
  
! extern OCTINTERP_API void
  gripe_invalid_conversion (const std::string& from, const std::string& to);
  
! extern OCTINTERP_API void
  gripe_invalid_value_specified (const char *name);
  
! extern OCTINTERP_API void
  gripe_2_or_3_dim_plot (void);
  
! extern OCTINTERP_API void
  gripe_unrecognized_float_fmt (void);
  
! extern OCTINTERP_API void
  gripe_unrecognized_data_fmt (const char *warn_for);
  
! extern OCTINTERP_API void
  gripe_data_conversion (const char *from, const char *to);
  
! extern OCTINTERP_API void
  gripe_wrong_type_arg (const char *name, const char *s,
                      bool is_error = true);
  
! extern OCTINTERP_API void
  gripe_wrong_type_arg (const char *name, const std::string& s,
                      bool is_error = true);
  
! extern OCTINTERP_API void
  gripe_wrong_type_arg (const char *name, const octave_value& tc,
                      bool is_error = true);
  
! extern OCTINTERP_API void
  gripe_wrong_type_arg_for_unary_op (const octave_value& op);
  
! extern OCTINTERP_API void
  gripe_wrong_type_arg_for_binary_op (const octave_value& op);
  
! extern OCTINTERP_API void
  gripe_implicit_conversion (const char *id, const char *from, const char *to);
  
! extern OCTINTERP_API void
  gripe_implicit_conversion (const std::string& id, const std::string& from,
                           const std::string& to);
  
! extern OCTINTERP_API void
  gripe_divide_by_zero (void);
  
! extern OCTINTERP_API void
  gripe_logical_conversion (void);
  
  #endif
Index: src/ls-oct-ascii.h
===================================================================
RCS file: /cvs/octave/src/ls-oct-ascii.h,v
retrieving revision 1.10
diff -p -c -r1.10 ls-oct-ascii.h
*** src/ls-oct-ascii.h  23 Aug 2006 18:35:39 -0000      1.10
--- src/ls-oct-ascii.h  17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 40,63 ****
  #define OCT_RBV DBL_MAX / 100.0
  #endif
  
! extern std::string
  extract_keyword (std::istream& is, const char *keyword, 
                 const bool next_only = false);
  
! extern std::string
  read_ascii_data (std::istream& is, const std::string& filename, bool& global,
                 octave_value& tc, octave_idx_type count);
  
! extern bool
  save_ascii_data (std::ostream& os, const octave_value& val_arg,
                 const std::string& name, bool& infnan_warned,
                 bool mark_as_global, int precision);
  
! extern bool
  save_ascii_data_for_plotting (std::ostream& os, const octave_value& t,
                              const std::string& name);
  
! extern bool
  save_three_d (std::ostream& os, const octave_value& t,
              bool parametric = false);
  
--- 40,63 ----
  #define OCT_RBV DBL_MAX / 100.0
  #endif
  
! extern OCTINTERP_API std::string
  extract_keyword (std::istream& is, const char *keyword, 
                 const bool next_only = false);
  
! extern OCTINTERP_API std::string
  read_ascii_data (std::istream& is, const std::string& filename, bool& global,
                 octave_value& tc, octave_idx_type count);
  
! extern OCTINTERP_API bool
  save_ascii_data (std::ostream& os, const octave_value& val_arg,
                 const std::string& name, bool& infnan_warned,
                 bool mark_as_global, int precision);
  
! extern OCTINTERP_API bool
  save_ascii_data_for_plotting (std::ostream& os, const octave_value& t,
                              const std::string& name);
  
! extern OCTINTERP_API bool
  save_three_d (std::ostream& os, const octave_value& t,
              bool parametric = false);
  
Index: src/mex.h
===================================================================
RCS file: /cvs/octave/src/mex.h,v
retrieving revision 1.4
diff -p -c -r1.4 mex.h
*** src/mex.h   11 Oct 2006 19:23:04 -0000      1.4
--- src/mex.h   17 Oct 2006 11:07:42 -0000
*************** void mexFunction (int nlhs, mxArray* plh
*** 75,80 ****
--- 75,86 ----
  void mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray *prhs[]);
  #endif
    
+ #ifdef _MSC_VER
+ #ifndef OCTINTERP_API
+ #define OCTINTERP_API __declspec(dllimport)
+ #endif
+ #endif
+   
  #include "mexproto.h"
  
  /* V4 floating point routines renamed in V5.  */
Index: src/mexproto.h
===================================================================
RCS file: /cvs/octave/src/mexproto.h,v
retrieving revision 1.3
diff -p -c -r1.3 mexproto.h
*** src/mexproto.h      22 Jul 2006 08:31:17 -0000      1.3
--- src/mexproto.h      17 Oct 2006 11:07:42 -0000
*************** extern "C" {
*** 61,232 ****
  #undef MXARRAY_TYPEDEFS_ONLY
  
  // Interface to the interpreter.
! extern const char *mexFunctionName (void);
  
! extern int mexCallMATLAB (int nargout, mxArray *argout[], int nargin,
                          mxArray *argin[], const char *fname);
  
! extern void mexSetTrapFlag (int flag);
! extern int mexEvalString (const char *s);
! extern void mexErrMsgTxt (const char *s);
! extern void mexErrMsgIdAndTxt (const char *id, const char *s);
! extern void mexWarnMsgTxt (const char *s);
! extern void mexWarnMsgIdAndTxt (const char *id, const char *s);
! extern void mexPrintf (const char *fmt, ...);
    
! extern mxArray *mexGetVariable (const char *space, const char *name);
! extern const mxArray *mexGetVariablePtr (const char *space, const char *name);
  
! extern int mexPutVariable (const char *space, const char *name, mxArray *ptr);
  
! extern void mexMakeArrayPersistent (mxArray *ptr);
! extern void mexMakeMemoryPersistent (void *ptr);
  
! extern int mexAtExit (void (*f) (void));
! extern const mxArray *mexGet (double handle, const char *property);
! extern int mexIsGlobal (const mxArray *ptr);
! extern int mexIsLocked (void);
! extern void mexLock (void);
! extern int mexSet (double handle, const char *property, mxArray *val);
! extern void mexUnlock (void);
  
  // Floating point predicates.
! extern int mxIsFinite (double v);
! extern int mxIsInf (double v);
! extern int mxIsNaN (double v);
  
  // Floating point values.
! extern double mxGetEps (void);
! extern double mxGetInf (void);
! extern double mxGetNaN (void);
    
  // Memory management.
! extern void *mxCalloc (size_t n, size_t size);
! extern void *mxMalloc (size_t n);
! extern void *mxRealloc (void *ptr, size_t size);
! extern void mxFree (void *ptr);
    
  // Constructors.
! extern mxArray *mxCreateCellArray (int ndims, const int *dims);
! extern mxArray *mxCreateCellMatrix (int m, int n);
! extern mxArray *mxCreateCharArray (int ndims, const int *dims);
! extern mxArray *mxCreateCharMatrixFromStrings (int m, const char **str);
! extern mxArray *mxCreateDoubleMatrix (int nr, int nc, mxComplexity flag);
! extern mxArray *mxCreateDoubleScalar (double val);
! extern mxArray *mxCreateLogicalArray (int ndims, const int *dims);
! extern mxArray *mxCreateLogicalMatrix (int m, int n);
! extern mxArray *mxCreateLogicalScalar (int val);
! extern mxArray *mxCreateNumericArray (int ndims, const int *dims, mxClassID 
class_id, mxComplexity flag);
! extern mxArray *mxCreateNumericMatrix (int m, int n, mxClassID class_id, 
mxComplexity flag);
! extern mxArray *mxCreateSparse (int m, int n, int nzmax, mxComplexity flag);
! extern mxArray *mxCreateSparseLogicalMatrix (int m, int n, int nzmax);
! extern mxArray *mxCreateString (const char *str);
! extern mxArray *mxCreateStructArray (int ndims, int *dims, int num_keys, 
const char **keys);
! extern mxArray *mxCreateStructMatrix (int rows, int cols, int num_keys, const 
char **keys);
  
  // Copy constructor.
! extern mxArray *mxDuplicateArray (const mxArray *v);
  
  // Destructor.
! extern void mxDestroyArray (mxArray *v);
  
  // Type Predicates.
! extern int mxIsCell (const mxArray *ptr);
! extern int mxIsChar (const mxArray *ptr);
! extern int mxIsClass (const mxArray *ptr, const char *name);
! extern int mxIsComplex (const mxArray *ptr);
! extern int mxIsDouble (const mxArray *ptr);
! extern int mxIsInt16 (const mxArray *ptr);
! extern int mxIsInt32 (const mxArray *ptr);
! extern int mxIsInt64 (const mxArray *ptr);
! extern int mxIsInt8 (const mxArray *ptr);
! extern int mxIsLogical (const mxArray *ptr);
! extern int mxIsNumeric (const mxArray *ptr);
! extern int mxIsSingle (const mxArray *ptr);
! extern int mxIsSparse (const mxArray *ptr);
! extern int mxIsStruct (const mxArray *ptr);
! extern int mxIsUint16 (const mxArray *ptr);
! extern int mxIsUint32 (const mxArray *ptr);
! extern int mxIsUint64 (const mxArray *ptr);
! extern int mxIsUint8 (const mxArray *ptr);
  
  // Odd type+size predicate.
! extern int mxIsLogicalScalar (const mxArray *ptr);
  
  // Odd type+size+value predicate.
! extern int mxIsLogicalScalarTrue (const mxArray *ptr);
  
  // Size predicate.
! extern int mxIsEmpty (const mxArray *ptr);
  
  // Just plain odd thing to ask of a value.
! extern int mxIsFromGlobalWS (const mxArray *ptr);
  
  // Dimension extractors.
! extern int mxGetM (const mxArray *ptr);
! extern int mxGetN (const mxArray *ptr);
! extern int *mxGetDimensions (const mxArray *ptr);
! extern int mxGetNumberOfDimensions (const mxArray *ptr);
! extern int mxGetNumberOfElements (const mxArray *ptr);
  
  // Dimension setters.
! extern void mxSetM (mxArray *ptr, int M);
! extern void mxSetN (mxArray *ptr, int N);
! extern void mxSetDimensions (mxArray *ptr, int *dims, int ndims);
    
  // Data extractors.
! extern double *mxGetPi (const mxArray *ptr);
! extern double *mxGetPr (const mxArray *ptr);
! extern double mxGetScalar (const mxArray *ptr);
! extern mxChar *mxGetChars (const mxArray *ptr);
! extern mxLogical *mxGetLogicals (const mxArray *ptr);
! extern void *mxGetData (const mxArray *ptr);
! extern void *mxGetImagData (const mxArray *ptr);
  
  // Data setters.
! extern void mxSetPr (mxArray *ptr, double *pr);
! extern void mxSetPi (mxArray *ptr, double *pi);
! extern void mxSetData (mxArray *ptr, void *data);
! extern void mxSetImagData (mxArray *ptr, void *pi);
  
  // Classes.
! extern mxClassID mxGetClassID (const mxArray *ptr);
! extern const char *mxGetClassName (const mxArray *ptr);
  
! extern void mxSetClassName (mxArray *ptr, const char *name);
  
  // Cell support.
! extern mxArray *mxGetCell (const mxArray *ptr, int idx);
  
! extern void mxSetCell (mxArray *ptr, int idx, mxArray *val);
  
  // Sparse support.
! extern int *mxGetIr (const mxArray *ptr);
! extern int *mxGetJc (const mxArray *ptr);
! extern int mxGetNzmax (const mxArray *ptr);
! 
! extern void mxSetIr (mxArray *ptr, int *ir);
! extern void mxSetJc (mxArray *ptr, int *jc);
! extern void mxSetNzmax (mxArray *ptr, int nzmax);
  
  // Structure support.
! extern int mxAddField (mxArray *ptr, const char *key);
  
! extern void mxRemoveField (mxArray *ptr, int key_num);
  
! extern mxArray *mxGetField (const mxArray *ptr, int index, const char *key);
! extern mxArray *mxGetFieldByNumber (const mxArray *ptr, int index, int 
key_num);
  
! extern void mxSetField (mxArray *ptr, int index, const char *key, mxArray 
*val);
! extern void mxSetFieldByNumber (mxArray *ptr, int index, int key_num, mxArray 
*val);
  
! extern int mxGetNumberOfFields (const mxArray *ptr);
  
! extern const char *mxGetFieldNameByNumber (const mxArray *ptr, int key_num);
! extern int mxGetFieldNumber (const mxArray *ptr, const char *key);
  
! extern int mxGetString (const mxArray *ptr, char *buf, int buflen);
! extern char *mxArrayToString (const mxArray *ptr);
    
  // Miscellaneous.
  #ifdef NDEBUG
--- 61,232 ----
  #undef MXARRAY_TYPEDEFS_ONLY
  
  // Interface to the interpreter.
! extern OCTINTERP_API const char *mexFunctionName (void);
  
! extern OCTINTERP_API int mexCallMATLAB (int nargout, mxArray *argout[], int 
nargin,
                          mxArray *argin[], const char *fname);
  
! extern OCTINTERP_API void mexSetTrapFlag (int flag);
! extern OCTINTERP_API int mexEvalString (const char *s);
! extern OCTINTERP_API void mexErrMsgTxt (const char *s);
! extern OCTINTERP_API void mexErrMsgIdAndTxt (const char *id, const char *s);
! extern OCTINTERP_API void mexWarnMsgTxt (const char *s);
! extern OCTINTERP_API void mexWarnMsgIdAndTxt (const char *id, const char *s);
! extern OCTINTERP_API void mexPrintf (const char *fmt, ...);
    
! extern OCTINTERP_API mxArray *mexGetVariable (const char *space, const char 
*name);
! extern OCTINTERP_API const mxArray *mexGetVariablePtr (const char *space, 
const char *name);
  
! extern OCTINTERP_API int mexPutVariable (const char *space, const char *name, 
mxArray *ptr);
  
! extern OCTINTERP_API void mexMakeArrayPersistent (mxArray *ptr);
! extern OCTINTERP_API void mexMakeMemoryPersistent (void *ptr);
  
! extern OCTINTERP_API int mexAtExit (void (*f) (void));
! extern OCTINTERP_API const mxArray *mexGet (double handle, const char 
*property);
! extern OCTINTERP_API int mexIsGlobal (const mxArray *ptr);
! extern OCTINTERP_API int mexIsLocked (void);
! extern OCTINTERP_API void mexLock (void);
! extern OCTINTERP_API int mexSet (double handle, const char *property, mxArray 
*val);
! extern OCTINTERP_API void mexUnlock (void);
  
  // Floating point predicates.
! extern OCTINTERP_API int mxIsFinite (double v);
! extern OCTINTERP_API int mxIsInf (double v);
! extern OCTINTERP_API int mxIsNaN (double v);
  
  // Floating point values.
! extern OCTINTERP_API double mxGetEps (void);
! extern OCTINTERP_API double mxGetInf (void);
! extern OCTINTERP_API double mxGetNaN (void);
    
  // Memory management.
! extern OCTINTERP_API void *mxCalloc (size_t n, size_t size);
! extern OCTINTERP_API void *mxMalloc (size_t n);
! extern OCTINTERP_API void *mxRealloc (void *ptr, size_t size);
! extern OCTINTERP_API void mxFree (void *ptr);
    
  // Constructors.
! extern OCTINTERP_API mxArray *mxCreateCellArray (int ndims, const int *dims);
! extern OCTINTERP_API mxArray *mxCreateCellMatrix (int m, int n);
! extern OCTINTERP_API mxArray *mxCreateCharArray (int ndims, const int *dims);
! extern OCTINTERP_API mxArray *mxCreateCharMatrixFromStrings (int m, const 
char **str);
! extern OCTINTERP_API mxArray *mxCreateDoubleMatrix (int nr, int nc, 
mxComplexity flag);
! extern OCTINTERP_API mxArray *mxCreateDoubleScalar (double val);
! extern OCTINTERP_API mxArray *mxCreateLogicalArray (int ndims, const int 
*dims);
! extern OCTINTERP_API mxArray *mxCreateLogicalMatrix (int m, int n);
! extern OCTINTERP_API mxArray *mxCreateLogicalScalar (int val);
! extern OCTINTERP_API mxArray *mxCreateNumericArray (int ndims, const int 
*dims, mxClassID class_id, mxComplexity flag);
! extern OCTINTERP_API mxArray *mxCreateNumericMatrix (int m, int n, mxClassID 
class_id, mxComplexity flag);
! extern OCTINTERP_API mxArray *mxCreateSparse (int m, int n, int nzmax, 
mxComplexity flag);
! extern OCTINTERP_API mxArray *mxCreateSparseLogicalMatrix (int m, int n, int 
nzmax);
! extern OCTINTERP_API mxArray *mxCreateString (const char *str);
! extern OCTINTERP_API mxArray *mxCreateStructArray (int ndims, int *dims, int 
num_keys, const char **keys);
! extern OCTINTERP_API mxArray *mxCreateStructMatrix (int rows, int cols, int 
num_keys, const char **keys);
  
  // Copy constructor.
! extern OCTINTERP_API mxArray *mxDuplicateArray (const mxArray *v);
  
  // Destructor.
! extern OCTINTERP_API void mxDestroyArray (mxArray *v);
  
  // Type Predicates.
! extern OCTINTERP_API int mxIsCell (const mxArray *ptr);
! extern OCTINTERP_API int mxIsChar (const mxArray *ptr);
! extern OCTINTERP_API int mxIsClass (const mxArray *ptr, const char *name);
! extern OCTINTERP_API int mxIsComplex (const mxArray *ptr);
! extern OCTINTERP_API int mxIsDouble (const mxArray *ptr);
! extern OCTINTERP_API int mxIsInt16 (const mxArray *ptr);
! extern OCTINTERP_API int mxIsInt32 (const mxArray *ptr);
! extern OCTINTERP_API int mxIsInt64 (const mxArray *ptr);
! extern OCTINTERP_API int mxIsInt8 (const mxArray *ptr);
! extern OCTINTERP_API int mxIsLogical (const mxArray *ptr);
! extern OCTINTERP_API int mxIsNumeric (const mxArray *ptr);
! extern OCTINTERP_API int mxIsSingle (const mxArray *ptr);
! extern OCTINTERP_API int mxIsSparse (const mxArray *ptr);
! extern OCTINTERP_API int mxIsStruct (const mxArray *ptr);
! extern OCTINTERP_API int mxIsUint16 (const mxArray *ptr);
! extern OCTINTERP_API int mxIsUint32 (const mxArray *ptr);
! extern OCTINTERP_API int mxIsUint64 (const mxArray *ptr);
! extern OCTINTERP_API int mxIsUint8 (const mxArray *ptr);
  
  // Odd type+size predicate.
! extern OCTINTERP_API int mxIsLogicalScalar (const mxArray *ptr);
  
  // Odd type+size+value predicate.
! extern OCTINTERP_API int mxIsLogicalScalarTrue (const mxArray *ptr);
  
  // Size predicate.
! extern OCTINTERP_API int mxIsEmpty (const mxArray *ptr);
  
  // Just plain odd thing to ask of a value.
! extern OCTINTERP_API int mxIsFromGlobalWS (const mxArray *ptr);
  
  // Dimension extractors.
! extern OCTINTERP_API int mxGetM (const mxArray *ptr);
! extern OCTINTERP_API int mxGetN (const mxArray *ptr);
! extern OCTINTERP_API int *mxGetDimensions (const mxArray *ptr);
! extern OCTINTERP_API int mxGetNumberOfDimensions (const mxArray *ptr);
! extern OCTINTERP_API int mxGetNumberOfElements (const mxArray *ptr);
  
  // Dimension setters.
! extern OCTINTERP_API void mxSetM (mxArray *ptr, int M);
! extern OCTINTERP_API void mxSetN (mxArray *ptr, int N);
! extern OCTINTERP_API void mxSetDimensions (mxArray *ptr, int *dims, int 
ndims);
    
  // Data extractors.
! extern OCTINTERP_API double *mxGetPi (const mxArray *ptr);
! extern OCTINTERP_API double *mxGetPr (const mxArray *ptr);
! extern OCTINTERP_API double mxGetScalar (const mxArray *ptr);
! extern OCTINTERP_API mxChar *mxGetChars (const mxArray *ptr);
! extern OCTINTERP_API mxLogical *mxGetLogicals (const mxArray *ptr);
! extern OCTINTERP_API void *mxGetData (const mxArray *ptr);
! extern OCTINTERP_API void *mxGetImagData (const mxArray *ptr);
  
  // Data setters.
! extern OCTINTERP_API void mxSetPr (mxArray *ptr, double *pr);
! extern OCTINTERP_API void mxSetPi (mxArray *ptr, double *pi);
! extern OCTINTERP_API void mxSetData (mxArray *ptr, void *data);
! extern OCTINTERP_API void mxSetImagData (mxArray *ptr, void *pi);
  
  // Classes.
! extern OCTINTERP_API mxClassID mxGetClassID (const mxArray *ptr);
! extern OCTINTERP_API const char *mxGetClassName (const mxArray *ptr);
  
! extern OCTINTERP_API void mxSetClassName (mxArray *ptr, const char *name);
  
  // Cell support.
! extern OCTINTERP_API mxArray *mxGetCell (const mxArray *ptr, int idx);
  
! extern OCTINTERP_API void mxSetCell (mxArray *ptr, int idx, mxArray *val);
  
  // Sparse support.
! extern OCTINTERP_API int *mxGetIr (const mxArray *ptr);
! extern OCTINTERP_API int *mxGetJc (const mxArray *ptr);
! extern OCTINTERP_API int mxGetNzmax (const mxArray *ptr);
! 
! extern OCTINTERP_API void mxSetIr (mxArray *ptr, int *ir);
! extern OCTINTERP_API void mxSetJc (mxArray *ptr, int *jc);
! extern OCTINTERP_API void mxSetNzmax (mxArray *ptr, int nzmax);
  
  // Structure support.
! extern OCTINTERP_API int mxAddField (mxArray *ptr, const char *key);
  
! extern OCTINTERP_API void mxRemoveField (mxArray *ptr, int key_num);
  
! extern OCTINTERP_API mxArray *mxGetField (const mxArray *ptr, int index, 
const char *key);
! extern OCTINTERP_API mxArray *mxGetFieldByNumber (const mxArray *ptr, int 
index, int key_num);
  
! extern OCTINTERP_API void mxSetField (mxArray *ptr, int index, const char 
*key, mxArray *val);
! extern OCTINTERP_API void mxSetFieldByNumber (mxArray *ptr, int index, int 
key_num, mxArray *val);
  
! extern OCTINTERP_API int mxGetNumberOfFields (const mxArray *ptr);
  
! extern OCTINTERP_API const char *mxGetFieldNameByNumber (const mxArray *ptr, 
int key_num);
! extern OCTINTERP_API int mxGetFieldNumber (const mxArray *ptr, const char 
*key);
  
! extern OCTINTERP_API int mxGetString (const mxArray *ptr, char *buf, int 
buflen);
! extern OCTINTERP_API char *mxArrayToString (const mxArray *ptr);
    
  // Miscellaneous.
  #ifdef NDEBUG
*************** extern char *mxArrayToString (const mxAr
*** 257,265 ****
  #define mxAssertS(expr, msg)
  #endif
  
! extern int mxCalcSingleSubscript (const mxArray *ptr, int nsubs, int *subs);
  
! extern int mxGetElementSize (const mxArray *ptr);
  
  #if defined (__cplusplus)
  }
--- 257,265 ----
  #define mxAssertS(expr, msg)
  #endif
  
! extern OCTINTERP_API int mxCalcSingleSubscript (const mxArray *ptr, int 
nsubs, int *subs);
  
! extern OCTINTERP_API int mxGetElementSize (const mxArray *ptr);
  
  #if defined (__cplusplus)
  }
Index: src/oct-map.h
===================================================================
RCS file: /cvs/octave/src/oct-map.h,v
retrieving revision 1.49
diff -p -c -r1.49 oct-map.h
*** src/oct-map.h       14 Aug 2006 19:08:37 -0000      1.49
--- src/oct-map.h       17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 32,37 ****
--- 35,41 ----
  class string_vector;
  
  class
+ OCTINTERP_API
  Octave_map
  {
   public:
Index: src/oct-obj.h
===================================================================
RCS file: /cvs/octave/src/oct-obj.h,v
retrieving revision 1.50
diff -p -c -r1.50 oct-obj.h
*** src/oct-obj.h       7 Jun 2006 18:16:16 -0000       1.50
--- src/oct-obj.h       17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 33,38 ****
--- 33,39 ----
  #include "ov.h"
  
  class
+ OCTINTERP_API
  octave_value_list
  {
  public:
Index: src/oct-stream.cc
===================================================================
RCS file: /cvs/octave/src/oct-stream.cc,v
retrieving revision 1.134
diff -p -c -r1.134 oct-stream.cc
*** src/oct-stream.cc   16 Oct 2006 17:53:53 -0000      1.134
--- src/oct-stream.cc   17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 53,58 ****
--- 53,61 ----
  #include "oct-obj.h"
  #include "utils.h"
  
+ #undef OCTAVE_API
+ #define OCTAVE_API
+ 
  // Possible values for conv_err:
  //
  //   1 : not a real scalar
Index: src/oct-stream.h
===================================================================
RCS file: /cvs/octave/src/oct-stream.h,v
retrieving revision 1.48
diff -p -c -r1.48 oct-stream.h
*** src/oct-stream.h    17 Apr 2006 05:05:17 -0000      1.48
--- src/oct-stream.h    17 Oct 2006 11:07:42 -0000
*************** class octave_value_list;
*** 39,44 ****
--- 39,45 ----
  #include "mach-info.h"
  
  class
+ OCTINTERP_API
  scanf_format_elt
  {
  public:
*************** public:
*** 97,102 ****
--- 98,104 ----
  };
  
  class
+ OCTINTERP_API
  scanf_format_list
  {
  public:
*************** public:
*** 237,242 ****
--- 239,245 ----
  };
  
  class
+ OCTINTERP_API
  printf_format_list
  {
  public:
*************** private:
*** 317,322 ****
--- 320,326 ----
  // Provide an interface for Octave streams.
  
  class
+ OCTINTERP_API
  octave_base_stream
  {
  friend class octave_stream;
*************** private:
*** 475,480 ****
--- 479,485 ----
  };
  
  class
+ OCTINTERP_API
  octave_stream
  {
  public:
*************** private:
*** 614,619 ****
--- 619,625 ----
  };
  
  class
+ OCTINTERP_API
  octave_stream_list
  {
  protected:
Index: src/octave.h
===================================================================
RCS file: /cvs/octave/src/octave.h,v
retrieving revision 1.3
diff -p -c -r1.3 octave.h
*** src/octave.h        26 Apr 2005 19:24:33 -0000      1.3
--- src/octave.h        17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 28,34 ****
  extern "C" {
  #endif
  
! extern int octave_main (int argc, char **argv, int embedded);
  
  #ifdef        __cplusplus
  }
--- 28,34 ----
  extern "C" {
  #endif
  
! extern OCTINTERP_API int octave_main (int argc, char **argv, int embedded);
  
  #ifdef        __cplusplus
  }
Index: src/ov-base.h
===================================================================
RCS file: /cvs/octave/src/ov-base.h,v
retrieving revision 1.99
diff -p -c -r1.99 ov-base.h
*** src/ov-base.h       23 Aug 2006 18:35:39 -0000      1.99
--- src/ov-base.h       17 Oct 2006 11:07:42 -0000
*************** class tree_walker;
*** 98,103 ****
--- 98,104 ----
  // octave_value).
  
  class
+ OCTINTERP_API
  octave_base_value
  {
  public:
Index: src/ov-bool-sparse.cc
===================================================================
RCS file: /cvs/octave/src/ov-bool-sparse.cc,v
retrieving revision 1.17
diff -p -c -r1.17 ov-bool-sparse.cc
*** src/ov-bool-sparse.cc       18 Aug 2006 21:34:00 -0000      1.17
--- src/ov-bool-sparse.cc       17 Oct 2006 11:07:42 -0000
*************** Boston, MA 02110-1301, USA.
*** 43,49 ****
  #include "ov-base-sparse.h"
  #include "ov-base-sparse.cc"
  
! template class octave_base_sparse<SparseBoolMatrix>;
  
  DEFINE_OCTAVE_ALLOCATOR (octave_sparse_bool_matrix);
  
--- 43,49 ----
  #include "ov-base-sparse.h"
  #include "ov-base-sparse.cc"
  
! template class OCTINTERP_API octave_base_sparse<SparseBoolMatrix>;
  
  DEFINE_OCTAVE_ALLOCATOR (octave_sparse_bool_matrix);
  
Index: src/ov-bool-sparse.h
===================================================================
RCS file: /cvs/octave/src/ov-bool-sparse.h,v
retrieving revision 1.12
diff -p -c -r1.12 ov-bool-sparse.h
*** src/ov-bool-sparse.h        18 Aug 2006 21:34:00 -0000      1.12
--- src/ov-bool-sparse.h        17 Oct 2006 11:07:42 -0000
*************** class octave_value_list;
*** 48,53 ****
--- 48,54 ----
  class tree_walker;
  
  class
+ OCTINTERP_API
  octave_sparse_bool_matrix : public octave_base_sparse<SparseBoolMatrix>
  {
  public:
Index: src/ov-cx-sparse.cc
===================================================================
RCS file: /cvs/octave/src/ov-cx-sparse.cc,v
retrieving revision 1.15
diff -p -c -r1.15 ov-cx-sparse.cc
*** src/ov-cx-sparse.cc 26 Jul 2006 03:36:33 -0000      1.15
--- src/ov-cx-sparse.cc 17 Oct 2006 11:07:42 -0000
*************** Boston, MA 02110-1301, USA.
*** 42,48 ****
  
  #include "ov-bool-sparse.h"
  
! template class octave_base_sparse<SparseComplexMatrix>;
  
  DEFINE_OCTAVE_ALLOCATOR (octave_sparse_complex_matrix);
  
--- 42,48 ----
  
  #include "ov-bool-sparse.h"
  
! template class OCTINTERP_API octave_base_sparse<SparseComplexMatrix>;
  
  DEFINE_OCTAVE_ALLOCATOR (octave_sparse_complex_matrix);
  
Index: src/ov-cx-sparse.h
===================================================================
RCS file: /cvs/octave/src/ov-cx-sparse.h,v
retrieving revision 1.7
diff -p -c -r1.7 ov-cx-sparse.h
*** src/ov-cx-sparse.h  22 Jul 2006 08:31:17 -0000      1.7
--- src/ov-cx-sparse.h  17 Oct 2006 11:07:42 -0000
*************** class octave_value_list;
*** 49,54 ****
--- 49,55 ----
  class tree_walker;
  
  class
+ OCTINTERP_API
  octave_sparse_complex_matrix : public octave_base_sparse<SparseComplexMatrix>
  {
  public:
Index: src/ov-fcn.h
===================================================================
RCS file: /cvs/octave/src/ov-fcn.h,v
retrieving revision 1.27
diff -p -c -r1.27 ov-fcn.h
*** src/ov-fcn.h        22 Jun 2006 00:57:28 -0000      1.27
--- src/ov-fcn.h        17 Oct 2006 11:07:42 -0000
*************** class tree_walker;
*** 39,44 ****
--- 39,45 ----
  // Functions.
  
  class
+ OCTINTERP_API
  octave_function : public octave_base_value
  {
  public:
Index: src/ov-re-sparse.cc
===================================================================
RCS file: /cvs/octave/src/ov-re-sparse.cc,v
retrieving revision 1.18
diff -p -c -r1.18 ov-re-sparse.cc
*** src/ov-re-sparse.cc 18 Aug 2006 21:27:04 -0000      1.18
--- src/ov-re-sparse.cc 17 Oct 2006 11:07:42 -0000
*************** Boston, MA 02110-1301, USA.
*** 42,48 ****
  
  #include "ov-bool-sparse.h"
  
! template class octave_base_sparse<SparseMatrix>;
  
  DEFINE_OCTAVE_ALLOCATOR (octave_sparse_matrix);
  
--- 42,48 ----
  
  #include "ov-bool-sparse.h"
  
! template class OCTINTERP_API octave_base_sparse<SparseMatrix>;
  
  DEFINE_OCTAVE_ALLOCATOR (octave_sparse_matrix);
  
Index: src/ov-re-sparse.h
===================================================================
RCS file: /cvs/octave/src/ov-re-sparse.h,v
retrieving revision 1.11
diff -p -c -r1.11 ov-re-sparse.h
*** src/ov-re-sparse.h  18 Aug 2006 21:27:04 -0000      1.11
--- src/ov-re-sparse.h  17 Oct 2006 11:07:42 -0000
*************** class octave_value_list;
*** 50,55 ****
--- 50,56 ----
  class tree_walker;
  
  class
+ OCTINTERP_API
  octave_sparse_matrix : public octave_base_sparse<SparseMatrix>
  {
  public:
Index: src/ov-str-mat.h
===================================================================
RCS file: /cvs/octave/src/ov-str-mat.h,v
retrieving revision 1.49
diff -p -c -r1.49 ov-str-mat.h
*** src/ov-str-mat.h    23 Aug 2006 18:35:39 -0000      1.49
--- src/ov-str-mat.h    17 Oct 2006 11:07:42 -0000
*************** class tree_walker;
*** 47,52 ****
--- 47,53 ----
  // strings.
  
  class
+ OCTINTERP_API
  octave_char_matrix_str : public octave_char_matrix
  {
  public:
Index: src/ov-typeinfo.cc
===================================================================
RCS file: /cvs/octave/src/ov-typeinfo.cc,v
retrieving revision 1.36
diff -p -c -r1.36 ov-typeinfo.cc
*** src/ov-typeinfo.cc  15 Jul 2006 14:19:58 -0000      1.36
--- src/ov-typeinfo.cc  17 Oct 2006 11:07:42 -0000
*************** octave_value_typeinfo::instance (0);
*** 43,48 ****
--- 43,51 ----
  
  #include <Array.cc>
  
+ #undef OCTAVE_API
+ #define OCTAVE_API
+ 
  INSTANTIATE_ARRAY (octave_value_typeinfo::unary_op_fcn);
  template class Array2<octave_value_typeinfo::unary_op_fcn>;
  
Index: src/ov-typeinfo.h
===================================================================
RCS file: /cvs/octave/src/ov-typeinfo.h,v
retrieving revision 1.22
diff -p -c -r1.22 ov-typeinfo.h
*** src/ov-typeinfo.h   14 Apr 2006 04:01:40 -0000      1.22
--- src/ov-typeinfo.h   17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 35,40 ****
--- 35,41 ----
  class string_vector;
  
  class
+ OCTINTERP_API
  octave_value_typeinfo
  {
  public:
Index: src/ov.h
===================================================================
RCS file: /cvs/octave/src/ov.h,v
retrieving revision 1.150
diff -p -c -r1.150 ov.h
*** src/ov.h    23 Aug 2006 18:35:39 -0000      1.150
--- src/ov.h    17 Oct 2006 11:07:42 -0000
*************** class octave_lvalue;
*** 63,68 ****
--- 63,69 ----
  class octave_value;
  
  class
+ OCTINTERP_API
  octave_value
  {
  public:
*************** public:
*** 755,761 ****
  
    // Unary and binary operations.
  
!   friend octave_value do_unary_op (unary_op op,
                                   const octave_value& a);
  
    const octave_value& do_non_const_unary_op (unary_op op);
--- 756,762 ----
  
    // Unary and binary operations.
  
!   friend OCTINTERP_API octave_value do_unary_op (unary_op op,
                                   const octave_value& a);
  
    const octave_value& do_non_const_unary_op (unary_op op);
*************** public:
*** 765,775 ****
    octave_value do_non_const_unary_op (unary_op op, const std::string& type,
                                      const std::list<octave_value_list>& idx);
  
!   friend octave_value do_binary_op (binary_op op,
                                    const octave_value& a,
                                    const octave_value& b);
  
!   friend octave_value do_cat_op (const octave_value& a,
                                 const octave_value& b,
                                 const Array<int>& ra_idx);
  
--- 766,776 ----
    octave_value do_non_const_unary_op (unary_op op, const std::string& type,
                                      const std::list<octave_value_list>& idx);
  
!   friend OCTINTERP_API octave_value do_binary_op (binary_op op,
                                    const octave_value& a,
                                    const octave_value& b);
  
!   friend OCTINTERP_API octave_value do_cat_op (const octave_value& a,
                                 const octave_value& b,
                                 const Array<int>& ra_idx);
  
*************** private:
*** 832,841 ****
  
  // Publish externally used friend functions.
  
! extern octave_value
  do_unary_op (octave_value::unary_op op, const octave_value& a);
  
! extern octave_value
  do_binary_op (octave_value::binary_op op,
              const octave_value& a, const octave_value& b);
  
--- 833,842 ----
  
  // Publish externally used friend functions.
  
! extern OCTINTERP_API octave_value
  do_unary_op (octave_value::unary_op op, const octave_value& a);
  
! extern OCTINTERP_API octave_value
  do_binary_op (octave_value::binary_op op,
              const octave_value& a, const octave_value& b);
  
*************** OV_BINOP_FN (op_el_or)
*** 912,918 ****
  
  OV_BINOP_FN (op_struct_ref)
  
! extern void install_types (void);
  
  // FIXME -- these trait classes probably belong somehwere else...
  
--- 913,919 ----
  
  OV_BINOP_FN (op_struct_ref)
  
! extern OCTINTERP_API void install_types (void);
  
  // FIXME -- these trait classes probably belong somehwere else...
  
Index: src/pager.h
===================================================================
RCS file: /cvs/octave/src/pager.h,v
retrieving revision 1.24
diff -p -c -r1.24 pager.h
*** src/pager.h 17 Apr 2006 05:05:17 -0000      1.24
--- src/pager.h 17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 33,38 ****
--- 33,39 ----
  #endif
  
  class
+ OCTINTERP_API
  octave_pager_buf : public std::stringbuf
  {
  public:
*************** private:
*** 53,58 ****
--- 54,60 ----
  };
  
  class
+ OCTINTERP_API
  octave_pager_stream : public std::ostream
  {
  protected:
*************** private:
*** 83,88 ****
--- 85,91 ----
  };
  
  class
+ OCTINTERP_API
  octave_diary_buf : public std::stringbuf
  {
  public:
*************** protected:
*** 95,100 ****
--- 98,104 ----
  };
  
  class
+ OCTINTERP_API
  octave_diary_stream : public std::ostream
  {
  protected:
*************** private:
*** 124,130 ****
  
  #define octave_diary (octave_diary_stream::stream ())
  
! extern void flush_octave_stdout (void);
  
  #endif
  
--- 128,134 ----
  
  #define octave_diary (octave_diary_stream::stream ())
  
! extern OCTINTERP_API void flush_octave_stdout (void);
  
  #endif
  
Index: src/parse.h
===================================================================
RCS file: /cvs/octave/src/parse.h,v
retrieving revision 1.41
diff -p -c -r1.41 parse.h
*** src/parse.h 29 Aug 2006 16:37:40 -0000      1.41
--- src/parse.h 17 Oct 2006 11:07:42 -0000
*************** extern std::string parent_function_name;
*** 82,134 ****
  // Keep a count of how many END tokens we expect.
  extern int end_tokens_expected;
  
! extern void
  parse_and_execute (FILE *f);
  
! extern void
  parse_and_execute (const std::string& s, bool verbose = false,
                   const char *warn_for = 0);
  
! extern std::string
  get_help_from_file (const std::string& nm, bool& symbol_found,
                    std::string& file);
  
! extern std::string
  get_help_from_file (const std::string& nm, bool& symbol_found);
  
! extern std::string lookup_autoload (const std::string& nm);
  
! extern string_vector autoloaded_functions (void);
  
! extern string_vector reverse_lookup_autoload (const std::string& nm);
  
! extern bool
  load_fcn_from_file (const std::string& nm, bool exec_script);
  
! extern bool
  load_fcn_from_file (symbol_record *sym_rec, bool exec_script);
  
! extern void
  source_file (const std::string& file_name,
             const std::string& context = std::string ());
  
! extern octave_value_list
  feval (const std::string& name,
         const octave_value_list& args = octave_value_list (),
         int nargout = 0);
  
! extern octave_value_list
  feval (octave_function *fcn,
         const octave_value_list& args = octave_value_list (),
         int nargout = 0);
  
! extern octave_value_list
  feval (const octave_value_list& args, int nargout = 0);
  
! extern octave_value_list
  eval_string (const std::string&, bool silent, int& parse_status, int hargout);
  
! extern octave_value
  eval_string (const std::string&, bool silent, int& parse_status);
  
  #endif
--- 82,134 ----
  // Keep a count of how many END tokens we expect.
  extern int end_tokens_expected;
  
! extern OCTINTERP_API void
  parse_and_execute (FILE *f);
  
! extern OCTINTERP_API void
  parse_and_execute (const std::string& s, bool verbose = false,
                   const char *warn_for = 0);
  
! extern OCTINTERP_API std::string
  get_help_from_file (const std::string& nm, bool& symbol_found,
                    std::string& file);
  
! extern OCTINTERP_API std::string
  get_help_from_file (const std::string& nm, bool& symbol_found);
  
! extern OCTINTERP_API std::string lookup_autoload (const std::string& nm);
  
! extern OCTINTERP_API string_vector autoloaded_functions (void);
  
! extern OCTINTERP_API string_vector reverse_lookup_autoload (const 
std::string& nm);
  
! extern OCTINTERP_API bool
  load_fcn_from_file (const std::string& nm, bool exec_script);
  
! extern OCTINTERP_API bool
  load_fcn_from_file (symbol_record *sym_rec, bool exec_script);
  
! extern OCTINTERP_API void
  source_file (const std::string& file_name,
             const std::string& context = std::string ());
  
! extern OCTINTERP_API octave_value_list
  feval (const std::string& name,
         const octave_value_list& args = octave_value_list (),
         int nargout = 0);
  
! extern OCTINTERP_API octave_value_list
  feval (octave_function *fcn,
         const octave_value_list& args = octave_value_list (),
         int nargout = 0);
  
! extern OCTINTERP_API octave_value_list
  feval (const octave_value_list& args, int nargout = 0);
  
! extern OCTINTERP_API octave_value_list
  eval_string (const std::string&, bool silent, int& parse_status, int hargout);
  
! extern OCTINTERP_API octave_value
  eval_string (const std::string&, bool silent, int& parse_status);
  
  #endif
Index: src/pr-output.cc
===================================================================
RCS file: /cvs/octave/src/pr-output.cc,v
retrieving revision 1.149
diff -p -c -r1.149 pr-output.cc
*** src/pr-output.cc    2 Oct 2006 17:23:19 -0000       1.149
--- src/pr-output.cc    17 Oct 2006 11:07:42 -0000
*************** pr_int (std::ostream&, const octave_uint
*** 2467,2501 ****
  template void
  pr_int (std::ostream&, const octave_uint64&, int);
  
! template void
  octave_print_internal (std::ostream&, const intNDArray<octave_int8>&,
                       bool, int);
  
! template void
  octave_print_internal (std::ostream&, const intNDArray<octave_int16>&,
                       bool, int);
  
! template void
  octave_print_internal (std::ostream&, const intNDArray<octave_int32>&,
                       bool, int);
  
! template void
  octave_print_internal (std::ostream&, const intNDArray<octave_int64>&,
                       bool, int);
  
! template void
  octave_print_internal (std::ostream&, const intNDArray<octave_uint8>&,
                       bool, int);
  
! template void
  octave_print_internal (std::ostream&, const intNDArray<octave_uint16>&,
                       bool, int);
  
! template void
  octave_print_internal (std::ostream&, const intNDArray<octave_uint32>&,
                       bool, int);
  
! template void
  octave_print_internal (std::ostream&, const intNDArray<octave_uint64>&,
                       bool, int);
  
--- 2467,2501 ----
  template void
  pr_int (std::ostream&, const octave_uint64&, int);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const intNDArray<octave_int8>&,
                       bool, int);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const intNDArray<octave_int16>&,
                       bool, int);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const intNDArray<octave_int32>&,
                       bool, int);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const intNDArray<octave_int64>&,
                       bool, int);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const intNDArray<octave_uint8>&,
                       bool, int);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const intNDArray<octave_uint16>&,
                       bool, int);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const intNDArray<octave_uint32>&,
                       bool, int);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const intNDArray<octave_uint64>&,
                       bool, int);
  
*************** octave_print_internal (std::ostream& os,
*** 2518,2545 ****
  
  // FIXME -- this is not the right spot for this...
  
! template void
  octave_print_internal (std::ostream&, const octave_int8&, bool);
  
! template void
  octave_print_internal (std::ostream&, const octave_int16&, bool);
  
! template void
  octave_print_internal (std::ostream&, const octave_int32&, bool);
  
! template void
  octave_print_internal (std::ostream&, const octave_int64&, bool);
  
! template void
  octave_print_internal (std::ostream&, const octave_uint8&, bool);
  
! template void
  octave_print_internal (std::ostream&, const octave_uint16&, bool);
  
! template void
  octave_print_internal (std::ostream&, const octave_uint32&, bool);
  
! template void
  octave_print_internal (std::ostream&, const octave_uint64&, bool);
  
  extern void
--- 2518,2545 ----
  
  // FIXME -- this is not the right spot for this...
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const octave_int8&, bool);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const octave_int16&, bool);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const octave_int32&, bool);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const octave_int64&, bool);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const octave_uint8&, bool);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const octave_uint16&, bool);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const octave_uint32&, bool);
  
! template OCTINTERP_API void
  octave_print_internal (std::ostream&, const octave_uint64&, bool);
  
  extern void
Index: src/pr-output.h
===================================================================
RCS file: /cvs/octave/src/pr-output.h,v
retrieving revision 1.33
diff -p -c -r1.33 pr-output.h
*** src/pr-output.h     13 Apr 2006 13:04:33 -0000      1.33
--- src/pr-output.h     17 Oct 2006 11:07:42 -0000
*************** class Cell;
*** 43,109 ****
  #include "intNDArray.h"
  #include "oct-inttypes.h"
  
! extern void
  octave_print_internal (std::ostream& os, double d,
                       bool pr_as_read_syntax = false);
  
! extern void
  octave_print_internal (std::ostream& os, const Matrix& m,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern void
  octave_print_internal (std::ostream& os, const NDArray& nda,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern void
  octave_print_internal (std::ostream& os, const Complex& c,
                       bool pr_as_read_syntax = false);
  
! extern void
  octave_print_internal (std::ostream& os, const ComplexMatrix& cm,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern void
  octave_print_internal (std::ostream& os, const ComplexNDArray& nda,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern void
  octave_print_internal (std::ostream& os, const Range& r,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern void
  octave_print_internal (std::ostream& os, const boolMatrix& m,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern void
  octave_print_internal (std::ostream& os, const boolNDArray& m,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern void
  octave_print_internal (std::ostream& os, const charMatrix& chm,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0,
                       bool pr_as_string = false);
  
! extern void
  octave_print_internal (std::ostream& os, const charNDArray& nda,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0,
                       bool pr_as_string = false);
  
! extern void
  octave_print_internal (std::ostream& os, const std::string& s,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern void
  octave_print_internal (std::ostream& os, const ArrayN<std::string>& sa,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
--- 43,109 ----
  #include "intNDArray.h"
  #include "oct-inttypes.h"
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, double d,
                       bool pr_as_read_syntax = false);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const Matrix& m,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const NDArray& nda,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const Complex& c,
                       bool pr_as_read_syntax = false);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const ComplexMatrix& cm,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const ComplexNDArray& nda,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const Range& r,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const boolMatrix& m,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const boolNDArray& m,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const charMatrix& chm,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0,
                       bool pr_as_string = false);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const charNDArray& nda,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0,
                       bool pr_as_string = false);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const std::string& s,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const ArrayN<std::string>& sa,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0);
*************** extern void
*** 119,125 ****
  octave_print_internal (std::ostream& os, const octave_int<T>& sa,
                       bool pr_as_read_syntax = false);
  
! extern void
  octave_print_internal (std::ostream& os, const Cell& cell,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0,
--- 119,125 ----
  octave_print_internal (std::ostream& os, const octave_int<T>& sa,
                       bool pr_as_read_syntax = false);
  
! extern OCTINTERP_API void
  octave_print_internal (std::ostream& os, const Cell& cell,
                       bool pr_as_read_syntax = false,
                       int extra_indent = 0,
Index: src/procstream.h
===================================================================
RCS file: /cvs/octave/src/procstream.h,v
retrieving revision 1.28
diff -p -c -r1.28 procstream.h
*** src/procstream.h    26 Apr 2005 19:24:34 -0000      1.28
--- src/procstream.h    17 Oct 2006 11:07:42 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 34,39 ****
--- 34,40 ----
  #include "oct-procbuf.h"
  
  class
+ OCTINTERP_API
  procstreambase : virtual public std::ios
  {
  public:
*************** private:
*** 69,74 ****
--- 70,76 ----
  };
  
  class
+ OCTINTERP_API
  iprocstream : public std::istream, public procstreambase
  // iprocstream : public procstreambase, public std::istream
  {
*************** private:
*** 98,103 ****
--- 100,106 ----
  };
  
  class
+ OCTINTERP_API
  oprocstream : public std::ostream, public procstreambase
  // oprocstream : public procstreambase, public std::ostream
  {
*************** private:
*** 127,132 ****
--- 130,136 ----
  };
  
  class
+ OCTINTERP_API
  procstream : public std::iostream, public procstreambase
  // procstream : public procstreambase, public std::iostream
  {
Index: src/sighandlers.h
===================================================================
RCS file: /cvs/octave/src/sighandlers.h,v
retrieving revision 1.34
diff -p -c -r1.34 sighandlers.h
*** src/sighandlers.h   24 Apr 2006 19:13:11 -0000      1.34
--- src/sighandlers.h   17 Oct 2006 11:07:42 -0000
*************** extern int pipe_handler_error_count;
*** 97,114 ****
  // TRUE means we can be interrupted.
  extern bool can_interrupt;
  
! extern sig_handler *octave_set_signal_handler (int, sig_handler *,
                                               bool restart_syscalls = true);
  
! extern void install_signal_handlers (void);
  
! extern void octave_signal_handler (void);
  
! extern octave_interrupt_handler octave_catch_interrupts (void);
  
! extern octave_interrupt_handler octave_ignore_interrupts (void);
  
! extern octave_interrupt_handler
  octave_set_interrupt_handler (const volatile octave_interrupt_handler&,
                              bool restart_syscalls = true);
  
--- 97,114 ----
  // TRUE means we can be interrupted.
  extern bool can_interrupt;
  
! extern OCTINTERP_API sig_handler *octave_set_signal_handler (int, sig_handler 
*,
                                               bool restart_syscalls = true);
  
! extern OCTINTERP_API void install_signal_handlers (void);
  
! extern OCTINTERP_API void octave_signal_handler (void);
  
! extern OCTINTERP_API octave_interrupt_handler octave_catch_interrupts (void);
  
! extern OCTINTERP_API octave_interrupt_handler octave_ignore_interrupts (void);
  
! extern OCTINTERP_API octave_interrupt_handler
  octave_set_interrupt_handler (const volatile octave_interrupt_handler&,
                              bool restart_syscalls = true);
  
*************** octave_set_interrupt_handler (const vola
*** 117,122 ****
--- 117,123 ----
  // Maybe this should be in a separate file?
  
  class
+ OCTINTERP_API
  octave_child
  {
  public:
*************** public:
*** 165,170 ****
--- 166,172 ----
  };
  
  class
+ OCTINTERP_API
  octave_child_list
  {
  protected:
Index: src/symtab.h
===================================================================
RCS file: /cvs/octave/src/symtab.h,v
retrieving revision 1.85
diff -p -c -r1.85 symtab.h
*** src/symtab.h        22 Jun 2006 00:57:28 -0000      1.85
--- src/symtab.h        17 Oct 2006 11:07:42 -0000
*************** whos_parameter
*** 58,63 ****
--- 58,64 ----
  // Individual records in a symbol table.
  
  class
+ OCTINTERP_API
  symbol_record
  {
  public:
*************** private:
*** 499,504 ****
--- 500,506 ----
  #define SYMTAB_VARIABLES (symbol_record::USER_VARIABLE)
  
  class
+ OCTINTERP_API
  symbol_table
  {
  public:
Index: src/toplev.cc
===================================================================
RCS file: /cvs/octave/src/toplev.cc,v
retrieving revision 1.187
diff -p -c -r1.187 toplev.cc
*** src/toplev.cc       9 Oct 2006 19:49:04 -0000       1.187
--- src/toplev.cc       17 Oct 2006 11:07:43 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 77,82 ****
--- 77,86 ----
  #include "variables.h"
  #include <version.h>
  
+ #ifdef _MSC_VER
+ #include "gripes.h"
+ #endif
+ 
  // TRUE means we are exiting via the builtin exit or quit functions.
  static bool quitting_gracefully = false;
  
Index: src/unwind-prot.h
===================================================================
RCS file: /cvs/octave/src/unwind-prot.h,v
retrieving revision 1.29
diff -p -c -r1.29 unwind-prot.h
*** src/unwind-prot.h   12 Jun 2006 15:54:27 -0000      1.29
--- src/unwind-prot.h   17 Oct 2006 11:07:43 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 30,35 ****
--- 30,36 ----
  #include <stack>
  
  class
+ OCTINTERP_API
  unwind_elem
  {
  public:
*************** private:
*** 75,80 ****
--- 76,82 ----
  };
  
  class
+ OCTINTERP_API
  unwind_protect
  {
  public:
Index: src/utils.h
===================================================================
RCS file: /cvs/octave/src/utils.h,v
retrieving revision 1.78
diff -p -c -r1.78 utils.h
*** src/utils.h 22 Jun 2006 00:57:28 -0000      1.78
--- src/utils.h 17 Oct 2006 11:07:43 -0000
*************** class octave_value;
*** 36,109 ****
  class octave_value_list;
  class string_vector;
  
! extern bool valid_identifier (const char *s);
! extern bool valid_identifier (const std::string& s);
  
! extern int almost_match (const std::string& std, const std::string& s,
                         int min_match_len = 1, int case_sens = 1);
  
! extern int
  keyword_almost_match (const char * const *std, int *min_len,
                      const std::string& s, int min_toks_to_match,
                      int max_toks);
  
! extern int empty_arg (const char *name, octave_idx_type nr, octave_idx_type 
nc);
  
! extern std::string
  search_path_for_file (const std::string&, const string_vector&);
  
! extern string_vector
  search_path_for_all_files (const std::string&, const string_vector&);
  
! extern std::string file_in_path (const std::string&, const std::string&);
! extern std::string fcn_file_in_path (const std::string&);
! extern std::string oct_file_in_path (const std::string&);
! extern std::string mex_file_in_path (const std::string&);
  
! extern std::string do_string_escapes (const std::string& s);
  
! extern const char *undo_string_escape (char c);
  
! extern std::string undo_string_escapes (const std::string& s);
  
! extern void
  check_dimensions (dim_vector& dim, const char *warnfor);
  
! extern void
  get_dimensions (const octave_value& a, const char *warn_for,
                  dim_vector& dim);
  
! extern void
  get_dimensions (const octave_value& a, const octave_value& b,
                const char *warn_for, octave_idx_type& nr, octave_idx_type& nc);
  
! extern void
  get_dimensions (const octave_value& a,
                const char *warn_for, octave_idx_type& nr, octave_idx_type& nc);
  
! extern Matrix identity_matrix (octave_idx_type nr, octave_idx_type nc);
  
! extern int
  octave_format (std::ostream& os, const char *fmt, ...);
  
! extern int
  octave_vformat (std::ostream& os, const char *fmt, va_list args);
  
! extern char *octave_vsnprintf (const char *fmt, va_list args);
  
! extern char *octave_snprintf (const char *fmt, ...);
  
! extern void octave_sleep (double seconds);
  
! extern "C" void octave_sleep (unsigned int seconds);
  
! extern "C" void octave_usleep (unsigned int useconds);
  
! extern "C" int octave_strcasecmp (const char *s1, const char *s2);
  
! extern "C" int octave_strncasecmp (const char *s1, const char *s2, size_t n);
  
! extern "C" int octave_raw_vsnprintf (char *buf, size_t n, const char *fmt,
                                     va_list args);
  
  #endif
--- 36,109 ----
  class octave_value_list;
  class string_vector;
  
! extern OCTINTERP_API bool valid_identifier (const char *s);
! extern OCTINTERP_API bool valid_identifier (const std::string& s);
  
! extern OCTINTERP_API int almost_match (const std::string& std, const 
std::string& s,
                         int min_match_len = 1, int case_sens = 1);
  
! extern OCTINTERP_API int
  keyword_almost_match (const char * const *std, int *min_len,
                      const std::string& s, int min_toks_to_match,
                      int max_toks);
  
! extern OCTINTERP_API int empty_arg (const char *name, octave_idx_type nr, 
octave_idx_type nc);
  
! extern OCTINTERP_API std::string
  search_path_for_file (const std::string&, const string_vector&);
  
! extern OCTINTERP_API string_vector
  search_path_for_all_files (const std::string&, const string_vector&);
  
! extern OCTINTERP_API std::string file_in_path (const std::string&, const 
std::string&);
! extern OCTINTERP_API std::string fcn_file_in_path (const std::string&);
! extern OCTINTERP_API std::string oct_file_in_path (const std::string&);
! extern OCTINTERP_API std::string mex_file_in_path (const std::string&);
  
! extern OCTINTERP_API std::string do_string_escapes (const std::string& s);
  
! extern OCTINTERP_API const char *undo_string_escape (char c);
  
! extern OCTINTERP_API std::string undo_string_escapes (const std::string& s);
  
! extern OCTINTERP_API void
  check_dimensions (dim_vector& dim, const char *warnfor);
  
! extern OCTINTERP_API void
  get_dimensions (const octave_value& a, const char *warn_for,
                  dim_vector& dim);
  
! extern OCTINTERP_API void
  get_dimensions (const octave_value& a, const octave_value& b,
                const char *warn_for, octave_idx_type& nr, octave_idx_type& nc);
  
! extern OCTINTERP_API void
  get_dimensions (const octave_value& a,
                const char *warn_for, octave_idx_type& nr, octave_idx_type& nc);
  
! extern OCTINTERP_API Matrix identity_matrix (octave_idx_type nr, 
octave_idx_type nc);
  
! extern OCTINTERP_API int
  octave_format (std::ostream& os, const char *fmt, ...);
  
! extern OCTINTERP_API int
  octave_vformat (std::ostream& os, const char *fmt, va_list args);
  
! extern OCTINTERP_API char *octave_vsnprintf (const char *fmt, va_list args);
  
! extern OCTINTERP_API char *octave_snprintf (const char *fmt, ...);
  
! extern OCTINTERP_API void octave_sleep (double seconds);
  
! extern "C" OCTINTERP_API void octave_sleep (unsigned int seconds);
  
! extern "C" OCTINTERP_API void octave_usleep (unsigned int useconds);
  
! extern "C" OCTINTERP_API int octave_strcasecmp (const char *s1, const char 
*s2);
  
! extern "C" OCTINTERP_API int octave_strncasecmp (const char *s1, const char 
*s2, size_t n);
  
! extern "C" OCTINTERP_API int octave_raw_vsnprintf (char *buf, size_t n, const 
char *fmt,
                                     va_list args);
  
  #endif
Index: src/variables.h
===================================================================
RCS file: /cvs/octave/src/variables.h,v
retrieving revision 1.86
diff -p -c -r1.86 variables.h
*** src/variables.h     8 May 2006 20:23:07 -0000       1.86
--- src/variables.h     17 Oct 2006 11:07:43 -0000
*************** class string_vector;
*** 45,133 ****
  #include "ov-builtin.h"
  #include "symtab.h"
  
! extern bool at_top_level (void);
  
! extern void initialize_symbol_tables (void);
  
! extern bool is_command_name (const std::string&);
  
  // The next three are here temporarily...
! extern bool is_marked_as_rawcommand (const std::string& s);
! extern void mark_as_rawcommand (const std::string& s);
! extern void unmark_rawcommand (const std::string& s);
! 
! extern bool is_rawcommand_name (const std::string&);
! extern bool is_mapper_function_name (const std::string&);
! extern bool is_builtin_function_name (const std::string&);
! extern bool is_globally_visible (const std::string&);
  
! extern octave_function *
  is_valid_function (const octave_value&, const std::string& = std::string (),
                   bool warn = false); 
  
! extern octave_function *
  is_valid_function (const std::string&, const std::string& = std::string (),
                   bool warn = false); 
  
! extern octave_function *
  extract_function (const octave_value& arg, const std::string& warn_for,
                  const std::string& fname, const std::string& header,
                  const std::string& trailer);
  
! extern string_vector
  get_struct_elts (const std::string& text);
  
! extern string_vector
  generate_struct_completions (const std::string& text, std::string& prefix,
                             std::string& hint);
  
! extern bool
  looks_like_struct (const std::string& text);
  
! extern int
  symbol_exist (const std::string& name, const std::string& type = "any");
  
! extern std::string
  unique_symbol_name (const std::string& basename);
  
! extern bool
  fcn_out_of_date (octave_function *fcn, const std::string& ff, time_t tp);
  
! extern bool lookup (symbol_record *s, bool exec_script = true);
  
! extern symbol_record *
  lookup_by_name (const std::string& nm, bool exec_script = true);
  
! extern octave_value lookup_function (const std::string& nm);
  
! extern octave_value lookup_user_function (const std::string& nm);
  
! extern octave_value lookup_function_handle (const std::string& nm);
  
! extern octave_value
  get_global_value (const std::string& nm, bool silent = false);
  
! extern void set_global_value (const std::string& nm, const octave_value& val);
  
! extern octave_value
  set_internal_variable (bool& var, const octave_value_list& args,
                       int nargout, const char *nm);
  
! extern octave_value
  set_internal_variable (char& var, const octave_value_list& args,
                       int nargout, const char *nm);
  
! extern octave_value
  set_internal_variable (int& var, const octave_value_list& args,
                       int nargout, const char *nm,
                       int minval = INT_MIN, int maxval = INT_MAX);
  
! extern octave_value
  set_internal_variable (double& var, const octave_value_list& args,
                       int nargout, const char *nm,
                       double minval = DBL_MIN, double maxval = DBL_MAX);
  
! extern octave_value
  set_internal_variable (std::string& var, const octave_value_list& args,
                       int nargout, const char *nm, bool empty_ok = true);
  
--- 45,133 ----
  #include "ov-builtin.h"
  #include "symtab.h"
  
! extern OCTINTERP_API bool at_top_level (void);
  
! extern OCTINTERP_API void initialize_symbol_tables (void);
  
! extern OCTINTERP_API bool is_command_name (const std::string&);
  
  // The next three are here temporarily...
! extern OCTINTERP_API bool is_marked_as_rawcommand (const std::string& s);
! extern OCTINTERP_API void mark_as_rawcommand (const std::string& s);
! extern OCTINTERP_API void unmark_rawcommand (const std::string& s);
! 
! extern OCTINTERP_API bool is_rawcommand_name (const std::string&);
! extern OCTINTERP_API bool is_mapper_function_name (const std::string&);
! extern OCTINTERP_API bool is_builtin_function_name (const std::string&);
! extern OCTINTERP_API bool is_globally_visible (const std::string&);
  
! extern OCTINTERP_API octave_function *
  is_valid_function (const octave_value&, const std::string& = std::string (),
                   bool warn = false); 
  
! extern OCTINTERP_API octave_function *
  is_valid_function (const std::string&, const std::string& = std::string (),
                   bool warn = false); 
  
! extern OCTINTERP_API octave_function *
  extract_function (const octave_value& arg, const std::string& warn_for,
                  const std::string& fname, const std::string& header,
                  const std::string& trailer);
  
! extern OCTINTERP_API string_vector
  get_struct_elts (const std::string& text);
  
! extern OCTINTERP_API string_vector
  generate_struct_completions (const std::string& text, std::string& prefix,
                             std::string& hint);
  
! extern OCTINTERP_API bool
  looks_like_struct (const std::string& text);
  
! extern OCTINTERP_API int
  symbol_exist (const std::string& name, const std::string& type = "any");
  
! extern OCTINTERP_API std::string
  unique_symbol_name (const std::string& basename);
  
! extern OCTINTERP_API bool
  fcn_out_of_date (octave_function *fcn, const std::string& ff, time_t tp);
  
! extern OCTINTERP_API bool lookup (symbol_record *s, bool exec_script = true);
  
! extern OCTINTERP_API symbol_record *
  lookup_by_name (const std::string& nm, bool exec_script = true);
  
! extern OCTINTERP_API octave_value lookup_function (const std::string& nm);
  
! extern OCTINTERP_API octave_value lookup_user_function (const std::string& 
nm);
  
! extern OCTINTERP_API octave_value lookup_function_handle (const std::string& 
nm);
  
! extern OCTINTERP_API octave_value
  get_global_value (const std::string& nm, bool silent = false);
  
! extern OCTINTERP_API void set_global_value (const std::string& nm, const 
octave_value& val);
  
! extern OCTINTERP_API octave_value
  set_internal_variable (bool& var, const octave_value_list& args,
                       int nargout, const char *nm);
  
! extern OCTINTERP_API octave_value
  set_internal_variable (char& var, const octave_value_list& args,
                       int nargout, const char *nm);
  
! extern OCTINTERP_API octave_value
  set_internal_variable (int& var, const octave_value_list& args,
                       int nargout, const char *nm,
                       int minval = INT_MIN, int maxval = INT_MAX);
  
! extern OCTINTERP_API octave_value
  set_internal_variable (double& var, const octave_value_list& args,
                       int nargout, const char *nm,
                       double minval = DBL_MIN, double maxval = DBL_MAX);
  
! extern OCTINTERP_API octave_value
  set_internal_variable (std::string& var, const octave_value_list& args,
                       int nargout, const char *nm, bool empty_ok = true);
  
*************** set_internal_variable (std::string& var,
*** 140,181 ****
  #define SET_INTERNAL_VARIABLE_WITH_LIMITS(NM, MINVAL, MAXVAL) \
    set_internal_variable (V ## NM, args, nargout, #NM, MINVAL, MAXVAL)
  
! extern std::string builtin_string_variable (const std::string&);
! extern int builtin_real_scalar_variable (const std::string&, double&);
! extern octave_value builtin_any_variable (const std::string&);
  
! extern void link_to_global_variable (symbol_record *sr);
! extern void link_to_builtin_or_function (symbol_record *sr);
  
! extern void force_link_to_function (const std::string&);
  
! extern void bind_ans (const octave_value& val, bool print);
  
! extern void
  bind_internal_variable (const std::string& fname, const octave_value& val);
  
! extern void mlock (const std::string&);
! extern void munlock (const std::string&);
! extern bool mislocked (const std::string&);
! 
! extern bool clear_function (const std::string& nm);
! extern bool clear_variable (const std::string& nm);
! extern bool clear_symbol (const std::string& nm);
  
  // Symbol table for symbols at the top level.
! extern symbol_table *top_level_sym_tab;
  
  // Symbol table for the current scope.
! extern symbol_table *curr_sym_tab;
  
  // Symbol table for the current caller scope.
! extern symbol_table *curr_caller_sym_tab;
  
  // Symbol table for global symbols.
! extern symbol_table *global_sym_tab;
  
  // Symbol table for functions and built-in symbols.
! extern symbol_table *fbi_sym_tab;
  
  #endif
  
--- 140,181 ----
  #define SET_INTERNAL_VARIABLE_WITH_LIMITS(NM, MINVAL, MAXVAL) \
    set_internal_variable (V ## NM, args, nargout, #NM, MINVAL, MAXVAL)
  
! extern OCTINTERP_API std::string builtin_string_variable (const std::string&);
! extern OCTINTERP_API int builtin_real_scalar_variable (const std::string&, 
double&);
! extern OCTINTERP_API octave_value builtin_any_variable (const std::string&);
  
! extern OCTINTERP_API void link_to_global_variable (symbol_record *sr);
! extern OCTINTERP_API void link_to_builtin_or_function (symbol_record *sr);
  
! extern OCTINTERP_API void force_link_to_function (const std::string&);
  
! extern OCTINTERP_API void bind_ans (const octave_value& val, bool print);
  
! extern OCTINTERP_API void
  bind_internal_variable (const std::string& fname, const octave_value& val);
  
! extern OCTINTERP_API void mlock (const std::string&);
! extern OCTINTERP_API void munlock (const std::string&);
! extern OCTINTERP_API bool mislocked (const std::string&);
! 
! extern OCTINTERP_API bool clear_function (const std::string& nm);
! extern OCTINTERP_API bool clear_variable (const std::string& nm);
! extern OCTINTERP_API bool clear_symbol (const std::string& nm);
  
  // Symbol table for symbols at the top level.
! extern OCTINTERP_API symbol_table *top_level_sym_tab;
  
  // Symbol table for the current scope.
! extern OCTINTERP_API symbol_table *curr_sym_tab;
  
  // Symbol table for the current caller scope.
! extern OCTINTERP_API symbol_table *curr_caller_sym_tab;
  
  // Symbol table for global symbols.
! extern OCTINTERP_API symbol_table *global_sym_tab;
  
  // Symbol table for functions and built-in symbols.
! extern OCTINTERP_API symbol_table *fbi_sym_tab;
  
  #endif
  
Index: src/TEMPLATE-INST/Array-os.cc
===================================================================
RCS file: /cvs/octave/src/TEMPLATE-INST/Array-os.cc,v
retrieving revision 1.5
diff -p -c -r1.5 Array-os.cc
*** src/TEMPLATE-INST/Array-os.cc       26 Apr 2005 19:24:35 -0000      1.5
--- src/TEMPLATE-INST/Array-os.cc       17 Oct 2006 11:07:43 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 35,40 ****
--- 35,43 ----
  typedef scanf_format_elt* scanf_format_elt_ptr;
  typedef printf_format_elt* printf_format_elt_ptr;
  
+ #undef OCTAVE_API
+ #define OCTAVE_API
+ 
  INSTANTIATE_ARRAY (scanf_format_elt_ptr);
  
  INSTANTIATE_ARRAY (printf_format_elt_ptr);
Index: src/TEMPLATE-INST/Array-sym.cc
===================================================================
RCS file: /cvs/octave/src/TEMPLATE-INST/Array-sym.cc,v
retrieving revision 1.6
diff -p -c -r1.6 Array-sym.cc
*** src/TEMPLATE-INST/Array-sym.cc      26 Apr 2005 19:24:35 -0000      1.6
--- src/TEMPLATE-INST/Array-sym.cc      17 Oct 2006 11:07:43 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 35,40 ****
--- 35,43 ----
  
  typedef symbol_record* symbol_record_ptr;
  
+ #undef OCTAVE_API
+ #define OCTAVE_API
+ 
  INSTANTIATE_ARRAY (symbol_record_ptr);
  
  /*
Index: src/TEMPLATE-INST/Array-tc.cc
===================================================================
RCS file: /cvs/octave/src/TEMPLATE-INST/Array-tc.cc,v
retrieving revision 1.19
diff -p -c -r1.19 Array-tc.cc
*** src/TEMPLATE-INST/Array-tc.cc       26 Apr 2005 19:24:35 -0000      1.19
--- src/TEMPLATE-INST/Array-tc.cc       17 Oct 2006 11:07:43 -0000
*************** Software Foundation, Inc., 51 Franklin S
*** 40,46 ****
  
  #include "oct-obj.h"
  
! template<>
  octave_value
  resize_fill_value<octave_value> (const octave_value&)
  {
--- 40,46 ----
  
  #include "oct-obj.h"
  
! template<> OCTINTERP_API
  octave_value
  resize_fill_value<octave_value> (const octave_value&)
  {
*************** resize_fill_value<octave_value> (const o
*** 48,60 ****
    return retval;
  }
  
! template class Array<octave_value>;
  
  INSTANTIATE_ARRAY_ASSIGN (octave_value, octave_value);
  
! template class Array2<octave_value>;
  
! template class ArrayN<octave_value>;
  
  /*
  ;;; Local Variables: ***
--- 48,63 ----
    return retval;
  }
  
! template class OCTINTERP_API Array<octave_value>;
! 
! #undef OCTAVE_API
! #define OCTAVE_API OCTINTERP_API
  
  INSTANTIATE_ARRAY_ASSIGN (octave_value, octave_value);
  
! template class OCTINTERP_API Array2<octave_value>;
  
! template class OCTINTERP_API ArrayN<octave_value>;
  
  /*
  ;;; Local Variables: ***

reply via email to

[Prev in Thread] Current Thread [Next in Thread]