qrailway 0.9

cListe.h

gehe zur Dokumentation dieser Datei
00001 #ifndef CLISTE_H
00002 #define CLISTE_H
00003 
00004 #include "cConstants.h"
00005 //#include <math.h>
00006 #include <qdatetime.h>
00007 #include <qlist.h>
00008 #include <qfile.h>
00009 #include <qtextstream.h>
00010 #include <qstring.h>
00011 
00013 class cListenEintrag
00014 {
00015  public:
00017   cListenEintrag() {
00018     nummer=0;
00019     listenid=0;
00020     richtung=0;
00021     eintragstyp='R';
00022     weichenrichtung=dirFehler; // undefined
00023     parsed=TRUE;
00024   }
00026   cListenEintrag(int listenidT,QString unparsedT) {
00027     nummer=0;
00028     listenid=listenidT;
00029     listensubid=0;
00030     richtung=0;
00031     weichenrichtung=dirFehler;
00032     eintragstyp='U';
00033     parsed=FALSE;
00034     unparsed=unparsedT;
00035   }
00037   cListenEintrag(int listenidT,int listensubidT,int nummerT) {
00038     nummer=nummerT;
00039     listenid=listenidT;
00040     listensubid=listensubidT;
00041     richtung=0;
00042     weichenrichtung=dirFehler;
00043     eintragstyp='R';
00044     parsed=TRUE;
00045     unparsed=QString("Reed");
00046   }
00048   cListenEintrag(int listenidT,int listensubidT,int nummerT,QString weichenRichtungT) {
00049     nummer=nummerT;
00050     listenid=listenidT;
00051     listensubid=listensubidT;
00052     richtung=0;
00053     weichenrichtung=weichenRichtungT;
00054     eintragstyp='W';
00055     parsed=TRUE;
00056     unparsed=QString("Weiche");
00057   }
00059   cListenEintrag(int listenidT,int listensubidT,int nummerT,QString weichenRichtungT,QString unparsedT) {
00060     nummer=nummerT;
00061     listenid=listenidT;
00062     listensubid=listensubidT;
00063     richtung=0;
00064     weichenrichtung=weichenRichtungT;
00065     eintragstyp='W';
00066     parsed=TRUE;
00067     unparsed=unparsedT;
00068   }
00070   void cDebug(int prioritaet,const QString & meldung) {
00071       QString debugstring=QString(" cListenEintrag::");
00072       if (prioritaet==0) qWarning("%s",qPrintable(debugstring+meldung));
00073       if (prioritaet<=2) {
00074           QFile Debugdatei("log.cListe");
00075           if (!Debugdatei.open(QFile::Append|QFile::WriteOnly)) {
00076               cerr << "\"log.cListe\" konnte nicht geoeffnet werden!" << endl;
00077               return;
00078           }
00079           QTextStream Debugstream(&Debugdatei);
00080           QDateTime zeitdebug=QDateTime::currentDateTime();
00081       Debugstream << zeitdebug.toString("hh:mm:ss.zzz") << " " << debugstring+meldung << endl;
00082       Debugstream.flush();Debugdatei.close();
00083       }
00084   }
00086   void anzeigen(void) {
00087     cDebug(2,"anzeigen "+QString::number(listenid)+"."+QString::number(listensubid)+":"+unparsed);
00088   }
00090   bool operator>( const cListenEintrag &anderer ) const { 
00091     if (anderer.listenid<listenid) return(TRUE);
00092     if (anderer.listenid>listenid) return(FALSE);
00093     if (anderer.listensubid<listensubid) return(TRUE);
00094     return(FALSE);
00095   }
00097   bool operator<=( const cListenEintrag &anderer ) const { 
00098     if (anderer.listenid>listenid) return(TRUE);
00099     if (anderer.listenid<listenid) return(FALSE);
00100     if (anderer.listensubid>=listensubid) return(TRUE);
00101     return(FALSE);
00102   }
00104   bool operator<( const cListenEintrag &anderer ) const { 
00105     if (anderer.listenid>listenid) return(TRUE);
00106     if (anderer.listenid<listenid) return(FALSE);
00107     if (anderer.listensubid>listensubid) return(TRUE);
00108     return(FALSE);
00109   }
00111   int listenid;      
00113   int listensubid;   
00115   bool parsed;
00117   QString unparsed;  
00119   int nummer;      
00121   int richtung;      
00123   QString weichenrichtung; 
00125   char eintragstyp;
00126 };
00127 
00129 
00130 class cListe 
00131 {
00132 public:
00134   void cDebug(int prioritaet,const QString & meldung);
00135 
00137   cListe(void);
00139   ~cListe(void);
00140 
00142   int getMaxBefehlsNr(void);
00143 
00145   void entferneBefehl(int n);
00146 
00148   void setBezeichnung(const QString & bezeichnungT);
00149 
00151   QString getBezeichnung(void) { return(bezeichnung); };
00152 
00154   void anhaengenBefehlUnparsed(int befehlid, QString befehl);
00155   bool setBahnhofParsed(int bahnhofsnrtmp);
00156 
00158   void einfuegenReedSubBefehl(cListenEintrag parentbefehl,int listensubid, int reedid);
00159 
00161     void einfuegenWeichenSubBefehl(cListenEintrag parentbefehl,int listensubid, int weichenid,QString weichenRichtung);
00162     void einfuegenWWeichenSubBefehl(cListenEintrag parentbefehl,int listensubid, int weichenid,QString weichenRichtung);
00163 
00164   // sortiert die Liste
00165   //void sortieren(void);
00166 
00168   int anzahlBefehle(void);
00169 
00171   int einfuegen(cListenEintrag befehl);
00172 
00174   void zeigBefehle(void);
00175 
00177   cListenEintrag getAktuellerBefehl(int i=0);
00178 
00180   bool setAktuellerBefehl(int i,cListenEintrag eintrag,bool idgeaendert=TRUE);
00181 
00183   cListenEintrag getBefehl(int i);
00184 
00186   bool setBefehl(int i,cListenEintrag eintrag,bool idgeaendert=TRUE);
00187 
00189   int naechsterBefehl(void);
00190 
00192   void start(void);
00193 
00194  private:
00196   typedef QList<cListenEintrag> ListenTyp;
00197 
00199   ListenTyp Liste;
00200 
00202   int position;
00203 
00205   QString bezeichnung;
00206 
00207 };
00208 
00209 #endif // CLISTE_H