changeset 2892:aef2d43edbc2

[project @ 1997-04-28 02:04:28 by jwe]
author jwe
date Mon, 28 Apr 1997 02:04:28 +0000
parents 1a30f46e1870
children 9fd1df4b464a
files src/variables.cc src/variables.h
diffstat 2 files changed, 55 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- a/src/variables.cc
+++ b/src/variables.cc
@@ -46,6 +46,7 @@
 #endif
 
 #include "file-ops.h"
+#include "lo-mappers.h"
 #include "oct-glob.h"
 #include "str-vec.h"
 
@@ -69,11 +70,15 @@
 #include "parse.h"
 #include "symtab.h"
 #include "sysdep.h"
+#include "oct-sym.h"
+#include "oct-builtin.h"
+#include "oct-mapper.h"
+#include "oct-usr-fcn.h"
 #include "pt-const.h"
 #include "oct-obj.h"
 #include "pt-exp.h"
-#include "pt-fcn.h"
-#include "pt-fvc.h"
+#include "pt-id.h"
+#include "pt-indir.h"
 #include "pt-mat.h"
 #include "pt-plot.h"
 #include "pr-output.h"
@@ -237,10 +242,10 @@
 
 // Is this octave_value a valid function?
 
-tree_fvc *
+octave_symbol *
 is_valid_function (const octave_value& arg, const string& warn_for, bool warn)
 {
-  tree_fvc *ans = 0;
+  octave_symbol *ans = 0;
 
   string fcn_name;
 
@@ -274,12 +279,12 @@
   return ans;
 }
 
