changeset 29235:d16d73a050b2

Set API tags in remaining files in libinterp (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:23:42 +0100
parents 853e60367cb6
children 9b1ccd094d1b
files libinterp/build-env.h libinterp/liboctinterp-build-info.h libinterp/parse-tree/parse.h
diffstat 3 files changed, 238 insertions(+), 231 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/build-env.h	Tue Dec 29 18:21:12 2020 +0100
+++ b/libinterp/build-env.h	Tue Dec 29 18:23:42 2020 +0100
@@ -34,152 +34,152 @@
 {
   namespace build_env
   {
-    extern OCTAVE_API octave_scalar_map features (void);
+    extern OCTINTERP_API octave_scalar_map features (void);
 
-    extern const char *AMD_CPPFLAGS;
-    extern const char *AMD_LDFLAGS;
-    extern const char *AMD_LIBS;
-    extern const char *ARFLAGS;
-    extern const char *AR;
-    extern const char *ARPACK_CPPFLAGS;
-    extern const char *ARPACK_LDFLAGS;
-    extern const char *ARPACK_LIBS;
-    extern const char *BLAS_LIBS;
-    extern const char *CAMD_CPPFLAGS;
-    extern const char *CAMD_LDFLAGS;
-    extern const char *CAMD_LIBS;
-    extern const char *CARBON_LIBS;
-    extern const char *CC;
-    extern const char *CCOLAMD_CPPFLAGS;
-    extern const char *CCOLAMD_LDFLAGS;
-    extern const char *CCOLAMD_LIBS;
-    extern const char *CFLAGS;
-    extern const char *CHOLMOD_CPPFLAGS;
-    extern const char *CHOLMOD_LDFLAGS;
-    extern const char *CHOLMOD_LIBS;
-    extern const char *COLAMD_CPPFLAGS;
-    extern const char *COLAMD_LDFLAGS;
-    extern const char *COLAMD_LIBS;
-    extern const char *CPICFLAG;
-    extern const char *CPPFLAGS;
-    extern const char *CURL_CPPFLAGS;
-    extern const char *CURL_LDFLAGS;
-    extern const char *CURL_LIBS;
-    extern const char *CXSPARSE_CPPFLAGS;
-    extern const char *CXSPARSE_LDFLAGS;
-    extern const char *CXSPARSE_LIBS;
-    extern const char *CXXCPP;
-    extern const char *CXXFLAGS;
-    extern const char *CXXPICFLAG;
-    extern const char *CXX;
-    extern const char *DEFAULT_PAGER;
-    extern const char *DEFS;
-    extern const char *DL_LDFLAGS;
-    extern const char *EXEEXT;
-    extern const char *GCC_VERSION;
-    extern const char *GXX_VERSION;
-    extern const char *F77;
-    extern const char *F77_FLOAT_STORE_FLAG;
-    extern const char *F77_INTEGER_8_FLAG;
-    extern const char *FFLAGS;
-    extern const char *FFTW3_CPPFLAGS;
-    extern const char *FFTW3_LDFLAGS;
-    extern const char *FFTW3_LIBS;
-    extern const char *FFTW3F_CPPFLAGS;
-    extern const char *FFTW3F_LDFLAGS;
-    extern const char *FFTW3F_LIBS;
-    extern const char *FLIBS;
-    extern const char *FLTK_CPPFLAGS;
-    extern const char *FLTK_LDFLAGS;
-    extern const char *FLTK_LIBS;
-    extern const char *FONTCONFIG_CPPFLAGS;
-    extern const char *FONTCONFIG_LIBS;
-    extern const char *FPICFLAG;
-    extern const char *FT2_CPPFLAGS;
-    extern const char *FT2_LIBS;
-    extern const char *GLPK_CPPFLAGS;
-    extern const char *GLPK_LDFLAGS;
-    extern const char *GLPK_LIBS;
-    extern const char *GNUPLOT;
-    extern const char *HDF5_CPPFLAGS;
-    extern const char *HDF5_LDFLAGS;
-    extern const char *HDF5_LIBS;
-    extern const char *INCLUDEDIR;
-    extern const char *KLU_CPPFLAGS;
-    extern const char *KLU_LDFLAGS;
-    extern const char *KLU_LIBS;
-    extern const char *LAPACK_LIBS;
-    extern const char *LDFLAGS;
-    extern const char *LD_STATIC_FLAG;
-    extern const char *LEXLIB;
-    extern const char *LEX;
-    extern const char *LFLAGS;
-    extern const char *LIBOCTAVE;
-    extern const char *LIBOCTINTERP;
-    extern const char *LIBS;
-    extern const char *LN_S;
-    extern const char *MAGICK_CPPFLAGS;
-    extern const char *MAGICK_LDFLAGS;
-    extern const char *MAGICK_LIBS;
-    extern const char *LLVM_CPPFLAGS;
-    extern const char *LLVM_LDFLAGS;
-    extern const char *LLVM_LIBS;
-    extern const char *MKOCTFILE_DL_LDFLAGS;
-    extern const char *OCTAVE_LINK_DEPS;
-    extern const char *OCTAVE_LINK_OPTS;
-    extern const char *OCTINCLUDEDIR;
-    extern const char *OCTLIBDIR;
-    extern const char *OCT_LINK_DEPS;
-    extern const char *OCT_LINK_OPTS;
-    extern const char *OPENGL_LIBS;
-    extern const char *PCRE_CPPFLAGS;
-    extern const char *PCRE_LDFLAGS;
-    extern const char *PCRE_LIBS;
-    extern const char *PREFIX;
-    extern const char *PTHREAD_CFLAGS;
-    extern const char *PTHREAD_LIBS;
-    extern const char *QHULL_CPPFLAGS;
-    extern const char *QHULL_LDFLAGS;
-    extern const char *QHULL_LIBS;
-    extern const char *QRUPDATE_CPPFLAGS;
-    extern const char *QRUPDATE_LDFLAGS;
-    extern const char *QRUPDATE_LIBS;
-    extern const char *QT_CPPFLAGS;
-    extern const char *QT_LDFLAGS;
-    extern const char *QT_LIBS;
-    extern const char *QT_OPENGL_LIBS;
-    extern const char *RANLIB;
-    extern const char *RDYNAMIC_FLAG;
-    extern const char *READLINE_LIBS;
-    extern const char *SHARED_LIBS;
-    extern const char *SH_LDFLAGS;
-    extern const char *STATIC_LIBS;
-    extern const char *SUITESPARSECONFIG_LIBS;
-    extern const char *SUNDIALS_IDA_CPPFLAGS;
-    extern const char *SUNDIALS_IDA_LDFLAGS;
-    extern const char *SUNDIALS_IDA_LIBS;
-    extern const char *SUNDIALS_NVECSERIAL_CPPFLAGS;
-    extern const char *SUNDIALS_NVECSERIAL_LDFLAGS;
-    extern const char *SUNDIALS_NVECSERIAL_LIBS;
-    extern const char *SUNDIALS_SUNLINSOLKLU_CPPFLAGS;
-    extern const char *SUNDIALS_SUNLINSOLKLU_LDFLAGS;
-    extern const char *SUNDIALS_SUNLINSOLKLU_LIBS;
-    extern const char *TERM_LIBS;
-    extern const char *UMFPACK_CPPFLAGS;
-    extern const char *UMFPACK_LDFLAGS;
-    extern const char *UMFPACK_LIBS;
-    extern const char *WARN_CFLAGS;
-    extern const char *WARN_CXXFLAGS;
-    extern const char *X11_INCFLAGS;
-    extern const char *X11_LIBS;
-    extern const char *XTRA_CFLAGS;
-    extern const char *XTRA_CXXFLAGS;
-    extern const char *YACC;
-    extern const char *YFLAGS;
-    extern const char *Z_CPPFLAGS;
-    extern const char *Z_LDFLAGS;
-    extern const char *Z_LIBS;
-    extern const char *config_opts;
+    extern OCTINTERP_API const char *AMD_CPPFLAGS;
+    extern OCTINTERP_API const char *AMD_LDFLAGS;
+    extern OCTINTERP_API const char *AMD_LIBS;
+    extern OCTINTERP_API const char *ARFLAGS;
+    extern OCTINTERP_API const char *AR;
+    extern OCTINTERP_API const char *ARPACK_CPPFLAGS;
+    extern OCTINTERP_API const char *ARPACK_LDFLAGS;
+    extern OCTINTERP_API const char *ARPACK_LIBS;
+    extern OCTINTERP_API const char *BLAS_LIBS;
+    extern OCTINTERP_API const char *CAMD_CPPFLAGS;
+    extern OCTINTERP_API const char *CAMD_LDFLAGS;
+    extern OCTINTERP_API const char *CAMD_LIBS;
+    extern OCTINTERP_API const char *CARBON_LIBS;
+    extern OCTINTERP_API const char *CC;
+    extern OCTINTERP_API const char *CCOLAMD_CPPFLAGS;
+    extern OCTINTERP_API const char *CCOLAMD_LDFLAGS;
+    extern OCTINTERP_API const char *CCOLAMD_LIBS;
+    extern OCTINTERP_API const char *CFLAGS;
+    extern OCTINTERP_API const char *CHOLMOD_CPPFLAGS;
+    extern OCTINTERP_API const char *CHOLMOD_LDFLAGS;
+    extern OCTINTERP_API const char *CHOLMOD_LIBS;
+    extern OCTINTERP_API const char *COLAMD_CPPFLAGS;
+    extern OCTINTERP_API const char *COLAMD_LDFLAGS;
+    extern OCTINTERP_API const char *COLAMD_LIBS;
+    extern OCTINTERP_API const char *CPICFLAG;
+    extern OCTINTERP_API const char *CPPFLAGS;
+    extern OCTINTERP_API const char *CURL_CPPFLAGS;
+    extern OCTINTERP_API const char *CURL_LDFLAGS;
+    extern OCTINTERP_API const char *CURL_LIBS;
+    extern OCTINTERP_API const char *CXSPARSE_CPPFLAGS;
+    extern OCTINTERP_API const char *CXSPARSE_LDFLAGS;
+    extern OCTINTERP_API const char *CXSPARSE_LIBS;
+    extern OCTINTERP_API const char *CXXCPP;
+    extern OCTINTERP_API const char *CXXFLAGS;
+    extern OCTINTERP_API const char *CXXPICFLAG;
+    extern OCTINTERP_API const char *CXX;
+    extern OCTINTERP_API const char *DEFAULT_PAGER;
+    extern OCTINTERP_API const char *DEFS;
+    extern OCTINTERP_API const char *DL_LDFLAGS;
+    extern OCTINTERP_API const char *EXEEXT;
+    extern OCTINTERP_API const char *GCC_VERSION;
+    extern OCTINTERP_API const char *GXX_VERSION;
+    extern OCTINTERP_API const char *F77;
+    extern OCTINTERP_API const char *F77_FLOAT_STORE_FLAG;
+    extern OCTINTERP_API const char *F77_INTEGER_8_FLAG;
+    extern OCTINTERP_API const char *FFLAGS;
+    extern OCTINTERP_API const char *FFTW3_CPPFLAGS;
+    extern OCTINTERP_API const char *FFTW3_LDFLAGS;
+    extern OCTINTERP_API const char *FFTW3_LIBS;
+    extern OCTINTERP_API const char *FFTW3F_CPPFLAGS;
+    extern OCTINTERP_API const char *FFTW3F_LDFLAGS;
+    extern OCTINTERP_API const char *FFTW3F_LIBS;
+    extern OCTINTERP_API const char *FLIBS;
+    extern OCTINTERP_API const char *FLTK_CPPFLAGS;
+    extern OCTINTERP_API const char *FLTK_LDFLAGS;
+    extern OCTINTERP_API const char *FLTK_LIBS;
+    extern OCTINTERP_API const char *FONTCONFIG_CPPFLAGS;
+    extern OCTINTERP_API const char *FONTCONFIG_LIBS;
+    extern OCTINTERP_API const char *FPICFLAG;
+    extern OCTINTERP_API const char *FT2_CPPFLAGS;
+    extern OCTINTERP_API const char *FT2_LIBS;
+    extern OCTINTERP_API const char *GLPK_CPPFLAGS;
+    extern OCTINTERP_API const char *GLPK_LDFLAGS;
+    extern OCTINTERP_API const char *GLPK_LIBS;
+    extern OCTINTERP_API const char *GNUPLOT;
+    extern OCTINTERP_API const char *HDF5_CPPFLAGS;
+    extern OCTINTERP_API const char *HDF5_LDFLAGS;
+    extern OCTINTERP_API const char *HDF5_LIBS;
+    extern OCTINTERP_API const char *INCLUDEDIR;
+    extern OCTINTERP_API const char *KLU_CPPFLAGS;
+    extern OCTINTERP_API const char *KLU_LDFLAGS;
+    extern OCTINTERP_API const char *KLU_LIBS;
+    extern OCTINTERP_API const char *LAPACK_LIBS;
+    extern OCTINTERP_API const char *LDFLAGS;
+    extern OCTINTERP_API const char *LD_STATIC_FLAG;
+    extern OCTINTERP_API const char *LEXLIB;
+    extern OCTINTERP_API const char *LEX;
+    extern OCTINTERP_API const char *LFLAGS;
+    extern OCTINTERP_API const char *LIBOCTAVE;
+    extern OCTINTERP_API const char *LIBOCTINTERP;
+    extern OCTINTERP_API const char *LIBS;
+    extern OCTINTERP_API const char *LN_S;
+    extern OCTINTERP_API const char *MAGICK_CPPFLAGS;
+    extern OCTINTERP_API const char *MAGICK_LDFLAGS;
+    extern OCTINTERP_API const char *MAGICK_LIBS;
+    extern OCTINTERP_API const char *LLVM_CPPFLAGS;
+    extern OCTINTERP_API const char *LLVM_LDFLAGS;
+    extern OCTINTERP_API const char *LLVM_LIBS;
+    extern OCTINTERP_API const char *MKOCTFILE_DL_LDFLAGS;
+    extern OCTINTERP_API const char *OCTAVE_LINK_DEPS;
+    extern OCTINTERP_API const char *OCTAVE_LINK_OPTS;
+    extern OCTINTERP_API const char *OCTINCLUDEDIR;
+    extern OCTINTERP_API const char *OCTLIBDIR;
+    extern OCTINTERP_API const char *OCT_LINK_DEPS;
+    extern OCTINTERP_API const char *OCT_LINK_OPTS;
+    extern OCTINTERP_API const char *OPENGL_LIBS;
+    extern OCTINTERP_API const char *PCRE_CPPFLAGS;
+    extern OCTINTERP_API const char *PCRE_LDFLAGS;
+    extern OCTINTERP_API const char *PCRE_LIBS;
+    extern OCTINTERP_API const char *PREFIX;
+    extern OCTINTERP_API const char *PTHREAD_CFLAGS;
+    extern OCTINTERP_API const char *PTHREAD_LIBS;
+    extern OCTINTERP_API const char *QHULL_CPPFLAGS;
+    extern OCTINTERP_API const char *QHULL_LDFLAGS;
+    extern OCTINTERP_API const char *QHULL_LIBS;
+    extern OCTINTERP_API const char *QRUPDATE_CPPFLAGS;
+    extern OCTINTERP_API const char *QRUPDATE_LDFLAGS;
+    extern OCTINTERP_API const char *QRUPDATE_LIBS;
+    extern OCTINTERP_API const char *QT_CPPFLAGS;
+    extern OCTINTERP_API const char *QT_LDFLAGS;
+    extern OCTINTERP_API const char *QT_LIBS;
+    extern OCTINTERP_API const char *QT_OPENGL_LIBS;
+    extern OCTINTERP_API const char *RANLIB;
+    extern OCTINTERP_API const char *RDYNAMIC_FLAG;
+    extern OCTINTERP_API const char *READLINE_LIBS;
+    extern OCTINTERP_API const char *SHARED_LIBS;
+    extern OCTINTERP_API const char *SH_LDFLAGS;
+    extern OCTINTERP_API const char *STATIC_LIBS;
+    extern OCTINTERP_API const char *SUITESPARSECONFIG_LIBS;
+    extern OCTINTERP_API const char *SUNDIALS_IDA_CPPFLAGS;
+    extern OCTINTERP_API const char *SUNDIALS_IDA_LDFLAGS;
+    extern OCTINTERP_API const char *SUNDIALS_IDA_LIBS;
+    extern OCTINTERP_API const char *SUNDIALS_NVECSERIAL_CPPFLAGS;
+    extern OCTINTERP_API const char *SUNDIALS_NVECSERIAL_LDFLAGS;
+    extern OCTINTERP_API const char *SUNDIALS_NVECSERIAL_LIBS;
+    extern OCTINTERP_API const char *SUNDIALS_SUNLINSOLKLU_CPPFLAGS;
+    extern OCTINTERP_API const char *SUNDIALS_SUNLINSOLKLU_LDFLAGS;
+    extern OCTINTERP_API const char *SUNDIALS_SUNLINSOLKLU_LIBS;
+    extern OCTINTERP_API const char *TERM_LIBS;
+    extern OCTINTERP_API const char *UMFPACK_CPPFLAGS;
+    extern OCTINTERP_API const char *UMFPACK_LDFLAGS;
+    extern OCTINTERP_API const char *UMFPACK_LIBS;
+    extern OCTINTERP_API const char *WARN_CFLAGS;
+    extern OCTINTERP_API const char *WARN_CXXFLAGS;
+    extern OCTINTERP_API const char *X11_INCFLAGS;
+    extern OCTINTERP_API const char *X11_LIBS;
+    extern OCTINTERP_API const char *XTRA_CFLAGS;
+    extern OCTINTERP_API const char *XTRA_CXXFLAGS;
+    extern OCTINTERP_API const char *YACC;
+    extern OCTINTERP_API const char *YFLAGS;
+    extern OCTINTERP_API const char *Z_CPPFLAGS;
+    extern OCTINTERP_API const char *Z_LDFLAGS;
+    extern OCTINTERP_API const char *Z_LIBS;
+    extern OCTINTERP_API const char *config_opts;
   }
 }
 
--- a/libinterp/liboctinterp-build-info.h	Tue Dec 29 18:21:12 2020 +0100
+++ b/libinterp/liboctinterp-build-info.h	Tue Dec 29 18:23:42 2020 +0100
@@ -32,6 +32,6 @@
 
 #include <string>
 
-extern OCTAVE_API std::string liboctinterp_hg_id (void);
+extern OCTINTERP_API std::string liboctinterp_hg_id (void);
 
 #endif
--- a/libinterp/parse-tree/parse.h	Tue Dec 29 18:21:12 2020 +0100
+++ b/libinterp/parse-tree/parse.h	Tue Dec 29 18:23:42 2020 +0100
@@ -127,23 +127,23 @@
 
       ~parent_scope_info (void) = default;
 
-      size_t size (void) const;
+      OCTINTERP_API size_t size (void) const;
 
-      void push (const value_type& elt);
+      OCTINTERP_API void push (const value_type& elt);
 
-      void push (const symbol_scope& id);
+      OCTINTERP_API void push (const symbol_scope& id);
 
-      void pop (void);
+      OCTINTERP_API void pop (void);
 
-      bool name_ok (const std::string& name);
+      OCTINTERP_API bool name_ok (const std::string& name);
 
-      bool name_current_scope (const std::string& name);
+      OCTINTERP_API bool name_current_scope (const std::string& name);
 
-      symbol_scope parent_scope (void) const;
+      OCTINTERP_API symbol_scope parent_scope (void) const;
 
-      std::string parent_name (void) const;
+      OCTINTERP_API std::string parent_name (void) const;
 
-      void clear (void);
+      OCTINTERP_API void clear (void);
 
     private:
 
@@ -154,7 +154,7 @@
 
   public:
 
-    base_parser (base_lexer& lxr);
+    OCTINTERP_API base_parser (base_lexer& lxr);
 
     // No copying!
 
@@ -168,7 +168,7 @@
 
     bool at_end_of_input (void) const { return m_lexer.m_end_of_input; }
 
-    void reset (void);
+    OCTINTERP_API void reset (void);
 
     void classdef_object (const std::shared_ptr<tree_classdef>& obj)
     {
@@ -180,7 +180,7 @@
       return m_classdef_object;
     }
 
-    void statement_list (std::shared_ptr<tree_statement_list>& lst);
+    OCTINTERP_API void statement_list (std::shared_ptr<tree_statement_list>& lst);
 
     std::shared_ptr<tree_statement_list> statement_list (void) const
     {
@@ -223,274 +223,281 @@
     }
 
     // Error messages for mismatched end tokens.
-    void end_token_error (token *tok, token::end_tok_type expected);
+    OCTINTERP_API void
+    end_token_error (token *tok, token::end_tok_type expected);
 
     // Check to see that end tokens are properly matched.
-    bool end_token_ok (token *tok, token::end_tok_type expected);
+    OCTINTERP_API bool end_token_ok (token *tok, token::end_tok_type expected);
 
     // Handle pushing symbol table for new function scope.
-    bool push_fcn_symtab (void);
+    OCTINTERP_API bool push_fcn_symtab (void);
 
     // Build a constant.
-    tree_constant * make_constant (int op, token *tok_val);
+    OCTINTERP_API tree_constant * make_constant (int op, token *tok_val);
 
     // Build a function handle.
-    tree_fcn_handle * make_fcn_handle (token *tok_val);
+    OCTINTERP_API tree_fcn_handle * make_fcn_handle (token *tok_val);
 
     // Build an anonymous function handle.
-    tree_anon_fcn_handle *
+    OCTINTERP_API tree_anon_fcn_handle *
     make_anon_fcn_handle (tree_parameter_list *param_list,
                           tree_expression * expr, const filepos& at_pos);
 
     // Build a colon expression.
-    tree_expression *
+    OCTINTERP_API tree_expression *
     make_colon_expression (tree_expression *base, tree_expression *limit,
                            tree_expression *incr = nullptr);
 
     // Build a binary expression.
-    tree_expression *
+    OCTINTERP_API tree_expression *
     make_binary_op (int op, tree_expression *op1, token *tok_val,
                     tree_expression *op2);
 
     // Build a boolean expression.
-    tree_expression *
+    OCTINTERP_API tree_expression *
     make_boolean_op (int op, tree_expression *op1, token *tok_val,
                      tree_expression *op2);
 
     // Build a prefix expression.
-    tree_expression *
+    OCTINTERP_API tree_expression *
     make_prefix_op (int op, tree_expression *op1, token *tok_val);
 
     // Build a postfix expression.
-    tree_expression *
+    OCTINTERP_API tree_expression *
     make_postfix_op (int op, tree_expression *op1, token *tok_val);
 
     // Build an unwind-protect command.
-    tree_command *
+    OCTINTERP_API tree_command *
     make_unwind_command (token *unwind_tok, tree_statement_list *body,
                          tree_statement_list *cleanup, token *end_tok,
                          comment_list *lc, comment_list *mc);
 
     // Build a try-catch command.
-    tree_command *
+    OCTINTERP_API tree_command *
     make_try_command (token *try_tok, tree_statement_list *body,
                       char catch_sep, tree_statement_list *cleanup,
                       token *end_tok, comment_list *lc,
                       comment_list *mc);
 
     // Build a while command.
-    tree_command *
+    OCTINTERP_API tree_command *
     make_while_command (token *while_tok, tree_expression *expr,
                         tree_statement_list *body, token *end_tok,
                         comment_list *lc);
 
     // Build a do-until command.
-    tree_command *
+    OCTINTERP_API tree_command *
     make_do_until_command (token *until_tok, tree_statement_list *body,
                            tree_expression *expr, comment_list *lc);
 
     // Build a for command.
-    tree_command *
+    OCTINTERP_API tree_command *
     make_for_command (int tok_id, token *for_tok, tree_argument_list *lhs,
                       tree_expression *expr, tree_expression *maxproc,
                       tree_statement_list *body, token *end_tok,
                       comment_list *lc);
 
     // Build a break command.
-    tree_command * make_break_command (token *break_tok);
+    OCTINTERP_API tree_command * make_break_command (token *break_tok);
 
     // Build a continue command.
-    tree_command * make_continue_command (token *continue_tok);
+    OCTINTERP_API tree_command * make_continue_command (token *continue_tok);
 
     // Build a return command.
-    tree_command * make_return_command (token *return_tok);
+    OCTINTERP_API tree_command * make_return_command (token *return_tok);
 
     // Build an spmd command.
 
-    tree_spmd_command *
+    OCTINTERP_API tree_spmd_command *
     make_spmd_command (token *spmd_tok, tree_statement_list *body,
                        token *end_tok, comment_list *lc, comment_list *tc);
 
     // Start an if command.
-    tree_if_command_list *
+    OCTINTERP_API tree_if_command_list *
     start_if_command (tree_expression *expr, tree_statement_list *list);
 
     // Finish an if command.
-    tree_if_command *
+    OCTINTERP_API tree_if_command *
     finish_if_command (token *if_tok, tree_if_command_list *list,
                        token *end_tok, comment_list *lc);
 
     // Build an elseif clause.
-    tree_if_clause *
+    OCTINTERP_API tree_if_clause *
     make_elseif_clause (token *elseif_tok, tree_expression *expr,
                         tree_statement_list *list, comment_list *lc);
 
     // Finish a switch command.
-    tree_switch_command *
+    OCTINTERP_API tree_switch_command *
     finish_switch_command (token *switch_tok, tree_expression *expr,
                            tree_switch_case_list *list, token *end_tok,
                            comment_list *lc);
 
     // Build a switch case.
-    tree_switch_case *
+    OCTINTERP_API tree_switch_case *
     make_switch_case (token *case_tok, tree_expression *expr,
                       tree_statement_list *list, comment_list *lc);
 
     // Build an assignment to a variable.
-    tree_expression *
+    OCTINTERP_API tree_expression *
     make_assign_op (int op, tree_argument_list *lhs, token *eq_tok,
                     tree_expression *rhs);
 
     // Define a script.
-    void make_script (tree_statement_list *cmds, tree_statement *end_script);
+    OCTINTERP_API void
+    make_script (tree_statement_list *cmds, tree_statement *end_script);
 
     // Handle identifier that is recognized as a function name.
-    tree_identifier *
+    OCTINTERP_API tree_identifier *
     make_fcn_name (tree_identifier *id);
 
     // Define a function.
-    tree_function_def *
+    OCTINTERP_API tree_function_def *
     make_function (token *fcn_tok, tree_parameter_list *ret_list,
                    tree_identifier *id, tree_parameter_list *param_list,
                    tree_statement_list *body, tree_statement *end_fcn_stmt,
                    comment_list *lc);
 
     // Begin defining a function.
-    octave_user_function *
+    OCTINTERP_API octave_user_function *
     start_function (tree_identifier *id, tree_parameter_list *param_list,
                     tree_statement_list *body, tree_statement *end_function);
 
     // Create a no-op statement for end_function.
-    tree_statement * make_end (const std::string& type, bool eof,
-                               const filepos& beg_pos, const filepos& end_pos);
+    OCTINTERP_API tree_statement *
+    make_end (const std::string& type, bool eof,
+              const filepos& beg_pos, const filepos& end_pos);
 
     // Do most of the work for defining a function.
-    octave_user_function *
+    OCTINTERP_API octave_user_function *
     frob_function (tree_identifier *id, octave_user_function *fcn);
 
     // Finish defining a function.
-    tree_function_def *
+    OCTINTERP_API tree_function_def *
     finish_function (tree_parameter_list *ret_list,
                      octave_user_function *fcn, comment_list *lc,
                      int l, int c);
 
     // Reset state after parsing function.
-    void
+    OCTINTERP_API void
     recover_from_parsing_function (void);
 
-    tree_classdef *
+    OCTINTERP_API tree_classdef *
     make_classdef (token *tok_val, tree_classdef_attribute_list *a,
                    tree_identifier *id, tree_classdef_superclass_list *sc,
                    tree_classdef_body *body, token *end_tok,
                    comment_list *lc, comment_list *tc);
 
-    tree_classdef_properties_block *
+    OCTINTERP_API tree_classdef_properties_block *
     make_classdef_properties_block (token *tok_val,
                                     tree_classdef_attribute_list *a,
                                     tree_classdef_property_list *plist,
                                     token *end_tok, comment_list *lc,
                                     comment_list *tc);
 
-    tree_classdef_methods_block *
+    OCTINTERP_API tree_classdef_methods_block *
     make_classdef_methods_block (token *tok_val,
                                  tree_classdef_attribute_list *a,
                                  tree_classdef_methods_list *mlist,
                                  token *end_tok, comment_list *lc,
                                  comment_list *tc);
 
-    tree_classdef_events_block *
+    OCTINTERP_API tree_classdef_events_block *
     make_classdef_events_block (token *tok_val,
                                 tree_classdef_attribute_list *a,
                                 tree_classdef_events_list *elist,
                                 token *end_tok, comment_list *lc,
                                 comment_list *tc);
 
-    tree_classdef_enum_block *
+    OCTINTERP_API tree_classdef_enum_block *
     make_classdef_enum_block (token *tok_val,
                               tree_classdef_attribute_list *a,
                               tree_classdef_enum_list *elist,
                               token *end_tok, comment_list *lc,
                               comment_list *tc);
 
-    octave_user_function *
+    OCTINTERP_API octave_user_function *
     start_classdef_external_method (tree_identifier *id,
                                     tree_parameter_list *pl);
 
-    tree_function_def *
+    OCTINTERP_API tree_function_def *
     finish_classdef_external_method (octave_user_function *fcn,
                                      tree_parameter_list *ret_list,
                                      comment_list *cl);
 
-    void
+    OCTINTERP_API void
     finish_classdef_file (tree_classdef *cls,
                           tree_statement_list *local_fcns);
 
     // Make an index expression.
-    tree_index_expression *
+    OCTINTERP_API tree_index_expression *
     make_index_expression (tree_expression *expr,
                            tree_argument_list *args, char type);
 
     // Make an indirect reference expression.
-    tree_index_expression *
+    OCTINTERP_API tree_index_expression *
     make_indirect_ref (tree_expression *expr, const std::string&);
 
     // Make an indirect reference expression with dynamic field name.
-    tree_index_expression *
+    OCTINTERP_API tree_index_expression *
     make_indirect_ref (tree_expression *expr, tree_expression *field);
 
     // Make a declaration command.
-    tree_decl_command *
+    OCTINTERP_API tree_decl_command *
     make_decl_command (int tok, token *tok_val, tree_decl_init_list *lst);
 
     // Validate an function parameter list.
-    bool validate_param_list (tree_parameter_list *lst,
-                              tree_parameter_list::in_or_out type);
+    OCTINTERP_API bool
+    validate_param_list (tree_parameter_list *lst,
+                         tree_parameter_list::in_or_out type);
     // Validate matrix or cell
-    bool validate_array_list (tree_expression *e);
+    OCTINTERP_API bool validate_array_list (tree_expression *e);
 
     // Validate matrix object used in "[lhs] = ..." assignments.
-    tree_argument_list * validate_matrix_for_assignment (tree_expression *e);
+    OCTINTERP_API tree_argument_list *
+    validate_matrix_for_assignment (tree_expression *e);
 
     // Finish building an array_list (common action for finish_matrix
     // and finish_cell).
-    tree_expression * finish_array_list (tree_array_list *a, token *open_delim,
-                                         token *close_delim);
+    OCTINTERP_API tree_expression *
+    finish_array_list (tree_array_list *a, token *open_delim,
+                       token *close_delim);
 
     // Finish building a matrix list.
-    tree_expression * finish_matrix (tree_matrix *m, token *open_delim,
-                                     token *close_delim);
+    OCTINTERP_API tree_expression *
+    finish_matrix (tree_matrix *m, token *open_delim, token *close_delim);
 
     // Finish building a cell list.
-    tree_expression * finish_cell (tree_cell *c, token *open_delim,
-                                   token *close_delim);
+    OCTINTERP_API tree_expression *
+    finish_cell (tree_cell *c, token *open_delim, token *close_delim);
 
     // Set the print flag for a statement based on the separator type.
-    tree_statement_list *
+    OCTINTERP_API tree_statement_list *
     set_stmt_print_flag (tree_statement_list *, char, bool);
 
     // Finish building a statement.
     template <typename T>
-    tree_statement * make_statement (T *arg);
+    OCTINTERP_API tree_statement * make_statement (T *arg);
 
     // Create a statement list.
-    tree_statement_list * make_statement_list (tree_statement *stmt);
+    OCTINTERP_API tree_statement_list *
+    make_statement_list (tree_statement *stmt);
 
     // Append a statement to an existing statement list.
-    tree_statement_list *
+    OCTINTERP_API tree_statement_list *
     append_statement_list (tree_statement_list *list, char sep,
                            tree_statement *stmt, bool warn_missing_semi);
 
     // Don't allow parsing command syntax.  If the parser/lexer is
     // reset, this setting is also reset to the default (allow command
     // syntax).
-    void disallow_command_syntax (void);
+    OCTINTERP_API void disallow_command_syntax (void);
 
     // Generic error messages.
-    void bison_error (const std::string& s);
-    void bison_error (const std::string& s, const filepos& pos);
-    void bison_error (const std::string& s, int line, int column);
+    OCTINTERP_API void bison_error (const std::string& s);
+    OCTINTERP_API void bison_error (const std::string& s, const filepos& pos);
+    OCTINTERP_API void bison_error (const std::string& s, int line, int column);
 
-    friend octave_value
+    friend OCTINTERP_API octave_value
     parse_fcn_file (interpreter& interp, const std::string& full_file,
                     const std::string& file, const std::string& dir_name,
                     const std::string& dispatch_type,
@@ -580,18 +587,18 @@
 
     // Maybe print a warning if an assignment expression is used as the
     // test in a logical expression.
-    void maybe_warn_assign_as_truth_value (tree_expression *expr);
+    OCTINTERP_API void maybe_warn_assign_as_truth_value (tree_expression *expr);
 
     // Maybe print a warning about switch labels that aren't constants.
-    void maybe_warn_variable_switch_label (tree_expression *expr);
+    OCTINTERP_API void maybe_warn_variable_switch_label (tree_expression *expr);
 
     // Maybe print a warning.
-    void maybe_warn_missing_semi (tree_statement_list *);
+    OCTINTERP_API void maybe_warn_missing_semi (tree_statement_list *);
   };
 
   // Publish externally used friend functions.
 
-  extern OCTAVE_API octave_value
+  extern OCTINTERP_API octave_value
   parse_fcn_file (interpreter& interp, const std::string& full_file,
                   const std::string& file, const std::string& dir_name,
                   const std::string& dispatch_type,
@@ -634,7 +641,7 @@
 
     ~parser (void) = default;
 
-    int run (void);
+    OCTINTERP_API int run (void);
   };
 
   class push_parser : public base_parser
@@ -666,12 +673,12 @@
     // parser arranges for input through the M_READER object.  See, for
     // example, interpreter::main_loop.
 
-    int run (void);
+    OCTINTERP_API int run (void);
 
     // Parse INPUT.  M_READER is not used.  The user is responsible for
     // collecting input.
 
-    int run (const std::string& input, bool eof);
+    OCTINTERP_API int run (const std::string& input, bool eof);
 
   private: