Mercurial > octave
comparison libinterp/operators/ops.h @ 28630:35f974bab4c8
fix constness of cat op args
Declare the first argument of the cat_op concatenation operators const.
* ov-typeinfo.h (cat_op_fcn): Make first argument of concatenation
operator typedef const.
* op-b-sbm.cc, op-bm-sbm.cc, op-chm.cc, op-cm-scm.cc, op-cm-sm.cc,
op-cs-scm.cc, op-cs-sm.cc, op-m-scm.cc, op-m-sm.cc, op-s-scm.cc,
op-s-sm.cc, op-sbm-b.cc, op-sbm-bm.cc, op-scm-cm.cc, op-scm-cs.cc,
op-scm-m.cc, op-scm-s.cc, op-sm-cm.cc, op-sm-cs.cc, op-sm-m.cc,
op-sm-s.cc, op-struct.cc: Fix concatentation operator declarations and
casts as needed.
* ops.h (DEFCATOPX, DEFCATOP, DEFCATOP_FN, DEFNDCATOP_FN,
DEFNDCHARCATOP_FN, DEFNDCATOP_FN2): Likewise.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 30 Jul 2020 16:15:03 -0400 |
parents | bd51beb6205e |
children | 7854d5752dd2 |
comparison
equal
deleted
inserted
replaced
28629:af361aea02e0 | 28630:35f974bab4c8 |
---|---|
320 return octave_value (f (v1.CONCAT2 (e1, _value) (), v2.CONCAT2 (e2, _value) ())); \ | 320 return octave_value (f (v1.CONCAT2 (e1, _value) (), v2.CONCAT2 (e2, _value) ())); \ |
321 } | 321 } |
322 | 322 |
323 #define DEFCATOPX(name, t1, t2) \ | 323 #define DEFCATOPX(name, t1, t2) \ |
324 static octave_value \ | 324 static octave_value \ |
325 CONCAT2 (oct_catop_, name) (octave_base_value&, const octave_base_value&, \ | 325 CONCAT2 (oct_catop_, name) (const octave_base_value&, \ |
326 const octave_base_value&, \ | |
326 const Array<octave_idx_type>& ra_idx) | 327 const Array<octave_idx_type>& ra_idx) |
327 | 328 |
328 #define DEFCATOP(name, t1, t2) \ | 329 #define DEFCATOP(name, t1, t2) \ |
329 static octave_value \ | 330 static octave_value \ |
330 CONCAT2 (oct_catop_, name) (octave_base_value& a1, \ | 331 CONCAT2 (oct_catop_, name) (const octave_base_value& a1, \ |
331 const octave_base_value& a2, \ | 332 const octave_base_value& a2, \ |
332 const Array<octave_idx_type>& ra_idx) | 333 const Array<octave_idx_type>& ra_idx) |
333 | 334 |
334 // FIXME: in some cases, the constructor isn't necessary. | 335 // FIXME: in some cases, the constructor isn't necessary. |
335 | 336 |
336 #define DEFCATOP_FN(name, t1, t2, f) \ | 337 #define DEFCATOP_FN(name, t1, t2, f) \ |
337 static octave_value \ | 338 static octave_value \ |
338 CONCAT2 (oct_catop_, name) (octave_base_value& a1, \ | 339 CONCAT2 (oct_catop_, name) (const octave_base_value& a1, \ |
339 const octave_base_value& a2, \ | 340 const octave_base_value& a2, \ |
340 const Array<octave_idx_type>& ra_idx) \ | 341 const Array<octave_idx_type>& ra_idx) \ |
341 { \ | 342 { \ |
342 CONCAT2 (octave_, t1)& v1 = dynamic_cast<CONCAT2 (octave_, t1)&> (a1); \ | 343 const CONCAT2 (octave_, t1)& v1 = dynamic_cast<const CONCAT2 (octave_, t1)&> (a1); \ |
343 const CONCAT2 (octave_, t2)& v2 = dynamic_cast<const CONCAT2 (octave_, t2)&> (a2); \ | 344 const CONCAT2 (octave_, t2)& v2 = dynamic_cast<const CONCAT2 (octave_, t2)&> (a2); \ |
344 \ | 345 \ |
345 return octave_value (v1.CONCAT2 (t1, _value) () . f (v2.CONCAT2 (t2, _value) (), ra_idx)); \ | 346 return octave_value (v1.CONCAT2 (t1, _value) () . f (v2.CONCAT2 (t2, _value) (), ra_idx)); \ |
346 } | 347 } |
347 | 348 |
348 #define DEFNDCATOP_FN(name, t1, t2, e1, e2, f) \ | 349 #define DEFNDCATOP_FN(name, t1, t2, e1, e2, f) \ |
349 static octave_value \ | 350 static octave_value \ |
350 CONCAT2 (oct_catop_, name) (octave_base_value& a1, \ | 351 CONCAT2 (oct_catop_, name) (const octave_base_value& a1, \ |
351 const octave_base_value& a2, \ | 352 const octave_base_value& a2, \ |
352 const Array<octave_idx_type>& ra_idx) \ | 353 const Array<octave_idx_type>& ra_idx) \ |
353 { \ | 354 { \ |
354 CONCAT2 (octave_, t1)& v1 = dynamic_cast<CONCAT2 (octave_, t1)&> (a1); \ | 355 const CONCAT2 (octave_, t1)& v1 = dynamic_cast<const CONCAT2 (octave_, t1)&> (a1); \ |
355 const CONCAT2 (octave_, t2)& v2 = dynamic_cast<const CONCAT2 (octave_, t2)&> (a2); \ | 356 const CONCAT2 (octave_, t2)& v2 = dynamic_cast<const CONCAT2 (octave_, t2)&> (a2); \ |
356 \ | 357 \ |
357 return octave_value (v1.CONCAT2 (e1, _value) () . f (v2.CONCAT2 (e2, _value) (), ra_idx)); \ | 358 return octave_value (v1.CONCAT2 (e1, _value) () . f (v2.CONCAT2 (e2, _value) (), ra_idx)); \ |
358 } | 359 } |
359 | 360 |
360 #define DEFNDCHARCATOP_FN(name, t1, t2, f) \ | 361 #define DEFNDCHARCATOP_FN(name, t1, t2, f) \ |
361 static octave_value \ | 362 static octave_value \ |
362 CONCAT2 (oct_catop_, name) (octave_base_value& a1, \ | 363 CONCAT2 (oct_catop_, name) (const octave_base_value& a1, \ |
363 const octave_base_value& a2, \ | 364 const octave_base_value& a2, \ |
364 const Array<octave_idx_type>& ra_idx) \ | 365 const Array<octave_idx_type>& ra_idx) \ |
365 { \ | 366 { \ |
366 CONCAT2 (octave_, t1)& v1 = dynamic_cast<CONCAT2 (octave_, t1)&> (a1); \ | 367 const CONCAT2 (octave_, t1)& v1 = dynamic_cast<const CONCAT2 (octave_, t1)&> (a1); \ |
367 const CONCAT2 (octave_, t2)& v2 = dynamic_cast<const CONCAT2 (octave_, t2)&> (a2); \ | 368 const CONCAT2 (octave_, t2)& v2 = dynamic_cast<const CONCAT2 (octave_, t2)&> (a2); \ |
368 \ | 369 \ |
369 return octave_value (v1.char_array_value () . f (v2.char_array_value (), ra_idx), \ | 370 return octave_value (v1.char_array_value () . f (v2.char_array_value (), ra_idx), \ |
370 ((a1.is_sq_string () || a2.is_sq_string ()) \ | 371 ((a1.is_sq_string () || a2.is_sq_string ()) \ |
371 ? '\'' : '"')); \ | 372 ? '\'' : '"')); \ |
374 // For compatibility, the second arg is always converted to the type | 375 // For compatibility, the second arg is always converted to the type |
375 // of the first. Hmm. | 376 // of the first. Hmm. |
376 | 377 |
377 #define DEFNDCATOP_FN2(name, t1, t2, tc1, tc2, e1, e2, f) \ | 378 #define DEFNDCATOP_FN2(name, t1, t2, tc1, tc2, e1, e2, f) \ |
378 static octave_value \ | 379 static octave_value \ |
379 CONCAT2 (oct_catop_, name) (octave_base_value& a1, \ | 380 CONCAT2 (oct_catop_, name) (const octave_base_value& a1, \ |
380 const octave_base_value& a2, \ | 381 const octave_base_value& a2, \ |
381 const Array<octave_idx_type>& ra_idx) \ | 382 const Array<octave_idx_type>& ra_idx) \ |
382 { \ | 383 { \ |
383 CONCAT2 (octave_, t1)& v1 = dynamic_cast<CONCAT2 (octave_, t1)&> (a1); \ | 384 const CONCAT2 (octave_, t1)& v1 = dynamic_cast<const CONCAT2 (octave_, t1)&> (a1); \ |
384 const CONCAT2 (octave_, t2)& v2 = dynamic_cast<const CONCAT2 (octave_, t2)&> (a2); \ | 385 const CONCAT2 (octave_, t2)& v2 = dynamic_cast<const CONCAT2 (octave_, t2)&> (a2); \ |
385 \ | 386 \ |
386 return octave_value (tc1 (v1.CONCAT2 (e1, _value) ()) . f (tc2 (v2.CONCAT2 (e2, _value) ()), ra_idx)); \ | 387 return octave_value (tc1 (v1.CONCAT2 (e1, _value) ()) . f (tc2 (v2.CONCAT2 (e2, _value) ()), ra_idx)); \ |
387 } | 388 } |
388 | 389 |