-tree_fvc *
+octave_symbol *
 extract_function (const octave_value& arg, const string& warn_for,
 		  const string& fname, const string& header,
 		  const string& trailer)
 {
-  tree_fvc *retval = 0;
+  octave_symbol *retval = 0;
 
   retval = is_valid_function (arg, warn_for, 0);
 
@@ -449,7 +454,7 @@
 
   if (sr)
     {
-      tree_fvc *ans = sr->def ();
+      octave_symbol *ans = sr->def ();
       if (ans)
 	{
 	  string ff = ans->fcn_file_name ();
@@ -843,12 +848,10 @@
 
   if (sr)
     {
-      // Do something with the value in foo.
-
-      tree_fvc *sr_def = sr->def ();
+      octave_symbol *sr_def = sr->def ();
 
       if (sr_def)
-	retval  = sr_def->eval (true);
+	retval  = sr_def->eval ();
       else
 	error ("get_global_by_name: undefined symbol `%s'", nm.c_str ());
     }
@@ -907,7 +910,7 @@
 
   string retval;
 
-  tree_fvc *defn = sr->def ();
+  octave_symbol *defn = sr->def ();
 
   if (defn)
     {
@@ -934,7 +937,7 @@
 
   assert (sr);
 
-  tree_fvc *defn = sr->def ();
+  octave_symbol *defn = sr->def ();
 
   if (defn)
     {
@@ -963,7 +966,7 @@
 
   assert (sr);
 
-  tree_fvc *defn = sr->def ();
+  octave_symbol *defn = sr->def ();
 
   if (defn)
     retval = defn->eval ();
@@ -1405,31 +1408,34 @@
 // Install variables and functions in the symbol tables.
 
 void
-install_builtin_mapper (const builtin_mapper_function& mf)
+install_builtin_mapper (octave_mapper *mf)
 {
-  symbol_record *sym_rec = global_sym_tab->lookup (mf.name, true);
-  sym_rec->unprotect ();
+  symbol_record *sym_rec = global_sym_tab->lookup (mf->name (), true);
 
-  tree_builtin *def = new tree_builtin (mf, mf.name);
+  unsigned int t
+    = symbol_def::BUILTIN_FUNCTION | symbol_def::MAPPER_FUNCTION;
 
-  sym_rec->define (def);
-
-  sym_rec->document (mf.help_string);
+  sym_rec->unprotect ();
+  sym_rec->define (mf, t);
+  sym_rec->document (mf->doc_string ());
   sym_rec->make_eternal ();
   sym_rec->protect ();
 }
 
 void
-install_builtin_function (const builtin_function& f)
+install_builtin_function (octave_builtin *f, bool is_text_fcn)
 {
-  symbol_record *sym_rec = global_sym_tab->lookup (f.name, true);
-  sym_rec->unprotect ();
+  symbol_record *sym_rec = global_sym_tab->lookup (f->name (), true);
+
+  unsigned int t
+    = symbol_def::BUILTIN_FUNCTION | symbol_def::MAPPER_FUNCTION;
 
-  tree_builtin *def = new tree_builtin (f.fcn, f.name);
+  if (is_text_fcn)
+    t |= symbol_def::TEXT_FUNCTION;
 
-  sym_rec->define (def, f.is_text_fcn);
-
-  sym_rec->document (f.help_string);
+  sym_rec->unprotect ();
+  sym_rec->define (f, t);
+  sym_rec->document (f->doc_string ());
   sym_rec->make_eternal ();
   sym_rec->protect ();
 }
@@ -1705,10 +1711,10 @@
   symbols_of_input ();
   symbols_of_lex ();
   symbols_of_load_save ();
+  symbols_of_oct_usr_fcn ();
   symbols_of_pager ();
   symbols_of_parse ();
   symbols_of_pr_output ();
-  symbols_of_pt_fcn ();
   symbols_of_pt_mat ();
   symbols_of_pt_plot ();
   symbols_of_syscalls ();
--- a/src/variables.h
+++ b/src/variables.h
@@ -23,22 +23,22 @@
 #if !defined (octave_variables_h)
 #define octave_variables_h 1
 
+class octave_symbol;
 class symbol_record;
 class symbol_table;
 
-class tree_fvc;
 class tree_identifier;
 class tree_indirect_ref;
 class octave_value;
 class octave_value_list;
+class octave_builtin;
+class octave_mapper;
 class string_vector;
 
 #include <string>
 
 #include "ov.h"
 
-struct builtin_mapper_function;
-
 typedef int (*sv_Function)(void);
 
 struct builtin_variable
@@ -90,18 +90,6 @@
 
 typedef octave_value_list (*Octave_builtin_fcn)(const octave_value_list&, int);
 
-struct builtin_function
-{
-  builtin_function (const string& n, bool itf, Octave_builtin_fcn f,
-		    const string& h)
-    : name (n), is_text_fcn (itf), fcn (f), help_string (h) { }
-
-  string name;
-  bool is_text_fcn;
-  Octave_builtin_fcn fcn;
-  string help_string;
-};
-
 extern void initialize_symbol_tables (void);
 
 extern bool lookup (symbol_record *s, bool exec_script = true);
@@ -131,20 +119,24 @@
 extern bool is_builtin_function_name (const string&);
 extern bool is_globally_visible (const string&);
 
-extern tree_fvc *is_valid_function (const octave_value&, const string&,
-				    bool warn = false); 
+extern octave_symbol *
+is_valid_function (const octave_value&, const string&, bool warn = false); 
 
-tree_fvc *extract_function (const octave_value& arg, const string& warn_for,
-			    const string& fname, const string& header,
-			    const string& trailer);
+octave_symbol *
+extract_function (const octave_value& arg, const string& warn_for,
+		  const string& fname, const string& header,
+		  const string& trailer);
 
 extern string_vector make_name_list (void);
 
-extern void install_builtin_mapper (const builtin_mapper_function& mf);
+extern void
+install_builtin_mapper (octave_mapper *mf);
 
-extern void install_builtin_function (const builtin_function& gf);
+extern void
+install_builtin_function (octave_builtin *f, bool is_text_fcn = false);
 
-extern void install_builtin_variable (const builtin_variable& v);
+extern void
+install_builtin_variable (const builtin_variable& v);
 
 extern void
 install_builtin_variable_as_function (const string& name,
@@ -161,11 +153,11 @@
 
 extern void clear_global_error_variable (void *);
 
-extern void bind_builtin_variable (const string&, const octave_value&,
-				   bool protect = false,
-				   bool eternal = false,
-				   sv_Function f = (sv_Function) 0,
-				   const string& help = string ());
+extern void
+bind_builtin_variable (const string&, const octave_value&,
+		       bool protect = false, bool eternal = false,
+		       sv_Function f = (sv_Function) 0,
+		       const string& help = string ());
 
 extern void install_builtin_variables (void);