00001
00002 #ifdef POLARIS_GNU_PRAGMAS
00003 #pragma implementation "Assertion.h"
00004 #pragma implementation "ExpressionAssertion.h"
00005 #pragma implementation "ARDAssertion.h"
00006 #pragma implementation "StringAssertion.h"
00007 #pragma implementation "AssertionList.h"
00008 #pragma implementation "AssertComment.h"
00009 #pragma implementation "AssertCritical.h"
00010 #pragma implementation "AssertEpilogue.h"
00011 #pragma implementation "AssertInduction.h"
00012 #pragma implementation "AssertLastValue.h"
00013 #pragma implementation "AssertParallel.h"
00014 #pragma implementation "AssertPrivate.h"
00015 #pragma implementation "AssertPrologue.h"
00016 #pragma implementation "AssertReduction.h"
00017 #pragma implementation "AssertRelation.h"
00018 #pragma implementation "AssertSerial.h"
00019 #pragma implementation "AssertSubst.h"
00020 #pragma implementation "AssertLoopLabel.h"
00021 #pragma implementation "AssertMayMod.h"
00022 #pragma implementation "AssertNoMod.h"
00023
00024 #pragma implementation "AssertNoWait.h"
00025
00026 #pragma implementation "AssertShared.h"
00027 #pragma implementation "AssertFirstValue.h"
00028 #pragma implementation "AssertPrivateRefs.h"
00029 #pragma implementation "AssertReadOnlyRefs.h"
00030 #pragma implementation "AssertSharedRefs.h"
00031 #pragma implementation "AssertRTShadow.h"
00032 #pragma implementation "AssertDepIO.h"
00033 #pragma implementation "AssertInline.h"
00034 #pragma implementation "AssertRecursiveInline.h"
00035 #pragma implementation "AssertNoInline.h"
00036 #pragma implementation "AssertRunTimeTest.h"
00037 #pragma implementation "AssertNoPutGet.h"
00038 #pragma implementation "AssertSchedule.h"
00039 #pragma implementation "AssertDynLastValue.h"
00040 #pragma implementation "AssertRangeWritten.h"
00041 #pragma implementation "AssertNoDependence.h"
00042 #pragma implementation "AssertSideEffectFree.h"
00043 #pragma implementation "AssertPreamble.h"
00044 #pragma implementation "AssertPostamble.h"
00045 #pragma implementation "AssertParallelCondition.h"
00046 #pragma implementation "AssertSafeCondition.h"
00047 #pragma implementation "AssertOverlap.h"
00048 #pragma implementation "AssertOverlapSort.h"
00049 #pragma implementation "AssertPrivateDescr.h"
00050 #pragma implementation "AssertTestMonotone.h"
00051 #pragma implementation "AssertReductDescr.h"
00052 #pragma implementation "AssertDepOverlap.h"
00053 #pragma implementation "AssertDepROvsRW.h"
00054 #pragma implementation "AssertDepRWvsWF.h"
00055 #pragma implementation "AssertDepWFvsRO.h"
00056 #pragma implementation "AssertInstrument.h"
00057 #pragma implementation "AssertUnknownShared.h"
00058 #pragma implementation "AssertForward.h"
00059
00060 #pragma implementation "AssertPartialReduction.h"
00061 #pragma implementation "AssertPartialFirstValue.h"
00062 #endif
00063
00064 #include "Assertion.h"
00065 #include "ARDAssertion.h"
00066 #include "ExpressionAssertion.h"
00067 #include "StringAssertion.h"
00068 #include "AssertionList.h"
00069 #include "AssertComment.h"
00070 #include "AssertCritical.h"
00071 #include "AssertEpilogue.h"
00072 #include "AssertInduction.h"
00073 #include "AssertLastValue.h"
00074 #include "AssertParallel.h"
00075 #include "AssertPrivate.h"
00076 #include "AssertPrologue.h"
00077 #include "AssertReduction.h"
00078 #include "AssertRelation.h"
00079 #include "AssertNoPutGet.h"
00080 #include "AssertSerial.h"
00081 #include "AssertSubst.h"
00082 #include "AssertLoopLabel.h"
00083 #include "AssertMayMod.h"
00084 #include "AssertNoMod.h"
00085
00086 #include "AssertNoWait.h"
00087
00088 #include "AssertShared.h"
00089 #include "AssertFirstValue.h"
00090 #include "AssertPrivateRefs.h"
00091 #include "AssertReadOnlyRefs.h"
00092 #include "AssertSharedRefs.h"
00093 #include "AssertRTShadow.h"
00094 #include "AssertDepIO.h"
00095 #include "AssertInline.h"
00096 #include "AssertRecursiveInline.h"
00097 #include "AssertNoInline.h"
00098 #include "AssertRunTimeTest.h"
00099 #include "AssertSchedule.h"
00100 #include "AssertDynLastValue.h"
00101 #include "AssertRangeWritten.h"
00102 #include "AssertNoDependence.h"
00103 #include "AssertSideEffectFree.h"
00104 #include "AssertPreamble.h"
00105 #include "AssertPostamble.h"
00106 #include "AssertParallelCondition.h"
00107 #include "AssertSafeCondition.h"
00108 #include "AssertOverlap.h"
00109 #include "AssertOverlapSort.h"
00110 #include "AssertPrivateDescr.h"
00111 #include "AssertTestMonotone.h"
00112 #include "AssertReductDescr.h"
00113 #include "AssertDepOverlap.h"
00114 #include "AssertDepROvsRW.h"
00115 #include "AssertDepRWvsWF.h"
00116 #include "AssertDepWFvsRO.h"
00117 #include "AssertInstrument.h"
00118 #include "AssertUnknownShared.h"
00119 #include "AssertForward.h"
00120
00121 #include "AssertPartialReduction.h"
00122 #include "AssertPartialFirstValue.h"
00123
00124 #include "../Collection/Iterator.h"
00125 #include "../Collection/Mutator.h"
00126 #include "../Collection/RefSet.h"
00127 #include "../macros.h"
00128 #include "../p-assert.h"
00129
00130 template class TypedCollection<Assertion>;
00131 template class List<Assertion>;
00132 template ostream & operator << (ostream &, const List<Assertion> &);
00133 template class RefList<Assertion>;
00134 template ostream & operator << (ostream &, const RefList<Assertion> &);
00135 template class RefSet<Assertion>;
00136 template ostream & operator << (ostream &, const RefSet<Assertion> &);
00137 template class Assign<Assertion>;
00138
00139 template class Iterator<Assertion>;
00140 template class Mutator<Assertion>;
00141
00142
00143
00144 Assertion::Assertion()
00145 {
00146 _type = AS_NONE;
00147 _assertion_list.clear();
00148 }
00149
00150 Assertion::Assertion(const Assertion & a)
00151 {
00152 _type = a._type;
00153
00154 _assertion_list.clear();
00155 _assertion_list = a._assertion_list;
00156 }
00157
00158 AssertionType
00159 Assertion::type() const
00160 {
00161 return _type;
00162 }
00163
00164 const List<Expression> &
00165 Assertion::arg_list_guarded() const
00166 {
00167 p_abort( "Assertion::arg_list_guarded: can't get arg_list." );
00168 return *((const List<Expression> *) 0);
00169 }
00170
00171 List<Expression> &
00172 Assertion::arg_list_guarded()
00173 {
00174 p_abort( "Assertion::arg_list_guarded: can't get arg_list." );
00175 return *((List<Expression> *) 0);
00176 }
00177
00178 Boolean
00179 Assertion::arg_list_valid() const
00180 {
00181 return False;
00182 }
00183
00184 const List<StringElem> &
00185 Assertion::string_arg_list_guarded() const
00186 {
00187 p_abort( "Assertion::string_arg_list_guarded: can't get arg_list." );
00188 return *((const List<StringElem> *) 0);
00189 }
00190
00191 List<StringElem> &
00192 Assertion::string_arg_list_guarded()
00193 {
00194 p_abort( "Assertion::string_arg_list_guarded: can't get arg_list." );
00195 return *((List<StringElem> *) 0);
00196 }
00197
00198 Boolean
00199 Assertion::string_arg_list_valid() const
00200 {
00201 return False;
00202 }
00203
00204 RefList<Assertion> &
00205 Assertion::assertion_list() const
00206 {
00207 return CASTAWAY(RefList<Assertion> &) _assertion_list;
00208 }
00209
00210 Assertion::~Assertion()
00211 {
00212 _assertion_list.clear();
00213 }
00214
00215 void
00216 Assertion::print(ostream & NOTUSED(o)) const
00217 {
00218 p_abort( "Assertion::print: can't print assertion." );
00219 }
00220
00221 Assertion &
00222 Assertion::operator = (const Assertion &a)
00223 {
00224 if (&a != this) {
00225 _type = a._type;
00226 _assertion_list.clear();
00227 _assertion_list = a._assertion_list;
00228 }
00229
00230 return (*this);
00231 }
00232
00233 Assertion *
00234 Assertion::clone() const
00235 {
00236 return new Assertion(*this);
00237 }
00238
00239 Listable *
00240 Assertion::listable_clone() const
00241 {
00242 p_abort( "Assertion::listable_clone: can't clone assertion." );
00243 return 0;
00244 }
00245
00246
00247
00248 StringAssertion::StringAssertion()
00249 {
00250 _type = AS_NONE;
00251 }
00252
00253 StringAssertion::StringAssertion(const StringAssertion & a)
00254 {
00255 Assertion::operator = ( a );
00256
00257 _string_arg_list = a._string_arg_list;
00258 }
00259
00260 StringAssertion &
00261 StringAssertion::operator = (const StringAssertion &a)
00262 {
00263 if (&a != this) {
00264 Assertion::operator = ( a );
00265 _string_arg_list.clear();
00266 _string_arg_list = a._string_arg_list;
00267 }
00268
00269 return (*this);
00270 }
00271
00272 const List<StringElem> &
00273 StringAssertion::string_arg_list_guarded() const
00274 {
00275 return _string_arg_list;
00276 }
00277
00278 List<StringElem> &
00279 StringAssertion::string_arg_list_guarded()
00280 {
00281 return _string_arg_list;
00282 }
00283
00284 Boolean
00285 StringAssertion::string_arg_list_valid() const
00286 {
00287 return True;
00288 }
00289
00290 Assertion *
00291 StringAssertion::clone() const
00292 {
00293 return new StringAssertion(*this);
00294 }
00295
00296 StringAssertion::~StringAssertion()
00297 {
00298
00299 }
00300
00301
00302
00303 ExpressionAssertion::ExpressionAssertion()
00304 {
00305 _type = AS_NONE;
00306 }
00307
00308 ExpressionAssertion::ExpressionAssertion(const ExpressionAssertion & a)
00309 {
00310 Assertion::operator = ( a );
00311
00312 _arg_list = a._arg_list;
00313 }
00314
00315 ExpressionAssertion &
00316 ExpressionAssertion::operator = (const ExpressionAssertion &a)
00317 {
00318 if (&a != this) {
00319 Assertion::operator = ( a );
00320 _arg_list.clear();
00321 _arg_list = a._arg_list;
00322 }
00323
00324 return (*this);
00325 }
00326
00327 const List<Expression> &
00328 ExpressionAssertion::arg_list_guarded() const
00329 {
00330 return _arg_list;
00331 }
00332
00333 List<Expression> &
00334 ExpressionAssertion::arg_list_guarded()
00335 {
00336 return _arg_list;
00337 }
00338
00339 Boolean
00340 ExpressionAssertion::arg_list_valid() const
00341 {
00342 return True;
00343 }
00344
00345 Assertion *
00346 ExpressionAssertion::clone() const
00347 {
00348 return new ExpressionAssertion(*this);
00349 }
00350
00351 ExpressionAssertion::~ExpressionAssertion()
00352 {
00353
00354 }
00355
00356
00357
00358 ARDAssertion::ARDAssertion()
00359 {
00360 _type = AS_NONE;
00361 }
00362
00363 ARDAssertion::ARDAssertion(const ARDAssertion & a)
00364 {
00365 Assertion::operator = ( a );
00366
00367 _descr_list = a._descr_list;
00368 }
00369
00370 ARDAssertion &
00371 ARDAssertion::operator = (const ARDAssertion &a)
00372 {
00373 if (&a != this) {
00374 Assertion::operator = ( a );
00375 _descr_list.clear();
00376 _descr_list = a._descr_list;
00377 }
00378
00379 return (*this);
00380 }
00381
00382 const List<AbstractAccess> &
00383 ARDAssertion::descr_list_guarded() const
00384 {
00385 return _descr_list;
00386 }
00387
00388 List<AbstractAccess> &
00389 ARDAssertion::descr_list_guarded()
00390 {
00391 return _descr_list;
00392 }
00393
00394 Boolean
00395 ARDAssertion::descr_list_valid() const
00396 {
00397 return True;
00398 }
00399
00400 void
00401 ARDAssertion::relink_aptrs( ProgramUnit &p )
00402 {
00403 for (Iterator<AbstractAccess> aa_iter = _descr_list; aa_iter.valid(); ++aa_iter)
00404 if (aa_iter.current_valid())
00405 aa_iter.current().relink_eptrs( p );
00406 }
00407
00408 Assertion *
00409 ARDAssertion::clone() const
00410 {
00411 return new ARDAssertion(*this);
00412 }
00413
00414 ARDAssertion::~ARDAssertion()
00415 {
00416
00417 }
00418
00419
00420
00421 AssertionList::AssertionList()
00422 {
00423
00424 }
00425
00426 AssertionList::AssertionList(Assertion *ap)
00427 {
00428 ins_first( ap );
00429 }
00430
00431 AssertionList::AssertionList(const AssertionList & a)
00432 {
00433 clear();
00434 List<Assertion>::operator = ( a );
00435 }
00436
00437 AssertionList::~AssertionList()
00438 {
00439
00440 }
00441
00442 void
00443 AssertionList::print(ostream &o) const
00444 {
00445 for (Iterator<Assertion> iter = (*this); iter.valid(); ++iter)
00446 iter.current().print(o);
00447 }
00448
00449 void
00450 AssertionList::absorb(AssertionList *ap)
00451 {
00452 for (Mutator<Assertion> iter = (*ap); iter.valid(); ++iter)
00453 ins_last( iter.grab() );
00454
00455 delete ap;
00456 }
00457
00458 AssertionList &
00459 AssertionList::operator = (const AssertionList &a)
00460 {
00461 clear();
00462 List<Assertion>::operator = ( a );
00463
00464 return (*this);
00465 }
00466
00467
00468
00469 AssertPrivate::AssertPrivate()
00470 {
00471 _type = AS_PRIVATE;
00472 }
00473
00474 AssertPrivate::AssertPrivate(const AssertPrivate & a)
00475 {
00476 ExpressionAssertion::operator = ( a );
00477 }
00478
00479 AssertPrivate::~AssertPrivate()
00480 {
00481
00482 }
00483
00484 void
00485 AssertPrivate::print(ostream & o) const
00486 {
00487 o << "{ AS_PRIVATE ";
00488
00489 Iterator<Expression> iter = arg_list_guarded();
00490
00491 if (iter.valid()) {
00492 o << iter.current();
00493 for (++iter; iter.valid(); ++iter)
00494 o << ", " << iter.current();
00495 }
00496
00497 o << " } ";
00498 }
00499
00500 AssertPrivate &
00501 AssertPrivate::operator = (const AssertPrivate &a)
00502 {
00503 if (&a != this)
00504 ExpressionAssertion::operator = ( a );
00505
00506 return (*this);
00507 }
00508
00509 Listable *
00510 AssertPrivate::listable_clone() const
00511 {
00512 return (Listable *) new AssertPrivate( *this );
00513 }
00514
00515 Assertion *
00516 AssertPrivate::clone() const
00517 {
00518 return new AssertPrivate( *this );
00519 }
00520
00521
00522
00523 AssertShared::AssertShared()
00524 {
00525 _type = AS_SHARED;
00526 }
00527
00528 AssertShared::AssertShared(const AssertShared & a)
00529 {
00530 ExpressionAssertion::operator = ( a );
00531 }
00532
00533 AssertShared::~AssertShared()
00534 {
00535
00536 }
00537
00538 void
00539 AssertShared::print(ostream & o) const
00540 {
00541 o << "{ AS_SHARED ";
00542
00543 Iterator<Expression> iter = arg_list_guarded();
00544
00545 if (iter.valid()) {
00546 o << iter.current();
00547 for (++iter; iter.valid(); ++iter)
00548 o << ", " << iter.current();
00549 }
00550
00551 o << " } ";
00552 }
00553
00554 AssertShared &
00555 AssertShared::operator = (const AssertShared &a)
00556 {
00557 if (&a != this)
00558 ExpressionAssertion::operator = ( a );
00559
00560 return (*this);
00561 }
00562
00563 Listable *
00564 AssertShared::listable_clone() const
00565 {
00566 return (Listable *) new AssertShared( *this );
00567 }
00568
00569 Assertion *
00570 AssertShared::clone() const
00571 {
00572 return new AssertShared( *this );
00573 }
00574
00575
00576
00577 AssertLoopLabel::AssertLoopLabel()
00578 {
00579 _type = AS_LOOPLABEL;
00580 }
00581
00582 AssertLoopLabel::AssertLoopLabel(const AssertLoopLabel & a)
00583 {
00584 StringAssertion::operator = ( a );
00585 }
00586
00587 AssertLoopLabel::~AssertLoopLabel()
00588 {
00589
00590 }
00591
00592 void
00593 AssertLoopLabel::print(ostream & o) const
00594 {
00595 o << "{ AS_LOOPLABEL ";
00596
00597 Iterator<StringElem> iter = string_arg_list_guarded();
00598
00599 if (iter.valid()) {
00600 o << iter.current();
00601 for (++iter; iter.valid(); ++iter)
00602 o << ", " << iter.current();
00603 }
00604
00605 o << " } ";
00606 }
00607
00608 AssertLoopLabel &
00609 AssertLoopLabel::operator = (const AssertLoopLabel &a)
00610 {
00611 if (&a != this)
00612 StringAssertion::operator = ( a );
00613
00614 return (*this);
00615 }
00616
00617 Listable *
00618 AssertLoopLabel::listable_clone() const
00619 {
00620 return (Listable *) new AssertLoopLabel( *this );
00621 }
00622
00623 Assertion *
00624 AssertLoopLabel::clone() const
00625 {
00626 return new AssertLoopLabel( *this );
00627 }
00628
00629
00630
00631 AssertSchedule::AssertSchedule()
00632 {
00633 _type = AS_SCHEDULE;
00634 }
00635
00636 AssertSchedule::AssertSchedule(const AssertSchedule & a)
00637 {
00638 StringAssertion::operator = ( a );
00639 }
00640
00641 AssertSchedule::~AssertSchedule()
00642 {
00643
00644 }
00645
00646 void
00647 AssertSchedule::print(ostream & o) const
00648 {
00649 o << "{ AS_SCHEDULE ";
00650
00651 Iterator<StringElem> iter = string_arg_list_guarded();
00652
00653 if (iter.valid()) {
00654 o << iter.current();
00655 for (++iter; iter.valid(); ++iter)
00656 o << ", " << iter.current();
00657 }
00658
00659 o << " } ";
00660 }
00661
00662 AssertSchedule &
00663 AssertSchedule::operator = (const AssertSchedule &a)
00664 {
00665 if (&a != this)
00666 StringAssertion::operator = ( a );
00667
00668 return (*this);
00669 }
00670
00671 Listable *
00672 AssertSchedule::listable_clone() const
00673 {
00674 return (Listable *) new AssertSchedule( *this );
00675 }
00676
00677 Assertion *
00678 AssertSchedule::clone() const
00679 {
00680 return new AssertSchedule( *this );
00681 }
00682
00683
00684
00685
00686 AssertSubst::AssertSubst()
00687 {
00688 _type = AS_SUBST;
00689 }
00690
00691 AssertSubst::AssertSubst(const AssertSubst & a)
00692 {
00693 ExpressionAssertion::operator = ( a );
00694 }
00695
00696 AssertSubst::~AssertSubst()
00697 {
00698
00699 }
00700
00701 void
00702 AssertSubst::print(ostream & o) const
00703 {
00704 o << "{ AS_SUBST ";
00705
00706 Iterator<Expression> iter = arg_list_guarded();
00707
00708 if (iter.valid()) {
00709 o << iter.current();
00710 for (++iter; iter.valid(); ++iter)
00711 o << ", " << iter.current();
00712 }
00713
00714 o << "} ";
00715 }
00716
00717 AssertSubst &
00718 AssertSubst::operator = (const AssertSubst &a)
00719 {
00720 if (&a != this)
00721 ExpressionAssertion::operator = ( a );
00722
00723 return (*this);
00724 }
00725
00726 Listable *
00727 AssertSubst::listable_clone() const
00728 {
00729 return (Listable *) new AssertSubst( *this );
00730 }
00731
00732 Assertion *
00733 AssertSubst::clone() const
00734 {
00735 return new AssertSubst( *this );
00736 }
00737
00738
00739
00740 AssertLastValue::AssertLastValue()
00741 {
00742 _type = AS_LASTVALUE;
00743 }
00744
00745 AssertLastValue::AssertLastValue(const AssertLastValue & a)
00746 {
00747 ExpressionAssertion::operator = ( a );
00748 }
00749
00750 AssertLastValue::~AssertLastValue()
00751 {
00752
00753 }
00754
00755 void
00756 AssertLastValue::print(ostream & o) const
00757 {
00758 o << "{ AS_LASTVALUE ";
00759
00760 Iterator<Expression> iter = arg_list_guarded();
00761
00762 if (iter.valid()) {
00763 o << iter.current();
00764 for (++iter; iter.valid(); ++iter)
00765 o << ", " << iter.current();
00766 }
00767
00768 o << "} ";
00769 }
00770
00771 AssertLastValue &
00772 AssertLastValue::operator = (const AssertLastValue &a)
00773 {
00774 if (&a != this)
00775 ExpressionAssertion::operator = ( a );
00776
00777 return (*this);
00778 }
00779
00780 Listable *
00781 AssertLastValue::listable_clone() const
00782 {
00783 return (Listable *) new AssertLastValue( *this );
00784 }
00785
00786 Assertion *
00787 AssertLastValue::clone() const
00788 {
00789 return new AssertLastValue( *this );
00790 }
00791
00792
00793
00794 AssertDynLastValue::AssertDynLastValue()
00795 {
00796 _type = AS_DYNLASTVALUE;
00797 }
00798
00799 AssertDynLastValue::AssertDynLastValue(const AssertDynLastValue & a)
00800 {
00801 ExpressionAssertion::operator = ( a );
00802 }
00803
00804 AssertDynLastValue::~AssertDynLastValue()
00805 {
00806
00807 }
00808
00809 void
00810 AssertDynLastValue::print(ostream & o) const
00811 {
00812 o << "{ AS_DYNLASTVALUE ";
00813
00814 Iterator<Expression> iter = arg_list_guarded();
00815
00816 if (iter.valid()) {
00817 o << iter.current();
00818 for (++iter; iter.valid(); ++iter)
00819 o << ", " << iter.current();
00820 }
00821
00822 o << "} ";
00823 }
00824
00825 AssertDynLastValue &
00826 AssertDynLastValue::operator = (const AssertDynLastValue &a)
00827 {
00828 if (&a != this)
00829 ExpressionAssertion::operator = ( a );
00830
00831 return (*this);
00832 }
00833
00834 Listable *
00835 AssertDynLastValue::listable_clone() const
00836 {
00837 return (Listable *) new AssertDynLastValue( *this );
00838 }
00839
00840 Assertion *
00841 AssertDynLastValue::clone() const
00842 {
00843 return new AssertDynLastValue( *this );
00844 }
00845
00846
00847
00848 AssertParallel::AssertParallel()
00849 {
00850 _type = AS_PARALLEL;
00851 }
00852
00853 AssertParallel::AssertParallel(const AssertParallel & a)
00854 {
00855 ExpressionAssertion::operator = ( a );
00856 }
00857
00858 AssertParallel::~AssertParallel()
00859 {
00860
00861 }
00862
00863 void
00864 AssertParallel::print(ostream & o) const
00865 {
00866 o << "{ AS_PARALLEL (";
00867
00868 Iterator<Expression> iter = arg_list_guarded();
00869
00870 if (iter.valid()) {
00871 o << iter.current();
00872 for (++iter; iter.valid(); ++iter)
00873 o << ", " << iter.current();
00874 }
00875
00876 o << ") } ";
00877 }
00878
00879 AssertParallel &
00880 AssertParallel::operator = (const AssertParallel &a)
00881 {
00882 if (&a != this)
00883 ExpressionAssertion::operator = ( a );
00884
00885 return (*this);
00886 }
00887
00888 Listable *
00889 AssertParallel::listable_clone() const
00890 {
00891 return (Listable *) new AssertParallel( *this );
00892 }
00893
00894 Assertion *
00895 AssertParallel::clone() const
00896 {
00897 return new AssertParallel( *this );
00898 }
00899
00900
00901
00902 AssertPrologue::AssertPrologue()
00903 {
00904 _type = AS_PROLOGUE;
00905 }
00906
00907 AssertPrologue::AssertPrologue(const AssertPrologue & a)
00908 {
00909 ExpressionAssertion::operator = ( a );
00910 }
00911
00912 AssertPrologue::~AssertPrologue()
00913 {
00914
00915 }
00916
00917 void
00918 AssertPrologue::print(ostream & o) const
00919 {
00920 o << "{ AS_PROLOGUE (";
00921
00922 Iterator<Expression> iter = arg_list_guarded();
00923
00924 if (iter.valid()) {
00925 o << iter.current();
00926 for (++iter; iter.valid(); ++iter)
00927 o << ", " << iter.current();
00928 }
00929
00930 o << ") } ";
00931 }
00932
00933 AssertPrologue &
00934 AssertPrologue::operator = (const AssertPrologue &a)
00935 {
00936 if (&a != this)
00937 ExpressionAssertion::operator = ( a );
00938
00939 return (*this);
00940 }
00941
00942 Listable *
00943 AssertPrologue::listable_clone() const
00944 {
00945 return (Listable *) new AssertPrologue( *this );
00946 }
00947
00948 Assertion *
00949 AssertPrologue::clone() const
00950 {
00951 return new AssertPrologue( *this );
00952 }
00953
00954
00955
00956 AssertEpilogue::AssertEpilogue()
00957 {
00958 _type = AS_EPILOGUE;
00959 }
00960
00961 AssertEpilogue::AssertEpilogue(const AssertEpilogue & a)
00962 {
00963 ExpressionAssertion::operator = ( a );
00964 }
00965
00966 AssertEpilogue::~AssertEpilogue()
00967 {
00968
00969 }
00970
00971 void
00972 AssertEpilogue::print(ostream & o) const
00973 {
00974 o << "{ AS_EPILOGUE (";
00975
00976 Iterator<Expression> iter = arg_list_guarded();
00977
00978 if (iter.valid()) {
00979 o << iter.current();
00980 for (++iter; iter.valid(); ++iter)
00981 o << ", " << iter.current();
00982 }
00983
00984 o << ") } ";
00985 }
00986
00987 AssertEpilogue &
00988 AssertEpilogue::operator = (const AssertEpilogue &a)
00989 {
00990 if (&a != this)
00991 ExpressionAssertion::operator = ( a );
00992
00993 return (*this);
00994 }
00995
00996 Listable *
00997 AssertEpilogue::listable_clone() const
00998 {
00999 return (Listable *) new AssertEpilogue( *this );
01000 }
01001
01002 Assertion *
01003 AssertEpilogue::clone() const
01004 {
01005 return new AssertEpilogue( *this );
01006 }
01007
01008
01009
01010 AssertReduction::AssertReduction()
01011 {
01012 _type = AS_REDUCTION;
01013 }
01014
01015 AssertReduction::AssertReduction(const AssertReduction & a)
01016 {
01017 ExpressionAssertion::operator = ( a );
01018 }
01019
01020 AssertReduction::~AssertReduction()
01021 {
01022
01023 }
01024
01025 void
01026 AssertReduction::print(ostream & o) const
01027 {
01028 o << "{ AS_REDUCTION ";
01029
01030 Iterator<Expression> iter = arg_list_guarded();
01031
01032 if (iter.valid()) {
01033 o << iter.current();
01034 for (++iter; iter.valid(); ++iter)
01035 o << ", " << iter.current();
01036 }
01037
01038 o << "} ";
01039 }
01040
01041 AssertReduction &
01042 AssertReduction::operator = (const AssertReduction &a)
01043 {
01044 if (&a != this)
01045 ExpressionAssertion::operator = ( a );
01046
01047 return (*this);
01048 }
01049
01050 Listable *
01051 AssertReduction::listable_clone() const
01052 {
01053 return (Listable *) new AssertReduction( *this );
01054 }
01055
01056 Assertion *
01057 AssertReduction::clone() const
01058 {
01059 return new AssertReduction( *this );
01060 }
01061
01062
01063
01064
01065 AssertPartialReduction::AssertPartialReduction()
01066 {
01067 _type = AS_PARTIAL_REDUCTION;
01068 }
01069
01070 AssertPartialReduction::AssertPartialReduction(const AssertPartialReduction & a)
01071 {
01072 ExpressionAssertion::operator = ( a );
01073 }
01074
01075 AssertPartialReduction::AssertPartialReduction(IDExpr& a, IDExpr& b, IntConstExpr& c)
01076 {
01077 _arg_list.ins_last((Expression*)&a);
01078 _arg_list.ins_last((Expression*)&b);
01079 _arg_list.ins_last((Expression*)&c);
01080
01081 _type = AS_PARTIAL_REDUCTION;
01082 }
01083
01084 AssertPartialReduction::~AssertPartialReduction()
01085 {
01086
01087 }
01088
01089 void
01090 AssertPartialReduction::print(ostream & o) const
01091 {
01092 o << "{ AS_PARTIAL_REDUCTION ";
01093
01094 Iterator<Expression> iter = arg_list_guarded();
01095
01096 if (iter.valid()) {
01097 o << iter.current();
01098 for (++iter; iter.valid(); ++iter)
01099 o << ", " << iter.current();
01100 }
01101
01102 o << "} ";
01103 }
01104
01105 AssertPartialReduction &
01106 AssertPartialReduction::operator = (const AssertPartialReduction &a)
01107 {
01108 if (&a != this)
01109 ExpressionAssertion::operator = ( a );
01110
01111 return (*this);
01112 }
01113
01114 Boolean AssertPartialReduction::arg_list_valid()
01115 {
01116 if(_arg_list.entries()!=3)
01117 return false;
01118
01119 Expression& array_expr=_arg_list[0];
01120 Expression& rt_lmad_expr=_arg_list[1];
01121 Expression& case_expr=_arg_list[2];
01122
01123 if(array_expr.op()!=ID_OP)
01124 return false;
01125
01126 if(rt_lmad_expr.op()!=ID_OP)
01127 return false;
01128
01129 if(case_expr.op()!=INTEGER_CONSTANT_OP)
01130 return false;
01131
01132 return true;
01133 }
01134
01135 Listable *
01136 AssertPartialReduction::listable_clone() const
01137 {
01138 return (Listable *) new AssertPartialReduction( *this );
01139 }
01140
01141 Assertion *
01142 AssertPartialReduction::clone() const
01143 {
01144 return new AssertPartialReduction( *this );
01145 }
01146
01147
01148
01149
01150 AssertPartialFirstValue::AssertPartialFirstValue()
01151 {
01152 _type = AS_PARTIAL_REDUCTION;
01153 }
01154
01155 AssertPartialFirstValue::AssertPartialFirstValue(const AssertPartialFirstValue & a)
01156 {
01157 ExpressionAssertion::operator = ( a );
01158 }
01159
01160 AssertPartialFirstValue::AssertPartialFirstValue(IDExpr& a, IDExpr& b, IntConstExpr& c)
01161 {
01162 _arg_list.ins_last((Expression*)&a);
01163 _arg_list.ins_last((Expression*)&b);
01164 _arg_list.ins_last((Expression*)&c);
01165
01166 _type = AS_PARTIAL_REDUCTION;
01167 }
01168
01169 AssertPartialFirstValue::~AssertPartialFirstValue()
01170 {
01171
01172 }
01173
01174 void
01175 AssertPartialFirstValue::print(ostream & o) const
01176 {
01177 o << "{ AS_PARTIAL_REDUCTION ";
01178
01179 Iterator<Expression> iter = arg_list_guarded();
01180
01181 if (iter.valid()) {
01182 o << iter.current();
01183 for (++iter; iter.valid(); ++iter)
01184 o << ", " << iter.current();
01185 }
01186
01187 o << "} ";
01188 }
01189
01190 AssertPartialFirstValue &
01191 AssertPartialFirstValue::operator = (const AssertPartialFirstValue &a)
01192 {
01193 if (&a != this)
01194 ExpressionAssertion::operator = ( a );
01195
01196 return (*this);
01197 }
01198
01199 Boolean AssertPartialFirstValue::arg_list_valid()
01200 {
01201 if(_arg_list.entries()!=3)
01202 return false;
01203
01204 Expression& array_expr=_arg_list[0];
01205 Expression& rt_lmad_expr=_arg_list[1];
01206 Expression& case_expr=_arg_list[2];
01207
01208 if(array_expr.op()!=ID_OP)
01209 return false;
01210
01211 if(rt_lmad_expr.op()!=ID_OP)
01212 return false;
01213
01214 if(case_expr.op()!=INTEGER_CONSTANT_OP)
01215 return false;
01216
01217 return true;
01218 }
01219
01220 Listable *
01221 AssertPartialFirstValue::listable_clone() const
01222 {
01223 return (Listable *) new AssertPartialFirstValue( *this );
01224 }
01225
01226 Assertion *
01227 AssertPartialFirstValue::clone() const
01228 {
01229 return new AssertPartialFirstValue( *this );
01230 }
01231
01232
01233
01234
01235 AssertComment::AssertComment()
01236 {
01237 _type = AS_COMMENT;
01238 }
01239
01240 AssertComment::AssertComment(const AssertComment & a)
01241 {
01242 StringAssertion::operator = ( a );
01243 }
01244
01245 AssertComment::~AssertComment()
01246 {
01247
01248 }
01249
01250 void
01251 AssertComment::print(ostream & o) const
01252 {
01253 o << "{ AS_COMMENT ";
01254
01255 Iterator<StringElem> iter = string_arg_list_guarded();
01256
01257 const char *quote = "\"";
01258
01259 if (iter.valid()) {
01260 o << quote << iter.current() << quote ;
01261 for (++iter; iter.valid(); ++iter)
01262 o << ", " << quote << iter.current() << quote;
01263 }
01264
01265 o << "} ";
01266 }
01267
01268 AssertComment &
01269 AssertComment::operator = (const AssertComment &a)
01270 {
01271 if (&a != this)
01272 StringAssertion::operator = ( a );
01273
01274 return (*this);
01275 }
01276
01277 Listable *
01278 AssertComment::listable_clone() const
01279 {
01280 return (Listable *) new AssertComment( *this );
01281 }
01282
01283 Assertion *
01284 AssertComment::clone() const
01285 {
01286 return new AssertComment( *this );
01287 }
01288
01289
01290
01291 void
01292 Assertion::relink_aptrs( ProgramUnit & NOTUSED(p) )
01293 {
01294
01295 }
01296
01297 void
01298 ExpressionAssertion::relink_aptrs( ProgramUnit &p )
01299 {
01300 for (Iterator<Expression> e_iter = _arg_list; e_iter.valid(); ++e_iter)
01301 if (e_iter.current_valid())
01302 e_iter.current().relink_eptrs( p );
01303 }
01304
01305
01306
01307 AssertSerial::AssertSerial()
01308 {
01309 _type = AS_SERIAL;
01310 }
01311
01312 AssertSerial::AssertSerial(const AssertSerial & a)
01313 {
01314 ExpressionAssertion::operator = ( a );
01315 }
01316
01317 AssertSerial::~AssertSerial()
01318 {
01319
01320 }
01321
01322 void
01323 AssertSerial::print(ostream & o) const
01324 {
01325 o << "{ AS_SERIAL (";
01326
01327 Iterator<Expression> iter = arg_list_guarded();
01328
01329 if (iter.valid()) {
01330 o << iter.current();
01331 for (++iter; iter.valid(); ++iter)
01332 o << ", " << iter.current();
01333 }
01334
01335 o << ") } ";
01336 }
01337
01338 AssertSerial &
01339 AssertSerial::operator = (const AssertSerial &a)
01340 {
01341 if (&a != this)
01342 ExpressionAssertion::operator = ( a );
01343
01344 return (*this);
01345 }
01346
01347 Listable *
01348 AssertSerial::listable_clone() const
01349 {
01350 return (Listable *) new AssertSerial( *this );
01351 }
01352
01353 Assertion *
01354 AssertSerial::clone() const
01355 {
01356 return new AssertSerial( *this );
01357 }
01358
01359
01360
01361 AssertCritical::AssertCritical()
01362 {
01363 _type = AS_CRITICAL;
01364 }
01365
01366 AssertCritical::AssertCritical(const AssertCritical & a)
01367 {
01368 ExpressionAssertion::operator = ( a );
01369 }
01370
01371 AssertCritical::~AssertCritical()
01372 {
01373
01374 }
01375
01376 void
01377 AssertCritical::print(ostream & o) const
01378 {
01379 o << "{ AS_CRITICAL (";
01380
01381 Iterator<Expression> iter = arg_list_guarded();
01382
01383 if (iter.valid()) {
01384 o << iter.current();
01385 for (++iter; iter.valid(); ++iter)
01386 o << ", " << iter.current();
01387 }
01388
01389 o << ") } ";
01390 }
01391
01392 AssertCritical &
01393 AssertCritical::operator = (const AssertCritical &a)
01394 {
01395 if (&a != this)
01396 ExpressionAssertion::operator = ( a );
01397
01398 return (*this);
01399 }
01400
01401 Listable *
01402 AssertCritical::listable_clone() const
01403 {
01404 return (Listable *) new AssertCritical( *this );
01405 }
01406
01407 Assertion *
01408 AssertCritical::clone() const
01409 {
01410 return new AssertCritical( *this );
01411 }
01412
01413
01414
01415 AssertRelation::AssertRelation()
01416 {
01417 _type = AS_RELATION;
01418 }
01419
01420 AssertRelation::AssertRelation(const AssertRelation & a)
01421 {
01422 ExpressionAssertion::operator = ( a );
01423 }
01424
01425 AssertRelation::~AssertRelation()
01426 {
01427
01428 }
01429
01430 void
01431 AssertRelation::print(ostream & o) const
01432 {
01433 o << "{ AS_RELATION (";
01434
01435 Iterator<Expression> iter = arg_list_guarded();
01436
01437 if (iter.valid()) {
01438 o << iter.current();
01439 for (++iter; iter.valid(); ++iter)
01440 o << ", " << iter.current();
01441 }
01442
01443 o << ") } ";
01444 }
01445
01446 AssertRelation &
01447 AssertRelation::operator = (const AssertRelation &a)
01448 {
01449 if (&a != this)
01450 ExpressionAssertion::operator = ( a );
01451
01452 return (*this);
01453 }
01454
01455 Listable *
01456 AssertRelation::listable_clone() const
01457 {
01458 return (Listable *) new AssertRelation( *this );
01459 }
01460
01461 Assertion *
01462 AssertRelation::clone() const
01463 {
01464 return new AssertRelation( *this );
01465 }
01466
01467
01468
01469 AssertSafeCondition::AssertSafeCondition()
01470 {
01471 _type = AS_SAFE_CONDITION;
01472 }
01473
01474 AssertSafeCondition::AssertSafeCondition(const AssertSafeCondition & a)
01475 {
01476 ExpressionAssertion::operator = ( a );
01477 }
01478
01479 AssertSafeCondition::~AssertSafeCondition()
01480 {
01481
01482 }
01483
01484 void
01485 AssertSafeCondition::print(ostream & o) const
01486 {
01487 o << "{ AS_SAFE_CONDITION (";
01488
01489 Iterator<Expression> iter = arg_list_guarded();
01490
01491 if (iter.valid()) {
01492 o << iter.current();
01493 for (++iter; iter.valid(); ++iter)
01494 o << ", " << iter.current();
01495 }
01496
01497 o << ") } ";
01498 }
01499
01500 AssertSafeCondition &
01501 AssertSafeCondition::operator = (const AssertSafeCondition &a)
01502 {
01503 if (&a != this)
01504 ExpressionAssertion::operator = ( a );
01505
01506 return (*this);
01507 }
01508
01509 Listable *
01510 AssertSafeCondition::listable_clone() const
01511 {
01512 return (Listable *) new AssertSafeCondition( *this );
01513 }
01514
01515 Assertion *
01516 AssertSafeCondition::clone() const
01517 {
01518 return new AssertSafeCondition( *this );
01519 }
01520
01521
01522
01523 AssertOverlap::AssertOverlap()
01524 {
01525 _type = AS_OVERLAP;
01526 }
01527
01528 AssertOverlap::AssertOverlap(const AssertOverlap & a)
01529 {
01530 ARDAssertion::operator = ( a );
01531 }
01532
01533 AssertOverlap::~AssertOverlap()
01534 {
01535
01536 }
01537
01538 void
01539 AssertOverlap::print(ostream & o) const
01540 {
01541 o << "{ AS_OVERLAP (";
01542
01543 Iterator<AbstractAccess> iter = descr_list_guarded();
01544
01545 if (iter.valid()) {
01546 o << iter.current();
01547 for (++iter; iter.valid(); ++iter)
01548 o << ", " << iter.current();
01549 }
01550
01551 o << ") } ";
01552 }
01553
01554 AssertOverlap &
01555 AssertOverlap::operator = (const AssertOverlap &a)
01556 {
01557 if (&a != this)
01558 ARDAssertion::operator = ( a );
01559
01560 return (*this);
01561 }
01562
01563 Listable *
01564 AssertOverlap::listable_clone() const
01565 {
01566 return (Listable *) new AssertOverlap( *this );
01567 }
01568
01569 Assertion *
01570 AssertOverlap::clone() const
01571 {
01572 return new AssertOverlap( *this );
01573 }
01574
01575
01576
01577 AssertOverlapSort::AssertOverlapSort()
01578 {
01579 _type = AS_OVERLAP_SORT;
01580 }
01581
01582 AssertOverlapSort::AssertOverlapSort(const AssertOverlapSort & a)
01583 {
01584 ARDAssertion::operator = ( a );
01585 }
01586
01587 AssertOverlapSort::~AssertOverlapSort()
01588 {
01589
01590 }
01591
01592 void
01593 AssertOverlapSort::print(ostream & o) const
01594 {
01595 o << "{ AS_OVERLAP_SORT (";
01596
01597 Iterator<AbstractAccess> iter = descr_list_guarded();
01598
01599 if (iter.valid()) {
01600 o << iter.current();
01601 for (++iter; iter.valid(); ++iter)
01602 o << ", " << iter.current();
01603 }
01604
01605 o << ") } ";
01606 }
01607
01608 AssertOverlapSort &
01609 AssertOverlapSort::operator = (const AssertOverlapSort &a)
01610 {
01611 if (&a != this)
01612 ARDAssertion::operator = ( a );
01613
01614 return (*this);
01615 }
01616
01617 Listable *
01618 AssertOverlapSort::listable_clone() const
01619 {
01620 return (Listable *) new AssertOverlapSort( *this );
01621 }
01622
01623 Assertion *
01624 AssertOverlapSort::clone() const
01625 {
01626 return new AssertOverlapSort( *this );
01627 }
01628
01629
01630
01631 AssertPrivateDescr::AssertPrivateDescr()
01632 {
01633 _type = AS_PRIVATE_DESCR;
01634 }
01635
01636 AssertPrivateDescr::AssertPrivateDescr(const AssertPrivateDescr & a)
01637 {
01638 ARDAssertion::operator = ( a );
01639 }
01640
01641 AssertPrivateDescr::~AssertPrivateDescr()
01642 {
01643
01644 }
01645
01646 void
01647 AssertPrivateDescr::print(ostream & o) const
01648 {
01649 o << "{ AS_PRIVATE_DESCR (";
01650
01651 Iterator<AbstractAccess> iter = descr_list_guarded();
01652
01653 if (iter.valid()) {
01654 o << iter.current();
01655 for (++iter; iter.valid(); ++iter)
01656 o << ", " << iter.current();
01657 }
01658
01659 o << ") } ";
01660 }
01661
01662 AssertPrivateDescr &
01663 AssertPrivateDescr::operator = (const AssertPrivateDescr &a)
01664 {
01665 if (&a != this)
01666 ARDAssertion::operator = ( a );
01667
01668 return (*this);
01669 }
01670
01671 Listable *
01672 AssertPrivateDescr::listable_clone() const
01673 {
01674 return (Listable *) new AssertPrivateDescr( *this );
01675 }
01676
01677 Assertion *
01678 AssertPrivateDescr::clone() const
01679 {
01680 return new AssertPrivateDescr( *this );
01681 }
01682
01683
01684
01685 AssertTestMonotone::AssertTestMonotone()
01686 {
01687 _type = AS_TEST_MONOTONE;
01688 }
01689
01690 AssertTestMonotone::AssertTestMonotone(const AssertTestMonotone & a)
01691 {
01692 ARDAssertion::operator = ( a );
01693 }
01694
01695 AssertTestMonotone::~AssertTestMonotone()
01696 {
01697
01698 }
01699
01700 void
01701 AssertTestMonotone::print(ostream & o) const
01702 {
01703 o << "{ AS_TEST_MONOTONE (";
01704
01705 Iterator<AbstractAccess> iter = descr_list_guarded();
01706
01707 if (iter.valid()) {
01708 o << iter.current();
01709 for (++iter; iter.valid(); ++iter)
01710 o << ", " << iter.current();
01711 }
01712
01713 o << ") } ";
01714 }
01715
01716 AssertTestMonotone &
01717 AssertTestMonotone::operator = (const AssertTestMonotone &a)
01718 {
01719 if (&a != this)
01720 ARDAssertion::operator = ( a );
01721
01722 return (*this);
01723 }
01724
01725 Listable *
01726 AssertTestMonotone::listable_clone() const
01727 {
01728 return (Listable *) new AssertTestMonotone( *this );
01729 }
01730
01731 Assertion *
01732 AssertTestMonotone::clone() const
01733 {
01734 return new AssertTestMonotone( *this );
01735 }
01736
01737
01738
01739 AssertReductDescr::AssertReductDescr()
01740 {
01741 _type = AS_REDUCT_DESCR;
01742 }
01743
01744 AssertReductDescr::AssertReductDescr(const AssertReductDescr & a)
01745 {
01746 ARDAssertion::operator = ( a );
01747 }
01748
01749 AssertReductDescr::~AssertReductDescr()
01750 {
01751
01752 }
01753
01754 void
01755 AssertReductDescr::print(ostream & o) const
01756 {
01757 o << "{ AS_REDUCT_DESCR (";
01758
01759 Iterator<AbstractAccess> iter = descr_list_guarded();
01760
01761 if (iter.valid()) {
01762 o << iter.current();
01763 for (++iter; iter.valid(); ++iter)
01764 o << ", " << iter.current();
01765 }
01766
01767 o << ") } ";
01768 }
01769
01770 AssertReductDescr &
01771 AssertReductDescr::operator = (const AssertReductDescr &a)
01772 {
01773 if (&a != this)
01774 ARDAssertion::operator = ( a );
01775
01776 return (*this);
01777 }
01778
01779 Listable *
01780 AssertReductDescr::listable_clone() const
01781 {
01782 return (Listable *) new AssertReductDescr( *this );
01783 }
01784
01785 Assertion *
01786 AssertReductDescr::clone() const
01787 {
01788 return new AssertReductDescr( *this );
01789 }
01790
01791
01792
01793 AssertDepROvsRW::AssertDepROvsRW()
01794 {
01795 _type = AS_DEP_RO_RW;
01796 }
01797
01798 AssertDepROvsRW::AssertDepROvsRW(const AssertDepROvsRW & a)
01799 {
01800 ARDAssertion::operator = ( a );
01801 }
01802
01803 AssertDepROvsRW::~AssertDepROvsRW()
01804 {
01805
01806 }
01807
01808 void
01809 AssertDepROvsRW::print(ostream & o) const
01810 {
01811 o << "{ AS_DEP_RO_RW (";
01812
01813 Iterator<AbstractAccess> iter = descr_list_guarded();
01814
01815 if (iter.valid()) {
01816 o << iter.current();
01817 for (++iter; iter.valid(); ++iter)
01818 o << ", " << iter.current();
01819 }
01820
01821 o << ") } ";
01822 }
01823
01824 AssertDepROvsRW &
01825 AssertDepROvsRW::operator = (const AssertDepROvsRW &a)
01826 {
01827 if (&a != this)
01828 ARDAssertion::operator = ( a );
01829
01830 return (*this);
01831 }
01832
01833 Listable *
01834 AssertDepROvsRW::listable_clone() const
01835 {
01836 return (Listable *) new AssertDepROvsRW( *this );
01837 }
01838
01839 Assertion *
01840 AssertDepROvsRW::clone() const
01841 {
01842 return new AssertDepROvsRW( *this );
01843 }
01844
01845
01846
01847 AssertDepRWvsWF::AssertDepRWvsWF()
01848 {
01849 _type = AS_DEP_RW_WF;
01850 }
01851
01852 AssertDepRWvsWF::AssertDepRWvsWF(const AssertDepRWvsWF & a)
01853 {
01854 ARDAssertion::operator = ( a );
01855 }
01856
01857 AssertDepRWvsWF::~AssertDepRWvsWF()
01858 {
01859
01860 }
01861
01862 void
01863 AssertDepRWvsWF::print(ostream & o) const
01864 {
01865 o << "{ AS_DEP_RW_WF (";
01866
01867 Iterator<AbstractAccess> iter = descr_list_guarded();
01868
01869 if (iter.valid()) {
01870 o << iter.current();
01871 for (++iter; iter.valid(); ++iter)
01872 o << ", " << iter.current();
01873 }
01874
01875 o << ") } ";
01876 }
01877
01878 AssertDepRWvsWF &
01879 AssertDepRWvsWF::operator = (const AssertDepRWvsWF &a)
01880 {
01881 if (&a != this)
01882 ARDAssertion::operator = ( a );
01883
01884 return (*this);
01885 }
01886
01887 Listable *
01888 AssertDepRWvsWF::listable_clone() const
01889 {
01890 return (Listable *) new AssertDepRWvsWF( *this );
01891 }
01892
01893 Assertion *
01894 AssertDepRWvsWF::clone() const
01895 {
01896 return new AssertDepRWvsWF( *this );
01897 }
01898
01899
01900
01901 AssertDepWFvsRO::AssertDepWFvsRO()
01902 {
01903 _type = AS_DEP_WF_RO;
01904 }
01905
01906 AssertDepWFvsRO::AssertDepWFvsRO(const AssertDepWFvsRO & a)
01907 {
01908 ARDAssertion::operator = ( a );
01909 }
01910
01911 AssertDepWFvsRO::~AssertDepWFvsRO()
01912 {
01913
01914 }
01915
01916 void
01917 AssertDepWFvsRO::print(ostream & o) const
01918 {
01919 o << "{ AS_DEP_WF_RO (";
01920
01921 Iterator<AbstractAccess> iter = descr_list_guarded();
01922
01923 if (iter.valid()) {
01924 o << iter.current();
01925 for (++iter; iter.valid(); ++iter)
01926 o << ", " << iter.current();
01927 }
01928
01929 o << ") } ";
01930 }
01931
01932 AssertDepWFvsRO &
01933 AssertDepWFvsRO::operator = (const AssertDepWFvsRO &a)
01934 {
01935 if (&a != this)
01936 ARDAssertion::operator = ( a );
01937
01938 return (*this);
01939 }
01940
01941 Listable *
01942 AssertDepWFvsRO::listable_clone() const
01943 {
01944 return (Listable *) new AssertDepWFvsRO( *this );
01945 }
01946
01947 Assertion *
01948 AssertDepWFvsRO::clone() const
01949 {
01950 return new AssertDepWFvsRO( *this );
01951 }
01952
01953
01954
01955 AssertDepOverlap::AssertDepOverlap()
01956 {
01957 _type = AS_DEP_OVERLAP;
01958 }
01959
01960 AssertDepOverlap::AssertDepOverlap(const AssertDepOverlap & a)
01961 {
01962 ARDAssertion::operator = ( a );
01963 }
01964
01965 AssertDepOverlap::~AssertDepOverlap()
01966 {
01967
01968 }
01969
01970 void
01971 AssertDepOverlap::print(ostream & o) const
01972 {
01973 o << "{ AS_DEP_OVERLAP (";
01974
01975 Iterator<AbstractAccess> iter = descr_list_guarded();
01976
01977 if (iter.valid()) {
01978 o << iter.current();
01979 for (++iter; iter.valid(); ++iter)
01980 o << ", " << iter.current();
01981 }
01982
01983 o << ") } ";
01984 }
01985
01986 AssertDepOverlap &
01987 AssertDepOverlap::operator = (const AssertDepOverlap &a)
01988 {
01989 if (&a != this)
01990 ARDAssertion::operator = ( a );
01991
01992 return (*this);
01993 }
01994
01995 Listable *
01996 AssertDepOverlap::listable_clone() const
01997 {
01998 return (Listable *) new AssertDepOverlap( *this );
01999 }
02000
02001 Assertion *
02002 AssertDepOverlap::clone() const
02003 {
02004 return new AssertDepOverlap( *this );
02005 }
02006
02007
02008
02009 AssertInstrument::AssertInstrument()
02010 {
02011 _type = AS_INSTRUMENT;
02012 }
02013
02014 AssertInstrument::AssertInstrument(const AssertInstrument & a)
02015 {
02016 ExpressionAssertion::operator = ( a );
02017 }
02018
02019 AssertInstrument::~AssertInstrument()
02020 {
02021
02022 }
02023
02024 void
02025 AssertInstrument::print(ostream & o) const
02026 {
02027 o << "{ AS_INSTRUMENT ";
02028
02029 Iterator<Expression> iter = arg_list_guarded();
02030
02031 if (iter.valid()) {
02032 o << iter.current();
02033 for (++iter; iter.valid(); ++iter)
02034 o << ", " << iter.current();
02035 }
02036
02037 o << " } ";
02038 }
02039
02040 AssertInstrument &
02041 AssertInstrument::operator = (const AssertInstrument &a)
02042 {
02043 if (&a != this)
02044 ExpressionAssertion::operator = ( a );
02045
02046 return (*this);
02047 }
02048
02049 Listable *
02050 AssertInstrument::listable_clone() const
02051 {
02052 return (Listable *) new AssertInstrument( *this );
02053 }
02054
02055 Assertion *
02056 AssertInstrument::clone() const
02057 {
02058 return new AssertInstrument( *this );
02059 }
02060
02061
02062
02063 AssertFirstValue::AssertFirstValue()
02064 {
02065 _type = AS_FIRSTVALUE;
02066 }
02067
02068 AssertFirstValue::AssertFirstValue(const AssertFirstValue & a)
02069 {
02070 ExpressionAssertion::operator = ( a );
02071 }
02072
02073 AssertFirstValue::~AssertFirstValue()
02074 {
02075
02076 }
02077
02078 void
02079 AssertFirstValue::print(ostream & o) const
02080 {
02081 o << "{ AS_FIRSTVALUE ";
02082
02083 Iterator<Expression> iter = arg_list_guarded();
02084
02085 if (iter.valid()) {
02086 o << iter.current();
02087 for (++iter; iter.valid(); ++iter)
02088 o << ", " << iter.current();
02089 }
02090
02091 o << "} ";
02092 }
02093
02094 AssertFirstValue &
02095 AssertFirstValue::operator = (const AssertFirstValue &a)
02096 {
02097 if (&a != this)
02098 ExpressionAssertion::operator = ( a );
02099
02100 return (*this);
02101 }
02102
02103 Listable *
02104 AssertFirstValue::listable_clone() const
02105 {
02106 return (Listable *) new AssertFirstValue( *this );
02107 }
02108
02109 Assertion *
02110 AssertFirstValue::clone() const
02111 {
02112 return new AssertFirstValue( *this );
02113 }
02114
02115
02116
02117 AssertRangeWritten::AssertRangeWritten()
02118 {
02119 _type = AS_RANGEWRITTEN;
02120 }
02121
02122 AssertRangeWritten::AssertRangeWritten(const AssertRangeWritten & a)
02123 {
02124 ExpressionAssertion::operator = ( a );
02125 }
02126
02127 AssertRangeWritten::~AssertRangeWritten()
02128 {
02129
02130 }
02131
02132 void
02133 AssertRangeWritten::print(ostream & o) const
02134 {
02135 o << "{ AS_RANGEWRITTEN ";
02136
02137 Iterator<Expression> iter = arg_list_guarded();
02138
02139 if (iter.valid()) {
02140 o << iter.current();
02141 for (++iter; iter.valid(); ++iter)
02142 o << ", " << iter.current();
02143 }
02144
02145 o << "} ";
02146 }
02147
02148 AssertRangeWritten &
02149 AssertRangeWritten::operator = (const AssertRangeWritten &a)
02150 {
02151 if (&a != this)
02152 ExpressionAssertion::operator = ( a );
02153
02154 return (*this);
02155 }
02156
02157 Listable *
02158 AssertRangeWritten::listable_clone() const
02159 {
02160 return (Listable *) new AssertRangeWritten( *this );
02161 }
02162
02163 Assertion *
02164 AssertRangeWritten::clone() const
02165 {
02166 return new AssertRangeWritten( *this );
02167 }
02168
02169
02170
02171 AssertPrivateRefs::AssertPrivateRefs()
02172 {
02173 _type = AS_PRIVATEREFS;
02174 }
02175
02176 AssertPrivateRefs::AssertPrivateRefs(const AssertPrivateRefs & a)
02177 {
02178 ExpressionAssertion::operator = ( a );
02179 }
02180
02181 AssertPrivateRefs::~AssertPrivateRefs()
02182 {
02183
02184 }
02185
02186 void
02187 AssertPrivateRefs::print(ostream & o) const
02188 {
02189 o << "{ AS_PRIVATEREFS ";
02190
02191 Iterator<Expression> iter = arg_list_guarded();
02192
02193 if (iter.valid()) {
02194 o << iter.current();
02195 for (++iter; iter.valid(); ++iter) {
02196 o << ", " << iter.current();
02197 }
02198 }
02199
02200 o << " } ";
02201 }
02202
02203 AssertPrivateRefs &
02204 AssertPrivateRefs::operator = (const AssertPrivateRefs &a)
02205 {
02206 if (&a != this)
02207 ExpressionAssertion::operator = ( a );
02208
02209 return (*this);
02210 }
02211
02212 Listable *
02213 AssertPrivateRefs::listable_clone() const
02214 {
02215 return (Listable *) new AssertPrivateRefs( *this );
02216 }
02217
02218 Assertion *
02219 AssertPrivateRefs::clone() const
02220 {
02221 return new AssertPrivateRefs( *this );
02222 }
02223
02224
02225
02226 AssertReadOnlyRefs::AssertReadOnlyRefs()
02227 {
02228 _type = AS_READONLYREFS;
02229 }
02230
02231 AssertReadOnlyRefs::AssertReadOnlyRefs(const AssertReadOnlyRefs & a)
02232 {
02233 ExpressionAssertion::operator = ( a );
02234 }
02235
02236 AssertReadOnlyRefs::~AssertReadOnlyRefs()
02237 {
02238
02239 }
02240
02241 void
02242 AssertReadOnlyRefs::print(ostream & o) const
02243 {
02244 o << "{ AS_READONLYREFS ";
02245
02246 Iterator<Expression> iter = arg_list_guarded();
02247
02248 if (iter.valid()) {
02249 o << iter.current();
02250 for (++iter; iter.valid(); ++iter) {
02251 o << ", " << iter.current();
02252 }
02253 }
02254
02255 o << " } ";
02256 }
02257
02258 AssertReadOnlyRefs &
02259 AssertReadOnlyRefs::operator = (const AssertReadOnlyRefs &a)
02260 {
02261 if (&a != this)
02262 ExpressionAssertion::operator = ( a );
02263
02264 return (*this);
02265 }
02266
02267 Listable *
02268 AssertReadOnlyRefs::listable_clone() const
02269 {
02270 return (Listable *) new AssertReadOnlyRefs( *this );
02271 }
02272
02273 Assertion *
02274 AssertReadOnlyRefs::clone() const
02275 {
02276 return new AssertReadOnlyRefs( *this );
02277 }
02278
02279
02280
02281 AssertSharedRefs::AssertSharedRefs()
02282 {
02283 _type = AS_SHAREDREFS;
02284 }
02285
02286 AssertSharedRefs::AssertSharedRefs(const AssertSharedRefs & a)
02287 {
02288 ExpressionAssertion::operator = ( a );
02289 }
02290
02291 AssertSharedRefs::~AssertSharedRefs()
02292 {
02293
02294 }
02295
02296 void
02297 AssertSharedRefs::print(ostream & o) const
02298 {
02299 o << "{ AS_SHAREDREFS ";
02300
02301 Iterator<Expression> iter = arg_list_guarded();
02302
02303 if (iter.valid()) {
02304 o << iter.current();
02305 for (++iter; iter.valid(); ++iter) {
02306 o << ", " << iter.current();
02307 }
02308 }
02309
02310 o << " } ";
02311 }
02312
02313 AssertSharedRefs &
02314 AssertSharedRefs::operator = (const AssertSharedRefs &a)
02315 {
02316 if (&a != this)
02317 ExpressionAssertion::operator = ( a );
02318
02319 return (*this);
02320 }
02321
02322 Listable *
02323 AssertSharedRefs::listable_clone() const
02324 {
02325 return (Listable *) new AssertSharedRefs( *this );
02326 }
02327
02328 Assertion *
02329 AssertSharedRefs::clone() const
02330 {
02331 return new AssertSharedRefs( *this );
02332 }
02333
02334
02335
02336 AssertRTShadow::AssertRTShadow()
02337 {
02338 _type = AS_RTSHADOW;
02339 }
02340
02341 AssertRTShadow::AssertRTShadow(const AssertRTShadow & a)
02342 {
02343 ExpressionAssertion::operator = ( a );
02344 }
02345
02346 AssertRTShadow::~AssertRTShadow()
02347 {
02348
02349 }
02350
02351 void
02352 AssertRTShadow::print(ostream & o) const
02353 {
02354 o << "{ AS_RTSHADOW ";
02355
02356 Iterator<Expression> iter = arg_list_guarded();
02357
02358 if (iter.valid()) {
02359 o << iter.current();
02360 for (++iter; iter.valid(); ++iter)
02361 o << ", " << iter.current();
02362 }
02363
02364 o << " } ";
02365 }
02366
02367 AssertRTShadow &
02368 AssertRTShadow::operator = (const AssertRTShadow &a)
02369 {
02370 if (&a != this)
02371 ExpressionAssertion::operator = ( a );
02372
02373 return (*this);
02374 }
02375
02376 Listable *
02377 AssertRTShadow::listable_clone() const
02378 {
02379 return (Listable *) new AssertRTShadow( *this );
02380 }
02381
02382 Assertion *
02383 AssertRTShadow::clone() const
02384 {
02385 return new AssertRTShadow( *this );
02386 }
02387
02388
02389
02390 AssertDepIO::AssertDepIO()
02391 {
02392 _type = AS_DEP_IO;
02393 }
02394
02395 AssertDepIO::AssertDepIO(const AssertDepIO & a)
02396 {
02397 ExpressionAssertion::operator = ( a );
02398 }
02399
02400 AssertDepIO::~AssertDepIO()
02401 {
02402
02403 }
02404
02405 void
02406 AssertDepIO::print(ostream & o) const
02407 {
02408 o << "{ AS_DEP_IO ";
02409
02410 Iterator<Expression> iter = arg_list_guarded();
02411
02412 if (iter.valid()) {
02413 o << iter.current();
02414 for (++iter; iter.valid(); ++iter)
02415 o << ", " << iter.current();
02416 }
02417
02418 o << " } ";
02419 }
02420
02421 AssertDepIO &
02422 AssertDepIO::operator = (const AssertDepIO &a)
02423 {
02424 if (&a != this)
02425 ExpressionAssertion::operator = ( a );
02426
02427 return (*this);
02428 }
02429
02430 Listable *
02431 AssertDepIO::listable_clone() const
02432 {
02433 return (Listable *) new AssertDepIO( *this );
02434 }
02435
02436 Assertion *
02437 AssertDepIO::clone() const
02438 {
02439 return new AssertDepIO( *this );
02440 }
02441
02442
02443
02444 AssertInline::AssertInline()
02445 {
02446 _type = AS_INLINE;
02447 }
02448
02449 AssertInline::AssertInline(const AssertInline & a)
02450 {
02451 ExpressionAssertion::operator = ( a );
02452 }
02453
02454 AssertInline::~AssertInline()
02455 {
02456
02457 }
02458
02459 void
02460 AssertInline::print(ostream & o) const
02461 {
02462 o << "{ AS_INLINE ";
02463
02464 Iterator<Expression> iter = arg_list_guarded();
02465
02466 if (iter.valid()) {
02467 o << iter.current();
02468 for (++iter; iter.valid(); ++iter)
02469 o << ", " << iter.current();
02470 }
02471
02472 o << " } ";
02473 }
02474
02475 AssertInline &
02476 AssertInline::operator = (const AssertInline &a)
02477 {
02478 if (&a != this)
02479 ExpressionAssertion::operator = ( a );
02480
02481 return (*this);
02482 }
02483
02484 Listable *
02485 AssertInline::listable_clone() const
02486 {
02487 return (Listable *) new AssertInline( *this );
02488 }
02489
02490 Assertion *
02491 AssertInline::clone() const
02492 {
02493 return new AssertInline( *this );
02494 }
02495
02496
02497
02498 AssertRecursiveInline::AssertRecursiveInline()
02499 {
02500 _type = AS_RECURSIVEINLINE;
02501 }
02502
02503 AssertRecursiveInline::AssertRecursiveInline(const AssertRecursiveInline & a)
02504 {
02505 ExpressionAssertion::operator = ( a );
02506 }
02507
02508 AssertRecursiveInline::~AssertRecursiveInline()
02509 {
02510
02511 }
02512
02513 void
02514 AssertRecursiveInline::print(ostream & o) const
02515 {
02516 o << "{ AS_RECURSIVEINLINE ";
02517
02518 Iterator<Expression> iter = arg_list_guarded();
02519
02520 if (iter.valid()) {
02521 o << iter.current();
02522 for (++iter; iter.valid(); ++iter)
02523 o << ", " << iter.current();
02524 }
02525
02526 o << " } ";
02527 }
02528
02529 AssertRecursiveInline &
02530 AssertRecursiveInline::operator = (const AssertRecursiveInline &a)
02531 {
02532 if (&a != this)
02533 ExpressionAssertion::operator = ( a );
02534
02535 return (*this);
02536 }
02537
02538 Listable *
02539 AssertRecursiveInline::listable_clone() const
02540 {
02541 return (Listable *) new AssertRecursiveInline( *this );
02542 }
02543
02544 Assertion *
02545 AssertRecursiveInline::clone() const
02546 {
02547 return new AssertRecursiveInline( *this );
02548 }
02549
02550
02551
02552 AssertNoInline::AssertNoInline()
02553 {
02554 _type = AS_NOINLINE;
02555 }
02556
02557 AssertNoInline::AssertNoInline(const AssertNoInline & a)
02558 {
02559 ExpressionAssertion::operator = ( a );
02560 }
02561
02562 AssertNoInline::~AssertNoInline()
02563 {
02564
02565 }
02566
02567 void
02568 AssertNoInline::print(ostream & o) const
02569 {
02570 o << "{ AS_NOINLINE ";
02571
02572 Iterator<Expression> iter = arg_list_guarded();
02573
02574 if (iter.valid()) {
02575 o << iter.current();
02576 for (++iter; iter.valid(); ++iter)
02577 o << ", " << iter.current();
02578 }
02579
02580 o << " } ";
02581 }
02582
02583 AssertNoInline &
02584 AssertNoInline::operator = (const AssertNoInline &a)
02585 {
02586 if (&a != this)
02587 ExpressionAssertion::operator = ( a );
02588
02589 return (*this);
02590 }
02591
02592 Listable *
02593 AssertNoInline::listable_clone() const
02594 {
02595 return (Listable *) new AssertNoInline( *this );
02596 }
02597
02598 Assertion *
02599 AssertNoInline::clone() const
02600 {
02601 return new AssertNoInline( *this );
02602 }
02603
02604
02605
02606 AssertNoPutGet::AssertNoPutGet()
02607 {
02608 _type = AS_NOPUTGET;
02609 }
02610
02611 AssertNoPutGet::AssertNoPutGet(const AssertNoPutGet & a)
02612 {
02613 ExpressionAssertion::operator = ( a );
02614 }
02615
02616 AssertNoPutGet::~AssertNoPutGet()
02617 {
02618
02619 }
02620
02621 void
02622 AssertNoPutGet::print(ostream & o) const
02623 {
02624 o << "{ AS_NOPUTGET ";
02625
02626 Iterator<Expression> iter = arg_list_guarded();
02627
02628 if (iter.valid()) {
02629 o << iter.current();
02630 for (++iter; iter.valid(); ++iter)
02631 o << ", " << iter.current();
02632 }
02633
02634 o << " } ";
02635 }
02636
02637 AssertNoPutGet &
02638 AssertNoPutGet::operator = (const AssertNoPutGet &a)
02639 {
02640 if (&a != this)
02641 ExpressionAssertion::operator = ( a );
02642
02643 return (*this);
02644 }
02645
02646 Listable *
02647 AssertNoPutGet::listable_clone() const
02648 {
02649 return (Listable *) new AssertNoPutGet( *this );
02650 }
02651
02652 Assertion *
02653 AssertNoPutGet::clone() const
02654 {
02655 return new AssertNoPutGet( *this );
02656 }
02657
02658
02659
02660 AssertRunTimeTest::AssertRunTimeTest()
02661 {
02662 _type = AS_RUNTIMETEST;
02663 }
02664
02665 AssertRunTimeTest::AssertRunTimeTest(const AssertRunTimeTest & a)
02666 {
02667 ExpressionAssertion::operator = ( a );
02668 }
02669
02670 AssertRunTimeTest::~AssertRunTimeTest()
02671 {
02672
02673 }
02674
02675 void
02676 AssertRunTimeTest::print(ostream & o) const
02677 {
02678 o << "{ AS_RUNTIMETEST ";
02679
02680 Iterator<Expression> iter = arg_list_guarded();
02681
02682 if (iter.valid()) {
02683 o << iter.current();
02684 for (++iter; iter.valid(); ++iter)
02685 o << ", " << iter.current();
02686 }
02687
02688 o << " } ";
02689 }
02690
02691 AssertRunTimeTest &
02692 AssertRunTimeTest::operator = (const AssertRunTimeTest &a)
02693 {
02694 if (&a != this)
02695 ExpressionAssertion::operator = ( a );
02696
02697 return (*this);
02698 }
02699
02700 Listable *
02701 AssertRunTimeTest::listable_clone() const
02702 {
02703 return (Listable *) new AssertRunTimeTest( *this );
02704 }
02705
02706 Assertion *
02707 AssertRunTimeTest::clone() const
02708 {
02709 return new AssertRunTimeTest( *this );
02710 }
02711
02712
02713
02714 AssertSideEffectFree::AssertSideEffectFree()
02715 {
02716 _type = AS_SIDE_EFFECT_FREE;
02717 }
02718
02719 AssertSideEffectFree::AssertSideEffectFree(const AssertSideEffectFree & a)
02720 {
02721 ExpressionAssertion::operator = ( a );
02722 }
02723
02724 AssertSideEffectFree::~AssertSideEffectFree()
02725 {
02726
02727 }
02728
02729 void
02730 AssertSideEffectFree::print(ostream & o) const
02731 {
02732 o << "{ AS_SIDE_EFFECT_FREE ";
02733
02734 Iterator<Expression> iter = arg_list_guarded();
02735
02736 if (iter.valid()) {
02737 o << iter.current();
02738 for (++iter; iter.valid(); ++iter)
02739 o << ", " << iter.current();
02740 }
02741
02742 o << " } ";
02743 }
02744
02745 AssertSideEffectFree &
02746 AssertSideEffectFree::operator = (const AssertSideEffectFree &a)
02747 {
02748 if (&a != this)
02749 ExpressionAssertion::operator = ( a );
02750
02751 return (*this);
02752 }
02753
02754 Listable *
02755 AssertSideEffectFree::listable_clone() const
02756 {
02757 return (Listable *) new AssertSideEffectFree( *this );
02758 }
02759
02760 Assertion *
02761 AssertSideEffectFree::clone() const
02762 {
02763 return new AssertSideEffectFree( *this );
02764 }
02765
02766
02767
02768 AssertNoDependence::AssertNoDependence()
02769 {
02770 _type = AS_NODEPENDENCE;
02771 }
02772
02773 AssertNoDependence::AssertNoDependence(const AssertNoDependence & a)
02774 {
02775 ExpressionAssertion::operator = ( a );
02776 }
02777
02778 AssertNoDependence::~AssertNoDependence()
02779 {
02780
02781 }
02782
02783 void
02784 AssertNoDependence::print(ostream & o) const
02785 {
02786 o << "{ AS_NODEPENDENCE ";
02787
02788 Iterator<Expression> iter = arg_list_guarded();
02789
02790 if (iter.valid()) {
02791 o << iter.current();
02792 for (++iter; iter.valid(); ++iter)
02793 o << ", " << iter.current();
02794 }
02795
02796 o << " } ";
02797 }
02798
02799 AssertNoDependence &
02800 AssertNoDependence::operator = (const AssertNoDependence &a)
02801 {
02802 if (&a != this)
02803 ExpressionAssertion::operator = ( a );
02804
02805 return (*this);
02806 }
02807
02808 Listable *
02809 AssertNoDependence::listable_clone() const
02810 {
02811 return (Listable *) new AssertNoDependence( *this );
02812 }
02813
02814 Assertion *
02815 AssertNoDependence::clone() const
02816 {
02817 return new AssertNoDependence( *this );
02818 }
02819
02820
02821
02822 AssertPreamble::AssertPreamble()
02823 {
02824 _type = AS_PREAMBLE;
02825 }
02826
02827 AssertPreamble::AssertPreamble(const AssertPreamble & a)
02828 {
02829 ExpressionAssertion::operator = ( a );
02830 }
02831
02832 AssertPreamble::~AssertPreamble()
02833 {
02834
02835 }
02836
02837 void
02838 AssertPreamble::print(ostream & o) const
02839 {
02840 o << "{ AS_PREAMBLE ";
02841
02842 Iterator<Expression> iter = arg_list_guarded();
02843
02844 if (iter.valid()) {
02845 o << iter.current();
02846 for (++iter; iter.valid(); ++iter)
02847 o << ", " << iter.current();
02848 }
02849
02850 o << "} ";
02851 }
02852
02853
02854 AssertPreamble &
02855 AssertPreamble::operator = (const AssertPreamble &a)
02856 {
02857 if (&a != this)
02858 ExpressionAssertion::operator = ( a );
02859
02860 return (*this);
02861 }
02862
02863 Listable *
02864 AssertPreamble::listable_clone() const
02865 {
02866 return (Listable *) new AssertPreamble( *this );
02867 }
02868
02869 Assertion *
02870 AssertPreamble::clone() const
02871 {
02872 return new AssertPreamble( *this );
02873 }
02874
02875
02876 AssertPostamble::AssertPostamble()
02877 {
02878 _type = AS_POSTAMBLE;
02879 }
02880
02881 AssertPostamble::AssertPostamble(const AssertPostamble & a)
02882 {
02883 ExpressionAssertion::operator = ( a );
02884 }
02885
02886 AssertPostamble::~AssertPostamble()
02887 {
02888
02889 }
02890
02891 void
02892 AssertPostamble::print(ostream & o) const
02893 {
02894 o << "{ AS_POSTAMBLE ";
02895
02896 Iterator<Expression> iter = arg_list_guarded();
02897
02898 if (iter.valid()) {
02899 o << iter.current();
02900 for (++iter; iter.valid(); ++iter)
02901 o << ", " << iter.current();
02902 }
02903
02904 o << "} ";
02905 }
02906
02907
02908 AssertPostamble &
02909 AssertPostamble::operator = (const AssertPostamble &a)
02910 {
02911 if (&a != this)
02912 ExpressionAssertion::operator = ( a );
02913
02914 return (*this);
02915 }
02916
02917 Listable *
02918 AssertPostamble::listable_clone() const
02919 {
02920 return (Listable *) new AssertPostamble( *this );
02921 }
02922
02923 Assertion *
02924 AssertPostamble::clone() const
02925 {
02926 return new AssertPostamble( *this );
02927 }
02928
02929
02930
02931 AssertInduction::AssertInduction()
02932 {
02933 _type = AS_INDUCTION;
02934 }
02935
02936 AssertInduction::AssertInduction(const AssertInduction & a)
02937 {
02938 ExpressionAssertion::operator = ( a );
02939 }
02940
02941 AssertInduction::~AssertInduction()
02942 {
02943
02944 }
02945
02946 void
02947 AssertInduction::print(ostream & o) const
02948 {
02949 o << "{ AS_INDUCTION ";
02950
02951 Iterator<Expression> iter = arg_list_guarded();
02952
02953 if (iter.valid()) {
02954 o << "IV:" << iter.current();
02955 ++iter;
02956 }
02957 if (iter.valid()) {
02958 o << ", TYPE:" << iter.current();
02959 ++iter;
02960 }
02961 if (iter.valid()) {
02962 o << ", LO:" << iter.current();
02963 ++iter;
02964 }
02965 if (iter.valid()) {
02966 o << ", HI:" << iter.current();
02967 ++iter;
02968 }
02969 if (iter.valid()) {
02970 o << ", HDR:" << iter.current();
02971 ++iter;
02972 }
02973 if (iter.valid()) {
02974 o << ", EXPR:" << iter.current();
02975 ++iter;
02976 }
02977
02978 o << " } ";
02979 }
02980
02981 AssertInduction &
02982 AssertInduction::operator = (const AssertInduction &a)
02983 {
02984 if (&a != this)
02985 ExpressionAssertion::operator = ( a );
02986
02987 return (*this);
02988 }
02989
02990 Listable *
02991 AssertInduction::listable_clone() const
02992 {
02993 return (Listable *) new AssertInduction( *this );
02994 }
02995
02996 Assertion *
02997 AssertInduction::clone() const
02998 {
02999 return new AssertInduction( *this );
03000 }
03001
03002
03003
03004 AssertParallelCondition::AssertParallelCondition()
03005 {
03006 _type = AS_PARCONDITION;
03007 }
03008
03009 AssertParallelCondition::AssertParallelCondition(const AssertParallelCondition & a)
03010 {
03011 ExpressionAssertion::operator = ( a );
03012 }
03013
03014 AssertParallelCondition::~AssertParallelCondition()
03015 {
03016
03017 }
03018
03019 void
03020 AssertParallelCondition::print(ostream & o) const
03021 {
03022 o << "{ AS_PARCONDITION ";
03023
03024 Iterator<Expression> iter = arg_list_guarded();
03025
03026 if (iter.valid()) {
03027 o << "Boolean Expression:" << iter.current();
03028 }
03029 o << " } ";
03030 }
03031
03032 AssertParallelCondition &
03033 AssertParallelCondition::operator = (const AssertParallelCondition &a)
03034 {
03035 if (&a != this)
03036 ExpressionAssertion::operator = ( a );
03037
03038 return (*this);
03039 }
03040
03041 Listable *
03042 AssertParallelCondition::listable_clone() const
03043 {
03044 return (Listable *) new AssertParallelCondition( *this );
03045 }
03046
03047 Assertion *
03048 AssertParallelCondition::clone() const
03049 {
03050 return new AssertParallelCondition( *this );
03051 }
03052
03053
03054
03055 AssertMayMod::AssertMayMod()
03056 {
03057 _type = AS_MAYMOD;
03058 }
03059
03060 AssertMayMod::AssertMayMod(const AssertMayMod & a)
03061 {
03062 ExpressionAssertion::operator = ( a );
03063 }
03064
03065 AssertMayMod::~AssertMayMod()
03066 {
03067
03068 }
03069
03070 void
03071 AssertMayMod::print(ostream & o) const
03072 {
03073 o << "{ AS_MAYMOD ";
03074
03075 Iterator<Expression> iter = arg_list_guarded();
03076
03077 if (iter.valid()) {
03078 o << iter.current();
03079 for (++iter; iter.valid(); ++iter) {
03080 o << ", " << iter.current();
03081 }
03082 }
03083
03084 o << " } ";
03085 }
03086
03087 AssertMayMod &
03088 AssertMayMod::operator = (const AssertMayMod &a)
03089 {
03090 if (&a != this)
03091 ExpressionAssertion::operator = ( a );
03092
03093 return (*this);
03094 }
03095
03096 Listable *
03097 AssertMayMod::listable_clone() const
03098 {
03099 return (Listable *) new AssertMayMod( *this );
03100 }
03101
03102 Assertion *
03103 AssertMayMod::clone() const
03104 {
03105 return new AssertMayMod( *this );
03106 }
03107
03108
03109 AssertNoMod::AssertNoMod()
03110 {
03111 _type = AS_NOMOD;
03112 }
03113
03114 AssertNoMod::AssertNoMod(const AssertNoMod & a)
03115 {
03116 ExpressionAssertion::operator = ( a );
03117 }
03118
03119 AssertNoMod::~AssertNoMod()
03120 {
03121
03122 }
03123
03124 void
03125 AssertNoMod::print(ostream & o) const
03126 {
03127 o << "{ AS_NOMOD ";
03128
03129 Iterator<Expression> iter = arg_list_guarded();
03130
03131 if (iter.valid()) {
03132 o << iter.current();
03133 for (++iter; iter.valid(); ++iter) {
03134 o << ", " << iter.current();
03135 }
03136 }
03137
03138 o << " } ";
03139 }
03140
03141 AssertNoMod &
03142 AssertNoMod::operator = (const AssertNoMod &a)
03143 {
03144 if (&a != this)
03145 ExpressionAssertion::operator = ( a );
03146
03147 return (*this);
03148 }
03149
03150 Listable *
03151 AssertNoMod::listable_clone() const
03152 {
03153 return (Listable *) new AssertNoMod( *this );
03154 }
03155
03156 Assertion *
03157 AssertNoMod::clone() const
03158 {
03159 return new AssertNoMod( *this );
03160 }
03161
03162
03163
03164 AssertUnknownShared::AssertUnknownShared()
03165 {
03166 _type = AS_UNKNOWN_SHARED;
03167 }
03168
03169 AssertUnknownShared::AssertUnknownShared(const AssertUnknownShared & a)
03170 {
03171 ExpressionAssertion::operator = ( a );
03172 }
03173
03174 AssertUnknownShared::~AssertUnknownShared()
03175 {
03176
03177 }
03178
03179 void
03180 AssertUnknownShared::print(ostream & o) const
03181 {
03182 o << "{ AS_UNKNOWN_SHARED ";
03183
03184 Iterator<Expression> iter = arg_list_guarded();
03185
03186 if (iter.valid()) {
03187 o << iter.current();
03188 for (++iter; iter.valid(); ++iter)
03189 o << ", " << iter.current();
03190 }
03191
03192 o << " } ";
03193 }
03194
03195 AssertUnknownShared &
03196 AssertUnknownShared::operator = (const AssertUnknownShared &a)
03197 {
03198 if (&a != this)
03199 ExpressionAssertion::operator = ( a );
03200
03201 return (*this);
03202 }
03203
03204 Listable *
03205 AssertUnknownShared::listable_clone() const
03206 {
03207 return (Listable *) new AssertUnknownShared( *this );
03208 }
03209
03210 Assertion *
03211 AssertUnknownShared::clone() const
03212 {
03213 return new AssertUnknownShared( *this );
03214 }
03215
03216
03217
03218 AssertForward::AssertForward()
03219 {
03220 _type = AS_FORWARD;
03221 }
03222
03223 AssertForward::AssertForward(const AssertForward & a)
03224 {
03225 ExpressionAssertion::operator = ( a );
03226 }
03227
03228 AssertForward::~AssertForward()
03229 {
03230
03231 }
03232
03233 void
03234 AssertForward::print(ostream & o) const
03235 {
03236 o << "{ AS_FORWARD ";
03237
03238 Iterator<Expression> iter = arg_list_guarded();
03239
03240 if (iter.valid()) {
03241 o << iter.current();
03242 for (++iter; iter.valid(); ++iter)
03243 o << ", " << iter.current();
03244 }
03245
03246 o << "} ";
03247 }
03248
03249 AssertForward &
03250 AssertForward::operator = (const AssertForward &a)
03251 {
03252 if (&a != this)
03253 ExpressionAssertion::operator = ( a );
03254
03255 return (*this);
03256 }
03257
03258 Listable *
03259 AssertForward::listable_clone() const
03260 {
03261 return (Listable *) new AssertForward( *this );
03262 }
03263
03264 Assertion *
03265 AssertForward::clone() const
03266 {
03267 return new AssertForward( *this );
03268 }
03269
03270
03271
03272
03273
03274
03275 AssertNoWait::AssertNoWait() {
03276 _type = AS_NOWAIT;
03277 }
03278
03279 AssertNoWait::AssertNoWait(const AssertNoWait & a) {
03280 ExpressionAssertion::operator = ( a );
03281 }
03282
03283 AssertNoWait::~AssertNoWait() {
03284
03285 }
03286
03287 void
03288 AssertNoWait::print(ostream & o) const {
03289 o << "{ AS_NOWAIT (";
03290
03291 Iterator<Expression> iter = arg_list_guarded();
03292
03293 if (iter.valid()) {
03294 o << iter.current();
03295 for (++iter; iter.valid(); ++iter)
03296 o << ", " << iter.current();
03297 }
03298 o << ") } ";
03299 }
03300
03301 AssertNoWait &
03302 AssertNoWait::operator = (const AssertNoWait &a) {
03303 if (&a != this)
03304 ExpressionAssertion::operator = ( a );
03305
03306 return (*this);
03307 }
03308
03309 Listable *
03310 AssertNoWait::listable_clone() const {
03311 return (Listable *) new AssertNoWait( *this );
03312 }
03313
03314 Assertion *
03315 AssertNoWait::clone() const {
03316 return new AssertNoWait( *this );
03317 }
03318
03319