Mercurial > octave-nkf
comparison src/ov-base.h @ 8345:c777f3ce02d8
smarter conversion lookup
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 25 Nov 2008 14:04:55 +0100 |
parents | 283989f2da9b |
children | 8b1a2555c4e2 |
comparison
equal
deleted
inserted
replaced
8344:b5f10b123440 | 8345:c777f3ce02d8 |
---|---|
104 { | 104 { |
105 public: | 105 public: |
106 | 106 |
107 typedef octave_base_value * (*type_conv_fcn) (const octave_base_value&); | 107 typedef octave_base_value * (*type_conv_fcn) (const octave_base_value&); |
108 | 108 |
109 // type conversion, including result type information | |
110 class type_conv_info | |
111 { | |
112 public: | |
113 type_conv_info (type_conv_fcn f = 0, int t = -1) : _fcn (f), _type_id (t) { } | |
114 | |
115 operator type_conv_fcn (void) const { return _fcn; } | |
116 | |
117 octave_base_value * operator () (const octave_base_value &v) const | |
118 { return (*_fcn) (v); } | |
119 | |
120 int type_id (void) const { return _type_id; } | |
121 | |
122 private: | |
123 type_conv_fcn _fcn; | |
124 int _type_id; | |
125 }; | |
126 | |
109 friend class octave_value; | 127 friend class octave_value; |
110 | 128 |
111 octave_base_value (void) : count (1) { } | 129 octave_base_value (void) : count (1) { } |
112 | 130 |
113 octave_base_value (const octave_base_value&) { } | 131 octave_base_value (const octave_base_value&) { } |
118 clone (void) const { return new octave_base_value (*this); } | 136 clone (void) const { return new octave_base_value (*this); } |
119 | 137 |
120 virtual octave_base_value * | 138 virtual octave_base_value * |
121 empty_clone (void) const { return new octave_base_value (); } | 139 empty_clone (void) const { return new octave_base_value (); } |
122 | 140 |
123 virtual type_conv_fcn | 141 virtual type_conv_info |
124 numeric_conversion_function (void) const | 142 numeric_conversion_function (void) const |
125 { return static_cast<type_conv_fcn> (0); } | 143 { return type_conv_info (); } |
126 | 144 |
127 virtual type_conv_fcn | 145 virtual type_conv_info |
128 numeric_demotion_function (void) const | 146 numeric_demotion_function (void) const |
129 { return static_cast<type_conv_fcn> (0); } | 147 { return type_conv_info (); } |
130 | 148 |
131 virtual octave_value squeeze (void) const; | 149 virtual octave_value squeeze (void) const; |
132 | 150 |
133 virtual octave_base_value *try_narrowing_conversion (void) { return 0; } | 151 virtual octave_base_value *try_narrowing_conversion (void) { return 0; } |
134 | 152 |