Liste.cpp

gehe zur Dokumentation dieser Datei
00001 
00006 #include "Liste.h"
00007 
00014 ListenObjekt::ListenObjekt(){
00015         listenDaten_ = NULL;
00016 }
00017 
00018 
00027 ListenObjekt::ListenObjekt(ListenDaten *listenDaten){
00028         listenDaten_ = listenDaten;
00029 }
00030 
00031 
00040 ListenObjekt *ListenObjekt::gibNext(){
00041         return next_;
00042 }
00043 
00044 
00053 ListenObjekt *ListenObjekt::gibBefore(){
00054         return before_;
00055 }
00056 
00057 
00064 void ListenObjekt::setzeNext(ListenObjekt *next){
00065         next_ = next;
00066 }
00067 
00068 
00075 void ListenObjekt::setzeBefore(ListenObjekt *before){
00076         before_ = before;
00077 }
00078 
00079 
00088 ListenDaten *ListenObjekt::gibDaten(){
00089         return listenDaten_;
00090 }
00091 
00092 
00099 void ListenObjekt::setzeDaten(ListenDaten *listenDaten){
00100         listenDaten_ = listenDaten;
00101 }
00102 
00103 
00112 void ListenObjekt::takt(double zeitintervall){
00113         listenDaten_->takt(zeitintervall);
00114 }
00115 
00125 void ListenObjekt::exportieren( string dateiname ){
00126         try{
00127                 listenDaten_->exportieren( dateiname );
00128         }
00129         catch( Fehler *fehler ){
00130                 throw( fehler );
00131         }
00132 }
00133 
00134 
00145 ostream &operator<< ( ostream &os, ListenObjekt *listenObjekt ){
00146         os << listenObjekt->gibDaten();
00147     return os;
00148 }
00149 
00150 
00151 
00152 
00153 
00160 Liste::Liste( ){
00161         // Das Dummyelement erzeugen
00162         listenAnfang_ = new ListenObjekt( NULL );
00163         listenAnfang_->setzeNext(listenAnfang_);
00164         listenAnfang_->setzeBefore(listenAnfang_);
00165         aktuelleMaxId_ = 0;
00166         aktuellesObjekt_ = listenAnfang_;
00167 }
00168 
00178 void Liste::takt(double zeitintervall){
00179         ListenObjekt *tmpObjekt = listenAnfang_;
00180         ListenDaten *listenDaten(0);
00181         
00182         try{
00183                 while( tmpObjekt->gibNext()->gibDaten() != NULL ){
00184                         tmpObjekt = tmpObjekt->gibNext();
00185                         listenDaten = tmpObjekt->gibDaten();
00186                         if(listenDaten->sollEntferntWerden()){
00187                                 // tmpObjekt = tmpObjekt->gibBefore();
00188                                 listenDaten->aufraeumen();
00189                                 // datenEntfernen(listenDaten->gibId());
00190                                 // delete listenDaten;
00191                                 // belasse die Daten und takte sie nicht mehr an
00192                         }
00193                         else{
00194                                 tmpObjekt->takt(zeitintervall);
00195                         }
00196                 }
00197         }
00198         catch( Fehler *fehler ){
00199                 throw( fehler );
00200         }
00201 }
00202 
00212 void Liste::exportieren( string dateiname ){
00213         ListenObjekt *tmpObjekt = listenAnfang_;
00214         ListenDaten *listenDaten(0);
00215 
00216         while( tmpObjekt->gibNext()->gibDaten() != NULL ){
00217                 tmpObjekt = tmpObjekt->gibNext();
00218                 listenDaten = tmpObjekt->gibDaten();
00219                 try{
00220                         tmpObjekt->exportieren( dateiname );
00221                 }
00222                 catch( Fehler *fehler ){
00223                         throw( fehler );
00224                 }
00225         }
00226 }
00227 
00236 void Liste::datenHinzufuegen(ListenDaten *listenDaten){
00237         aktuelleMaxId_++;
00238         listenDaten->setzeId( aktuelleMaxId_ );
00239         // Ein neues Objekt anlegen
00240         ListenObjekt *neuesObjekt = new ListenObjekt(listenDaten);
00241         // Das angelegte Objekt in die Liste einflaechten
00242         neuesObjekt->setzeNext(listenAnfang_);
00243 
00244         neuesObjekt->setzeBefore(listenAnfang_->gibBefore());
00245         listenAnfang_->setzeBefore(neuesObjekt);
00246         neuesObjekt->gibBefore()->setzeNext(neuesObjekt);
00247 }
00248 
00249 
00258 void Liste::datenEntfernen(long int id){
00259         ListenObjekt *tmpObjekt = listenAnfang_;
00260         while( tmpObjekt->gibNext()->gibDaten() != NULL ){
00261                 tmpObjekt = tmpObjekt->gibNext();
00262                 // wenn das aktuelle Objekt das gesuchte ist
00263                 if( tmpObjekt->gibDaten()->gibId() == id ){
00264                         // Die Zeiger des Vorgaengers und Nachfolgers verbiegen und danach das aktuelle Objekt loeschen
00265                         tmpObjekt->gibBefore()->setzeNext(tmpObjekt->gibNext());
00266                         tmpObjekt->gibNext()->setzeBefore(tmpObjekt->gibBefore());
00267                         delete tmpObjekt;
00268                         return;
00269                 }
00270         }
00271 }
00272 
00279 void Liste::geheZuErsten(){
00280         aktuellesObjekt_ = listenAnfang_;
00281 }
00282 
00289 void Liste::geheZuNaechsten(){
00290         aktuellesObjekt_ = aktuellesObjekt_->gibNext();
00291 }
00292 
00301 bool Liste::istEnde(){
00302         if( aktuellesObjekt_->gibNext()->gibDaten() == 0 )
00303                 return 1;
00304         else
00305                 return 0;
00306 }
00307 
00316 ListenDaten *Liste::gibDaten(){
00317         return aktuellesObjekt_->gibDaten();
00318 }
00319 
00320 
00330 ostream &operator<< ( ostream &os, Liste *liste ){
00331         ListenObjekt *tmpObjekt = liste->listenAnfang_;
00332         os << "----------------Liste-----------------" << endl;
00333         while( tmpObjekt->gibNext()->gibDaten() != NULL ){
00334                 tmpObjekt = tmpObjekt->gibNext();
00335                 os << tmpObjekt;
00336         }       
00337         return os;
00338 }

Erzeugt am Tue Jun 14 18:36:50 2005 für TraffSpot von  doxygen 1.3.9.1