comparison liboctave/Array.cc @ 254:c9894e8d5f04

[project @ 1993-12-08 07:30:53 by jwe]
author jwe
date Wed, 08 Dec 1993 07:30:53 +0000
parents 5ba769d183b9
children 5638a94baa25
comparison
equal deleted inserted replaced
253:e208bd9ade36 254:c9894e8d5f04
190 Array<T>::checkelem (int n) 190 Array<T>::checkelem (int n)
191 { 191 {
192 if (n < 0 || n >= rep->length ()) 192 if (n < 0 || n >= rep->length ())
193 { 193 {
194 (*current_liboctave_error_handler) ("range error"); 194 (*current_liboctave_error_handler) ("range error");
195 static T foo (0); 195 static T foo;
196 return foo; 196 return foo;
197 } 197 }
198 return elem (n); 198 return elem (n);
199 } 199 }
200 200
224 Array<T>::checkelem (int n) const 224 Array<T>::checkelem (int n) const
225 { 225 {
226 if (n < 0 || n >= rep->length ()) 226 if (n < 0 || n >= rep->length ())
227 { 227 {
228 (*current_liboctave_error_handler) ("range error"); 228 (*current_liboctave_error_handler) ("range error");
229 return T (0); 229 T foo;
230 return foo;
230 } 231 }
231 return elem (n); 232 return elem (n);
232 } 233 }
233 234
234 template <class T> 235 template <class T>
428 429
429 template <class T> 430 template <class T>
430 T& 431 T&
431 Array2<T>::checkelem (int i, int j) 432 Array2<T>::checkelem (int i, int j)
432 { 433 {
433 return Array<T>::checkelem (d1*j+i); 434 if (i < 0 || j < 0 || i >= d1 || j >= d2)
435 {
436 (*current_liboctave_error_handler) ("range error");
437 static T foo;
438 return foo;
439 }
440 return Array<T>::elem (d1*j+i);
434 } 441 }
435 442
436 template <class T> 443 template <class T>
437 T& 444 T&
438 Array2<T>::operator () (int i, int j) 445 Array2<T>::operator () (int i, int j)
439 { 446 {
440 return Array<T>::checkelem (d1*j+i); 447 if (i < 0 || j < 0 || i >= d1 || j >= d2)
448 {
449 (*current_liboctave_error_handler) ("range error");
450 static T foo;
451 return foo;
452 }
453 return Array<T>::elem (d1*j+i);
441 } 454 }
442 455
443 template <class T> 456 template <class T>
444 T& 457 T&
445 Array2<T>::xelem (int i, int j) 458 Array2<T>::xelem (int i, int j)
456 469
457 template <class T> 470 template <class T>
458 T 471 T
459 Array2<T>::checkelem (int i, int j) const 472 Array2<T>::checkelem (int i, int j) const
460 { 473 {
461 return Array<T>::checkelem (d1*j+i); 474 if (i < 0 || j < 0 || i >= d1 || j >= d2)
475 {
476 (*current_liboctave_error_handler) ("range error");
477 T foo;
478 return foo;
479 }
480 return Array<T>::elem (d1*j+i);
462 } 481 }
463 482
464 template <class T> 483 template <class T>
465 T 484 T
466 Array2<T>::operator () (int i, int j) const 485 Array2<T>::operator () (int i, int j) const
467 { 486 {
468 return Array<T>::checkelem (d1*j+i); 487 if (i < 0 || j < 0 || i >= d1 || j >= d2)
488 {
489 (*current_liboctave_error_handler) ("range error");
490 T foo;
491 return foo;
492 }
493 return Array<T>::elem (d1*j+i);
469 } 494 }
470 495
471 template <class T> 496 template <class T>
472 void 497 void
473 Array2<T>::resize (int r, int c) 498 Array2<T>::resize (int r, int c)
624 649
625 template <class T> 650 template <class T>
626 T& 651 T&
627 Array3<T>::checkelem (int i, int j, int k) 652 Array3<T>::checkelem (int i, int j, int k)
628 { 653 {
629 return Array2<T>::checkelem (i, d1*k+j); 654 if (i < 0 || j < 0 || k < 0 || i >= d1 || j >= d2 || k >= d3)
655 {
656 (*current_liboctave_error_handler) ("range error");
657 static T foo;
658 return foo;
659 }
660 return Array2<T>::elem (i, d1*k+j);
630 } 661 }
631 662
632 template <class T> 663 template <class T>
633 T& 664 T&
634 Array3<T>::operator () (int i, int j, int k) 665 Array3<T>::operator () (int i, int j, int k)
635 { 666 {
636 return Array2<T>::checkelem (i, d2*k+j); 667 if (i < 0 || j < 0 || k < 0 || i >= d1 || j >= d2 || k >= d3)
668 {
669 (*current_liboctave_error_handler) ("range error");
670 static T foo;
671 return foo;
672 }
673 return Array2<T>::elem (i, d2*k+j);
637 } 674 }
638 675
639 template <class T> 676 template <class T>
640 T& 677 T&
641 Array3<T>::xelem (int i, int j, int k) 678 Array3<T>::xelem (int i, int j, int k)
652 689
653 template <class T> 690 template <class T>
654 T 691 T
655 Array3<T>::checkelem (int i, int j, int k) const 692 Array3<T>::checkelem (int i, int j, int k) const
656 { 693 {
657 return Array2<T>::checkelem (i, d1*k+j); 694 if (i < 0 || j < 0 || k < 0 || i >= d1 || j >= d2 || k >= d3)
695 {
696 (*current_liboctave_error_handler) ("range error");
697 T foo;
698 return foo;
699 }
700 return Array2<T>::elem (i, d1*k+j);
658 } 701 }
659 702
660 template <class T> 703 template <class T>
661 T 704 T
662 Array3<T>::operator () (int i, int j, int k) const 705 Array3<T>::operator () (int i, int j, int k) const
663 { 706 {
664 return Array2<T>::checkelem (i, d2*k+j); 707 if (i < 0 || j < 0 || k < 0 || i >= d1 || j >= d2 || k >= d3)
708 {
709 (*current_liboctave_error_handler) ("range error");
710 T foo;
711 return foo;
712 }
713 return Array2<T>::elem (i, d2*k+j);
665 } 714 }
666 715
667 template <class T> 716 template <class T>
668 void 717 void
669 Array3<T>::resize (int n, int m, int k) 718 Array3<T>::resize (int n, int m, int k)
793 template <class T> 842 template <class T>
794 T& 843 T&
795 DiagArray<T>::checkelem (int r, int c) 844 DiagArray<T>::checkelem (int r, int c)
796 { 845 {
797 static T foo (0); 846 static T foo (0);
798 return (r == c) ? Array<T>::checkelem (r) : foo; 847 if (r < 0 || c < 0 || r >= nr || c >= nc)
848 {
849 (*current_liboctave_error_handler) ("range error");
850 return foo;
851 }
852 return (r == c) ? Array<T>::elem (r) : foo;
799 } 853 }
800 854
801 template <class T> 855 template <class T>
802 T& 856 T&
803 DiagArray<T>::operator () (int r, int c) 857 DiagArray<T>::operator () (int r, int c)
804 { 858 {
805 static T foo (0); 859 static T foo (0);
806 return (r == c) ? Array<T>::operator () (r) : foo; 860 if (r < 0 || c < 0 || r >= nr || c >= nc)
861 {
862 (*current_liboctave_error_handler) ("range error");
863 return foo;
864 }
865 return (r == c) ? Array<T>::elem (r) : foo;
807 } 866 }
808 867
809 template <class T> 868 template <class T>
810 T& 869 T&
811 DiagArray<T>::xelem (int r, int c) 870 DiagArray<T>::xelem (int r, int c)
823 882
824 template <class T> 883 template <class T>
825 T 884 T
826 DiagArray<T>::checkelem (int r, int c) const 885 DiagArray<T>::checkelem (int r, int c) const
827 { 886 {
828 return (r == c) ? Array<T>::checkelem (r) : T (0); 887 if (r < 0 || c < 0 || r >= nr || c >= nc)
888 {
889 (*current_liboctave_error_handler) ("range error");
890 T foo;
891 return foo;
892 }
893 return (r == c) ? Array<T>::elem (r) : T (0);
829 } 894 }
830 895
831 template <class T> 896 template <class T>
832 T 897 T
833 DiagArray<T>::operator () (int r, int c) const 898 DiagArray<T>::operator () (int r, int c) const
834 { 899 {
835 return (r == c) ? Array<T>::operator () (r) : T (0); 900 if (r < 0 || c < 0 || r >= nr || c >= nc)
901 {
902 (*current_liboctave_error_handler) ("range error");
903 T foo;
904 return foo;
905 }
906 return (r == c) ? Array<T>::elem (r) : T (0);
836 } 907 }
837 908
838 template <class T> 909 template <class T>
839 void 910 void
840 DiagArray<T>::resize (int r, int c) 911 DiagArray<T>::resize (int r, int c)