# HG changeset patch # User jwe # Date 863407316 0 # Node ID 5e0fe4c5d52faa5ee5c3668d0a71d515362f57f9 # Parent 8a77d52c9d02dde4f3d5c30eb5f980864307f7f0 [project @ 1997-05-12 03:13:57 by jwe] diff --git a/src/help.cc b/src/help.cc --- a/src/help.cc +++ b/src/help.cc @@ -53,6 +53,7 @@ #include "help.h" #include "input.h" #include "oct-obj.h" +#include "oct-usr-fcn.h" #include "pager.h" #include "pathsearch.h" #include "pt-pr-code.h" @@ -718,7 +719,7 @@ } DEFUN_TEXT (type, args, nargout, - "type NAME ...]\n\ + "type NAME\n\ \n\ display the definition of each NAME that refers to a function") { @@ -782,7 +783,10 @@ { if (sym_rec->is_user_function ()) { - octave_symbol *defn = sym_rec->def (); + octave_symbol *tmp = sym_rec->def (); + + octave_user_function *defn + = static_cast (tmp); string fn = defn->fcn_file_name (); string ff = fcn_file_in_path (fn); @@ -815,8 +819,7 @@ tree_print_code tpc (output_buf, "", pr_orig_txt); - // XXX FIXME XXX - // defn->accept (tpc); + defn->accept (tpc); } } diff --git a/src/ov-base.cc b/src/ov-base.cc --- a/src/ov-base.cc +++ b/src/ov-base.cc @@ -52,7 +52,7 @@ const string octave_base_value::t_name (""); octave_value -octave_base_value::index (const octave_value_list&) const +octave_base_value::do_index_op (const octave_value_list&) const { string nm = type_name (); error ("can't perform indexing operations for %s type", nm.c_str ()); @@ -68,7 +68,18 @@ } octave_value -octave_base_value::struct_elt_val (const string&, bool) const +octave_base_value::do_struct_elt_index_op (const string&, + const octave_value_list&, + bool) +{ + string nm = type_name (); + error ("can't perform indexed structure reference operations for %s type", + nm.c_str ()); + return octave_value (); +} + +octave_value +octave_base_value::do_struct_elt_index_op (const string&, bool) { string nm = type_name (); error ("can't perform structure reference operations for %s type", diff --git a/src/ov-base.h b/src/ov-base.h --- a/src/ov-base.h +++ b/src/ov-base.h @@ -70,11 +70,15 @@ octave_value *try_narrowing_conversion (void) { return static_cast (0); } - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; idx_vector index_vector (void) const; - octave_value struct_elt_val (const string& nm, bool silent) const; + octave_value + do_struct_elt_index_op (const string& nm, const octave_value_list& idx, + bool silent); + + octave_value do_struct_elt_index_op (const string& nm, bool silent); octave_variable_reference struct_elt_ref (octave_value *parent, const string& nm); diff --git a/src/ov-bool-mat.cc b/src/ov-bool-mat.cc --- a/src/ov-bool-mat.cc +++ b/src/ov-bool-mat.cc @@ -79,7 +79,7 @@ } octave_value -octave_bool_matrix::index (const octave_value_list& idx) const +octave_bool_matrix::do_index_op (const octave_value_list& idx) const { octave_value retval; diff --git a/src/ov-bool-mat.h b/src/ov-bool-mat.h --- a/src/ov-bool-mat.h +++ b/src/ov-bool-mat.h @@ -75,7 +75,7 @@ octave_value *try_narrowing_conversion (void); - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; void assign (const octave_value_list& idx, const boolMatrix& rhs); diff --git a/src/ov-bool.cc b/src/ov-bool.cc --- a/src/ov-bool.cc +++ b/src/ov-bool.cc @@ -76,7 +76,7 @@ } octave_value -octave_bool::index (const octave_value_list& idx) const +octave_bool::do_index_op (const octave_value_list& idx) const { octave_value retval; @@ -96,7 +96,7 @@ octave_value tmp (new octave_matrix (matrix_value ())); - retval = tmp.index (idx); + retval = tmp.do_index_op (idx); } return retval; diff --git a/src/ov-bool.h b/src/ov-bool.h --- a/src/ov-bool.h +++ b/src/ov-bool.h @@ -74,7 +74,7 @@ type_conv_fcn numeric_conversion_function (void) const; - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; idx_vector index_vector (void) const { return idx_vector (scalar); } diff --git a/src/ov-complex.cc b/src/ov-complex.cc --- a/src/ov-complex.cc +++ b/src/ov-complex.cc @@ -73,7 +73,7 @@ } octave_value -octave_complex::index (const octave_value_list& idx) const +octave_complex::do_index_op (const octave_value_list& idx) const { octave_value retval; @@ -93,7 +93,7 @@ octave_value tmp (new octave_complex_matrix (complex_matrix_value ())); - retval = tmp.index (idx); + retval = tmp.do_index_op (idx); } return retval; diff --git a/src/ov-complex.h b/src/ov-complex.h --- a/src/ov-complex.h +++ b/src/ov-complex.h @@ -74,7 +74,7 @@ octave_value *try_narrowing_conversion (void); - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; int rows (void) const { return 1; } int columns (void) const { return 1; } diff --git a/src/ov-cx-mat.cc b/src/ov-cx-mat.cc --- a/src/ov-cx-mat.cc +++ b/src/ov-cx-mat.cc @@ -89,7 +89,7 @@ } octave_value -octave_complex_matrix::index (const octave_value_list& idx) const +octave_complex_matrix::do_index_op (const octave_value_list& idx) const { octave_value retval; diff --git a/src/ov-cx-mat.h b/src/ov-cx-mat.h --- a/src/ov-cx-mat.h +++ b/src/ov-cx-mat.h @@ -81,7 +81,7 @@ octave_value *try_narrowing_conversion (void); - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; void assign (const octave_value_list& idx, const ComplexMatrix& rhs); diff --git a/src/ov-list.cc b/src/ov-list.cc --- a/src/ov-list.cc +++ b/src/ov-list.cc @@ -49,7 +49,7 @@ octave_list::t_name ("list"); octave_value -octave_list::index (const octave_value_list& idx) const +octave_list::do_index_op (const octave_value_list& idx) const { octave_value retval; diff --git a/src/ov-list.h b/src/ov-list.h --- a/src/ov-list.h +++ b/src/ov-list.h @@ -70,7 +70,7 @@ void operator delete (void *p, size_t size) { allocator.free (p, size); } - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; bool is_defined (void) const { return true; } diff --git a/src/ov-range.cc b/src/ov-range.cc --- a/src/ov-range.cc +++ b/src/ov-range.cc @@ -86,7 +86,7 @@ } octave_value -octave_range::index (const octave_value_list& idx) const +octave_range::do_index_op (const octave_value_list& idx) const { // XXX FIXME XXX -- this doesn't solve the problem of // @@ -100,7 +100,7 @@ octave_value tmp (new octave_matrix (range.matrix_value ())); - return tmp.index (idx); + return tmp.do_index_op (idx); } double diff --git a/src/ov-range.h b/src/ov-range.h --- a/src/ov-range.h +++ b/src/ov-range.h @@ -91,7 +91,7 @@ octave_value *try_narrowing_conversion (void); - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; idx_vector index_vector (void) const { return idx_vector (range); } diff --git a/src/ov-re-mat.cc b/src/ov-re-mat.cc --- a/src/ov-re-mat.cc +++ b/src/ov-re-mat.cc @@ -77,7 +77,7 @@ } octave_value -octave_matrix::index (const octave_value_list& idx) const +octave_matrix::do_index_op (const octave_value_list& idx) const { octave_value retval; @@ -215,7 +215,15 @@ } octave_value -octave_matrix::struct_elt_val (const string& nm, bool silent) const +octave_matrix::do_struct_elt_index_op (const string& nm, + const octave_value_list& idx, + bool silent) +{ + // XXX DO_ME XXX +} + +octave_value +octave_matrix::do_struct_elt_index_op (const string& nm, bool silent) { octave_value retval; diff --git a/src/ov-re-mat.h b/src/ov-re-mat.h --- a/src/ov-re-mat.h +++ b/src/ov-re-mat.h @@ -81,7 +81,7 @@ octave_value *try_narrowing_conversion (void); - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; void assign (const octave_value_list& idx, const Matrix& rhs); @@ -94,7 +94,11 @@ idx_vector index_vector (void) const { return idx_vector (matrix); } - octave_value struct_elt_val (const string& nm, bool silent) const; + octave_value + do_struct_elt_index_op (const string& nm, const octave_value_list& idx, + bool silent); + + octave_value do_struct_elt_index_op (const string& nm, bool silent); octave_variable_reference struct_elt_ref (octave_value *parent, const string& nm); diff --git a/src/ov-scalar.cc b/src/ov-scalar.cc --- a/src/ov-scalar.cc +++ b/src/ov-scalar.cc @@ -62,7 +62,7 @@ } octave_value -octave_scalar::index (const octave_value_list& idx) const +octave_scalar::do_index_op (const octave_value_list& idx) const { octave_value retval; @@ -82,7 +82,7 @@ octave_value tmp (new octave_matrix (matrix_value ())); - retval = tmp.index (idx); + retval = tmp.do_index_op (idx); } return retval; diff --git a/src/ov-scalar.h b/src/ov-scalar.h --- a/src/ov-scalar.h +++ b/src/ov-scalar.h @@ -73,7 +73,7 @@ void operator delete (void *p, size_t size) { allocator.free (p, size); } - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; idx_vector index_vector (void) const { return idx_vector (scalar); } diff --git a/src/ov-str-mat.cc b/src/ov-str-mat.cc --- a/src/ov-str-mat.cc +++ b/src/ov-str-mat.cc @@ -61,7 +61,7 @@ } octave_value -octave_char_matrix_str::index (const octave_value_list& idx) const +octave_char_matrix_str::do_index_op (const octave_value_list& idx) const { octave_value retval; diff --git a/src/ov-str-mat.h b/src/ov-str-mat.h --- a/src/ov-str-mat.h +++ b/src/ov-str-mat.h @@ -80,7 +80,7 @@ type_conv_fcn numeric_conversion_function (void) const; - octave_value index (const octave_value_list& idx) const; + octave_value do_index_op (const octave_value_list& idx) const; void assign (const octave_value_list& idx, const charMatrix& rhs); diff --git a/src/ov-struct.cc b/src/ov-struct.cc --- a/src/ov-struct.cc +++ b/src/ov-struct.cc @@ -46,7 +46,15 @@ octave_struct::t_name ("struct"); octave_value -octave_struct::struct_elt_val (const string& nm, bool silent) const +octave_struct::do_struct_elt_index_op (const string& nm, + const octave_value_list& idx, + bool silent) +{ + // XXX DO_ME XXX +} + +octave_value +octave_struct::do_struct_elt_index_op (const string& nm, bool silent) { octave_value retval; diff --git a/src/ov-struct.h b/src/ov-struct.h --- a/src/ov-struct.h +++ b/src/ov-struct.h @@ -73,7 +73,11 @@ void operator delete (void *p, size_t size) { allocator.free (p, size); } - octave_value struct_elt_val (const string& nm, bool silent) const; + octave_value + do_struct_elt_index_op (const string& nm, const octave_value_list& idx, + bool silent); + + octave_value do_struct_elt_index_op (const string& nm, bool silent); octave_variable_reference struct_elt_ref (octave_value *parent, const string& nm);