- Timestamp:
- Nov 25, 2005, 11:17:58 AM (18 years ago)
- Branches:
- (u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
- Children:
- f498f1081627c853c4d77077fcaa2ea32d82a711
- Parents:
- 84578647043da515b0705f610dde44cdd285907c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/Poly.h
r8457864 re604cd 1 //$Id: Poly.h,v 1.3 0 2005-11-24 15:57:10bricken Exp $1 //$Id: Poly.h,v 1.31 2005-11-25 10:17:58 bricken Exp $ 2 2 3 3 … … 17 17 18 18 #include <vector> 19 #include <exception> 20 using std::exception; 19 21 20 22 #define BOOST_DISABLE_THREADS 21 23 24 class DifferentDomainException: public exception{ 25 26 }; 27 class ExceptionBasedErrorHandler{ 28 public: 29 static const bool handleErrors=true; 30 static void handleDifferentRing(ring r, ring s){ 31 PrintS("throwing"); 32 throw DifferentDomainException(); 33 } 34 }; 22 35 23 36 //PolyImpl is a 08/15 poly wrapper … … 25 38 class TrivialErrorHandler{ 26 39 public: 27 static const bool handle _errors=false;28 static void handle (){40 static const bool handleErrors=false; 41 static void handleDifferentRing(ring r, ring s){ 29 42 } 30 43 }; … … 357 370 return p_Copy(ptr->p,ptr->r); 358 371 } 359 372 template<class T> void checkIsSameRing(T& p){ 373 if (error_handle_traits::handleErrors){ 374 if (p.getRing()!=this->getRing()){ 375 error_handle_traits::handleDifferentRing( 376 this->getRing(), 377 p.getRing() 378 ); 379 } 380 } 381 } 360 382 typedef create_type_input create_type; 361 383 typedef PolyInputIterator<create_type> iterator; … … 398 420 399 421 PolyBase& operator+=(const PolyBase& p2){ 422 checkIsSameRing(p2); 400 423 copy_on_write(); 401 424 *ptr += *p2.ptr; … … 465 488 }; 466 489 467 class Poly: public PolyBase<POLY_VARIANT_RING, Poly, TrivialErrorHandler>{490 class Poly: public PolyBase<POLY_VARIANT_RING, Poly, ExceptionBasedErrorHandler>{ 468 491 private: 469 typedef PolyBase<POLY_VARIANT_RING, Poly, TrivialErrorHandler> Base;492 typedef PolyBase<POLY_VARIANT_RING, Poly,ExceptionBasedErrorHandler> Base; 470 493 friend class Vector; 471 friend class PolyBase<POLY_VARIANT_MODUL,Vector, TrivialErrorHandler>;494 friend class PolyBase<POLY_VARIANT_MODUL,Vector,ExceptionBasedErrorHandler>; 472 495 public: 473 496 … … 519 542 520 543 }; 521 class Vector: public PolyBase<POLY_VARIANT_MODUL, Vector, TrivialErrorHandler>{544 class Vector: public PolyBase<POLY_VARIANT_MODUL, Vector, ExceptionBasedErrorHandler>{ 522 545 private: 523 typedef PolyBase<POLY_VARIANT_MODUL, Vector, TrivialErrorHandler> Base;546 typedef PolyBase<POLY_VARIANT_MODUL, Vector, ExceptionBasedErrorHandler> Base; 524 547 public: 525 548
Note: See TracChangeset
for help on using the changeset viewer.