Mercurial > hg > octave-nkf
diff src/pt-const.h @ 1827:effa9400766f
[project @ 1996-02-02 14:07:51 by jwe]
author | jwe |
---|---|
date | Fri, 02 Feb 1996 14:10:10 +0000 |
parents | 74ab3c7079cf |
children | 003570e69c7b |
line wrap: on
line diff
--- a/src/pt-const.h +++ b/src/pt-const.h @@ -1,7 +1,7 @@ // pt-const.h -*- C++ -*- /* -Copyright (C) 1992, 1993, 1994, 1995 John W. Eaton +Copyright (C) 1996 John W. Eaton This file is part of Octave. @@ -54,269 +54,269 @@ class tree_constant_rep - { - private: - - friend class tree_constant; + { + public: - enum constant_type - { - unknown_constant, - scalar_constant, - matrix_constant, - complex_scalar_constant, - complex_matrix_constant, - char_matrix_constant, - char_matrix_constant_str, - range_constant, - map_constant, - magic_colon, - all_va_args, - }; + enum constant_type + { + unknown_constant, + scalar_constant, + matrix_constant, + complex_scalar_constant, + complex_matrix_constant, + char_matrix_constant, + char_matrix_constant_str, + range_constant, + map_constant, + magic_colon, + all_va_args, + }; - enum force_orient - { - no_orient, - row_orient, - column_orient, - }; + enum force_orient + { + no_orient, + row_orient, + column_orient, + }; - tree_constant_rep (void); + tree_constant_rep (void); - tree_constant_rep (double d); - tree_constant_rep (const Matrix& m); - tree_constant_rep (const DiagMatrix& d); - tree_constant_rep (const RowVector& v, int pcv); - tree_constant_rep (const ColumnVector& v, int pcv); + tree_constant_rep (double d); + tree_constant_rep (const Matrix& m); + tree_constant_rep (const DiagMatrix& d); + tree_constant_rep (const RowVector& v, int pcv); + tree_constant_rep (const ColumnVector& v, int pcv); - tree_constant_rep (const Complex& c); - tree_constant_rep (const ComplexMatrix& m); - tree_constant_rep (const ComplexDiagMatrix& d); - tree_constant_rep (const ComplexRowVector& v, int pcv); - tree_constant_rep (const ComplexColumnVector& v, int pcv); + tree_constant_rep (const Complex& c); + tree_constant_rep (const ComplexMatrix& m); + tree_constant_rep (const ComplexDiagMatrix& d); + tree_constant_rep (const ComplexRowVector& v, int pcv); + tree_constant_rep (const ComplexColumnVector& v, int pcv); - tree_constant_rep (const char *s); - tree_constant_rep (const string& s); - tree_constant_rep (const string_vector& s); - tree_constant_rep (const charMatrix& chm, int is_string); + tree_constant_rep (const char *s); + tree_constant_rep (const string& s); + tree_constant_rep (const string_vector& s); + tree_constant_rep (const charMatrix& chm, bool is_string); - tree_constant_rep (double base, double limit, double inc); - tree_constant_rep (const Range& r); + tree_constant_rep (double base, double limit, double inc); + tree_constant_rep (const Range& r); - tree_constant_rep (const Octave_map& m); + tree_constant_rep (const Octave_map& m); - tree_constant_rep (tree_constant_rep::constant_type t); + tree_constant_rep (tree_constant_rep::constant_type t); + + tree_constant_rep (const tree_constant_rep& t); - tree_constant_rep (const tree_constant_rep& t); + ~tree_constant_rep (void); - ~tree_constant_rep (void); + void *operator new (size_t size); + void operator delete (void *p, size_t size); - void *operator new (size_t size); - void operator delete (void *p, size_t size); + int rows (void) const; + int columns (void) const; - int rows (void) const; - int columns (void) const; + bool is_defined (void) const + { return type_tag != unknown_constant; } - int is_defined (void) const - { return type_tag != unknown_constant; } + bool is_undefined (void) const + { return type_tag == unknown_constant; } - int is_undefined (void) const - { return type_tag == unknown_constant; } + bool is_unknown (void) const + { return type_tag == unknown_constant; } - int is_unknown (void) const - { return type_tag == unknown_constant; } + bool is_real_scalar (void) const + { return type_tag == scalar_constant; } - int is_real_scalar (void) const - { return type_tag == scalar_constant; } + bool is_real_matrix (void) const + { return type_tag == matrix_constant; } - int is_real_matrix (void) const - { return type_tag == matrix_constant; } + bool is_complex_scalar (void) const + { return type_tag == complex_scalar_constant; } - int is_complex_scalar (void) const - { return type_tag == complex_scalar_constant; } + bool is_complex_matrix (void) const + { return type_tag == complex_matrix_constant; } - int is_complex_matrix (void) const - { return type_tag == complex_matrix_constant; } + bool is_char_matrix (void) const + { return type_tag == char_matrix_constant; } + + bool is_string (void) const + { return type_tag == char_matrix_constant_str; } - int is_char_matrix (void) const - { return type_tag == char_matrix_constant; } + bool is_range (void) const + { return type_tag == range_constant; } - int is_string (void) const - { return type_tag == char_matrix_constant_str; } + bool is_map (void) const + { return type_tag == map_constant; } - int is_range (void) const - { return type_tag == range_constant; } + bool is_magic_colon (void) const + { return type_tag == magic_colon; } - int is_map (void) const - { return type_tag == map_constant; } + bool is_all_va_args (void) const + { return type_tag == all_va_args; } - int is_magic_colon (void) const - { return type_tag == magic_colon; } + tree_constant all (void) const; + tree_constant any (void) const; - int is_all_va_args (void) const - { return type_tag == all_va_args; } - - tree_constant all (void) const; - tree_constant any (void) const; + bool is_real_type (void) const + { + return (type_tag == scalar_constant + || type_tag == matrix_constant + || type_tag == range_constant + || type_tag == char_matrix_constant + || type_tag == char_matrix_constant_str); + } - int is_real_type (void) const - { - return (type_tag == scalar_constant - || type_tag == matrix_constant - || type_tag == range_constant - || type_tag == char_matrix_constant - || type_tag == char_matrix_constant_str); - } + bool is_complex_type (void) const + { + return (type_tag == complex_matrix_constant + || type_tag == complex_scalar_constant); + } + + // Would be nice to get rid of the next four functions: - int is_complex_type (void) const - { - return (type_tag == complex_matrix_constant - || type_tag == complex_scalar_constant); - } + bool is_scalar_type (void) const + { + return (type_tag == scalar_constant + || type_tag == complex_scalar_constant); + } - // Would be nice to get rid of the next four functions: - - int is_scalar_type (void) const - { - return (type_tag == scalar_constant - || type_tag == complex_scalar_constant); - } + bool is_matrix_type (void) const + { + return (type_tag == matrix_constant + || type_tag == complex_matrix_constant); + } - int is_matrix_type (void) const - { - return (type_tag == matrix_constant - || type_tag == complex_matrix_constant); - } + bool is_numeric_type (void) const + { + return (type_tag == scalar_constant + || type_tag == matrix_constant + || type_tag == complex_matrix_constant + || type_tag == complex_scalar_constant); + } - int is_numeric_type (void) const - { - return (type_tag == scalar_constant - || type_tag == matrix_constant - || type_tag == complex_matrix_constant - || type_tag == complex_scalar_constant); - } + bool valid_as_scalar_index (void) const; + bool valid_as_zero_index (void) const; + + bool is_true (void) const; - int valid_as_scalar_index (void) const; - int valid_as_zero_index (void) const; - - int is_true (void) const; + bool is_empty (void) const + { + return ((! (is_magic_colon () + || is_all_va_args () + || is_unknown ())) + && (rows () == 0 + || columns () == 0)); + } - int is_empty (void) const - { - return ((! (is_magic_colon () - || is_all_va_args () - || is_unknown ())) - && (rows () == 0 - || columns () == 0)); - } + double double_value (bool frc_str_conv = false) const; + Matrix matrix_value (bool frc_str_conv = false) const; + Complex complex_value (bool frc_str_conv = false) const; + ComplexMatrix complex_matrix_value (bool frc_str_conv = false) const; + charMatrix char_matrix_value (bool frc_str_conv = false) const; + charMatrix all_strings (void) const; + string string_value (void) const; + Range range_value (void) const; + Octave_map map_value (void) const; - double double_value (int frc_str_conv = 0) const; - Matrix matrix_value (int frc_str_conv = 0) const; - Complex complex_value (int frc_str_conv = 0) const; - ComplexMatrix complex_matrix_value (int frc_str_conv = 0) const; - charMatrix char_matrix_value (int frc_str_conv = 0) const; - charMatrix all_strings (void) const; - string string_value (void) const; - Range range_value (void) const; - Octave_map map_value (void) const; + tree_constant& lookup_map_element (const string& name, + bool insert = false, + bool silent = false); + + ColumnVector vector_value (bool frc_str_conv = false, + bool frc_vec_conv = false) const; - tree_constant& lookup_map_element (const string& name, - int insert = 0, - int silent = 0); + ComplexColumnVector + complex_vector_value (bool frc_str_conv = false, + bool frc_vec_conv = false) const; - ColumnVector vector_value (int frc_str_conv = 0, - int frc_vec_conv = 0) const; + tree_constant convert_to_str (void) const; + + void convert_to_row_or_column_vector (void); + + void bump_value (tree_expression::type); - ComplexColumnVector complex_vector_value (int frc_str_conv = 0, - int frc_vec_conv = 0) const; + void resize (int i, int j); + void resize (int i, int j, double val); - tree_constant convert_to_str (void) const; + void stash_original_text (const string& s); - void convert_to_row_or_column_vector (void); - - void bump_value (tree_expression::type); + void maybe_mutate (void); - void resize (int i, int j); - void resize (int i, int j, double val); + void print (void); + void print (ostream& os); - void stash_original_text (const string& s); + void print_code (ostream& os); - void maybe_mutate (void); + void gripe_wrong_type_arg (const char *name, + const tree_constant_rep& tcr) const; - void print (void); - void print (ostream& os); - - void print_code (ostream& os); + char *type_as_string (void) const; - void gripe_wrong_type_arg (const char *name, - const tree_constant_rep& tcr) const; + // Binary and unary operations. - char *type_as_string (void) const; - - // Binary and unary operations. + friend tree_constant do_binary_op (tree_constant& a, tree_constant& b, + tree_expression::type t); - friend tree_constant do_binary_op (tree_constant& a, tree_constant& b, - tree_expression::type t); + friend tree_constant do_unary_op (tree_constant& a, + tree_expression::type t); - friend tree_constant do_unary_op (tree_constant& a, - tree_expression::type t); + // We want to eliminate this. - // We want to eliminate this. + constant_type const_type (void) const { return type_tag; } + + // We want to get rid of these too: - constant_type const_type (void) const { return type_tag; } + void force_numeric (bool frc_str_conv = false); + tree_constant make_numeric (bool frc_str_conv = false) const; - // We want to get rid of these too: + // But not this. - void force_numeric (int frc_str_conv = 0); - tree_constant make_numeric (int frc_str_conv = 0) const; + void convert_to_matrix_type (bool make_complex); - // But not this. + // Indexing and assignment. - void convert_to_matrix_type (int make_complex); + void clear_index (void); - // Indexing and assignment. - - void clear_index (void); + // void set_index (double d); + void set_index (const Range& r); + void set_index (const ColumnVector& v); + void set_index (const Matrix& m); + void set_index (char c); - // void set_index (double d); - void set_index (const Range& r); - void set_index (const ColumnVector& v); - void set_index (const Matrix& m); - void set_index (char c); + void set_index (const Octave_object& args, + bool rhs_is_complex = false); - void set_index (const Octave_object& args, int rhs_is_complex = 0); + tree_constant do_index (const Octave_object& args); - tree_constant do_index (const Octave_object& args); + void maybe_widen (constant_type t); - void maybe_widen (constant_type t); + void assign (tree_constant& rhs, const Octave_object& args); - void assign (tree_constant& rhs, const Octave_object& args); + bool print_as_scalar (void); - int print_as_scalar (void); + bool print_as_structure (void); - int print_as_structure (void); - - // Data. + // Data. - union - { - double scalar; // A real scalar constant. - Matrix *matrix; // A real matrix constant. - Complex *complex_scalar; // A real scalar constant. - ComplexMatrix *complex_matrix; // A real matrix constant. - charMatrix *char_matrix; // A character string constant. - Range *range; // A set of evenly spaced values. - Octave_map *a_map; // An associative array. + union + { + double scalar; // A real scalar constant. + Matrix *matrix; // A real matrix constant. + Complex *complex_scalar; // A real scalar constant. + ComplexMatrix *complex_matrix; // A real matrix constant. + charMatrix *char_matrix; // A character string constant. + Range *range; // A set of evenly spaced values. + Octave_map *a_map; // An associative array. - tree_constant_rep *freeptr; // For custom memory management. - }; + tree_constant_rep *freeptr; // For custom memory management. + }; - constant_type type_tag; + constant_type type_tag; - int count; + int count; - string orig_text; - }; + string orig_text; + }; union { @@ -398,7 +398,7 @@ : tree_fvc (l, c) { rep = new tree_constant_rep (s); rep->count = 1; } - tree_constant (const charMatrix& chm, int is_string = 0) : tree_fvc () + tree_constant (const charMatrix& chm, bool is_string = false) : tree_fvc () { rep = new tree_constant_rep (chm, is_string); rep->count = 1; } tree_constant (double base, double limit, double inc) : tree_fvc () @@ -472,7 +472,7 @@ // Type. It would be nice to eliminate the need for this. - int is_constant (void) const { return 1; } + bool is_constant (void) const { return true; } // Size. @@ -483,22 +483,22 @@ // it is sometimes more natural to write is_undefined() instead of // ! is_defined(). - int is_defined (void) const { return rep->is_defined (); } - int is_undefined (void) const { return rep->is_undefined (); } + bool is_defined (void) const { return rep->is_defined (); } + bool is_undefined (void) const { return rep->is_undefined (); } // Is this constant a particular type, or does it belong to a // particular class of types? - int is_unknown (void) const { return rep->is_unknown (); } - int is_real_scalar (void) const { return rep->is_real_scalar (); } - int is_real_matrix (void) const { return rep->is_real_matrix (); } - int is_complex_scalar (void) const { return rep->is_complex_scalar (); } - int is_complex_matrix (void) const { return rep->is_complex_matrix (); } - int is_string (void) const { return rep->is_string (); } - int is_range (void) const { return rep->is_range (); } - int is_map (void) const { return rep->is_map (); } - int is_magic_colon (void) const { return rep->is_magic_colon (); } - int is_all_va_args (void) const { return rep->is_all_va_args (); } + bool is_unknown (void) const { return rep->is_unknown (); } + bool is_real_scalar (void) const { return rep->is_real_scalar (); } + bool is_real_matrix (void) const { return rep->is_real_matrix (); } + bool is_complex_scalar (void) const { return rep->is_complex_scalar (); } + bool is_complex_matrix (void) const { return rep->is_complex_matrix (); } + bool is_string (void) const { return rep->is_string (); } + bool is_range (void) const { return rep->is_range (); } + bool is_map (void) const { return rep->is_map (); } + bool is_magic_colon (void) const { return rep->is_magic_colon (); } + bool is_all_va_args (void) const { return rep->is_all_va_args (); } // Are any or all of the elements in this constant nonzero? @@ -507,34 +507,34 @@ // Other type stuff. - int is_real_type (void) const { return rep->is_real_type (); } + bool is_real_type (void) const { return rep->is_real_type (); } - int is_complex_type (void) const { return rep->is_complex_type (); } + bool is_complex_type (void) const { return rep->is_complex_type (); } - int is_scalar_type (void) const { return rep->is_scalar_type (); } - int is_matrix_type (void) const { return rep->is_matrix_type (); } + bool is_scalar_type (void) const { return rep->is_scalar_type (); } + bool is_matrix_type (void) const { return rep->is_matrix_type (); } - int is_numeric_type (void) const + bool is_numeric_type (void) const { return rep->is_numeric_type (); } - int valid_as_scalar_index (void) const + bool valid_as_scalar_index (void) const { return rep->valid_as_scalar_index (); } - int valid_as_zero_index (void) const + bool valid_as_zero_index (void) const { return rep->valid_as_zero_index (); } // Does this constant correspond to a truth value? - int is_true (void) const { return rep->is_true (); } + bool is_true (void) const { return rep->is_true (); } // Is at least one of the dimensions of this constant zero? - int is_empty (void) const + bool is_empty (void) const { return rep->is_empty (); } // Are the dimensions of this constant zero by zero? - int is_zero_by_zero (void) const + bool is_zero_by_zero (void) const { return ((! (is_magic_colon () || is_all_va_args () || is_unknown ())) && rows () == 0 && columns () == 0); @@ -542,19 +542,19 @@ // Values. - double double_value (int frc_str_conv = 0) const + double double_value (bool frc_str_conv = false) const { return rep->double_value (frc_str_conv); } - Matrix matrix_value (int frc_str_conv = 0) const + Matrix matrix_value (bool frc_str_conv = false) const { return rep->matrix_value (frc_str_conv); } - Complex complex_value (int frc_str_conv = 0) const + Complex complex_value (bool frc_str_conv = false) const { return rep->complex_value (frc_str_conv); } - ComplexMatrix complex_matrix_value (int frc_str_conv = 0) const + ComplexMatrix complex_matrix_value (bool frc_str_conv = false) const { return rep->complex_matrix_value (frc_str_conv); } - charMatrix char_matrix_value (int frc_str_conv = 0) const + charMatrix char_matrix_value (bool frc_str_conv = false) const { return rep->char_matrix_value (frc_str_conv); } charMatrix all_strings (void) const @@ -568,18 +568,21 @@ Octave_map map_value (void) const; - tree_constant lookup_map_element (const string& ref, int insert = 0, - int silent = 0); + tree_constant lookup_map_element (const string& ref, + bool insert = false, + bool silent = false); tree_constant lookup_map_element (SLList<string>& list, - int insert = 0, int silent = 0); + bool insert = false, + bool silent = false); - ColumnVector vector_value (int /* frc_str_conv */ = 0, - int /* frc_vec_conv */ = 0) const + ColumnVector vector_value (bool /* frc_str_conv */ = false, + bool /* frc_vec_conv */ = false) const { return rep->vector_value (); } - ComplexColumnVector complex_vector_value (int /* frc_str_conv */ = 0, - int /* frc_vec_conv */ = 0) const + ComplexColumnVector + complex_vector_value (bool /* frc_str_conv */ = false, + bool /* frc_vec_conv */ = false) const { return rep->complex_vector_value (); } // Binary and unary operations. @@ -617,14 +620,14 @@ void print (void); void print (ostream& os) { rep->print (os); } - void print_with_name (const string& name, int print_padding = 1); + void print_with_name (const string& name, bool print_padding = true); void print_with_name (ostream& os, const string& name, - int print_padding = 1); + bool print_padding = true); // Evaluate this constant, possibly converting complex to real, or // matrix to scalar, etc. - tree_constant eval (int print_result) + tree_constant eval (bool print_result) { if (print_result) { @@ -635,7 +638,7 @@ return *this; } - Octave_object eval (int, int, const Octave_object&); + Octave_object eval (bool, int, const Octave_object&); // Store the original text corresponding to this constant for later // pretty printing. @@ -663,17 +666,17 @@ tree_constant_rep::constant_type const_type (void) const { return rep->const_type (); } - void convert_to_matrix_type (int make_complex) + void convert_to_matrix_type (bool make_complex) { rep->convert_to_matrix_type (make_complex); } // Can we make these go away? // These need better names, since a range really is a numeric type. - void force_numeric (int frc_str_conv = 0) + void force_numeric (bool frc_str_conv = false) { rep->force_numeric (frc_str_conv); } - tree_constant make_numeric (int frc_str_conv = 0) const + tree_constant make_numeric (bool frc_str_conv = false) const { if (is_numeric_type ()) return *this; @@ -681,9 +684,9 @@ return rep->make_numeric (frc_str_conv); } - int print_as_scalar (void) { return rep->print_as_scalar (); } + bool print_as_scalar (void) { return rep->print_as_scalar (); } - int print_as_structure (void) { return rep->print_as_structure (); } + bool print_as_structure (void) { return rep->print_as_structure (); } }; #endif