Browse Source

fixed compiler issues on trie iterator

Kolja Strohm 3 years ago
parent
commit
242061cd6f
3 changed files with 38 additions and 30 deletions
  1. 21 13
      Trie.h
  2. 1 1
      UIInitialization.cpp
  3. 16 16
      UIInitialization.h

+ 21 - 13
Trie.h

@@ -39,7 +39,7 @@ namespace Framework
             delete parent;
         }
 
-        TrieIteratorData &operator=( TrieIteratorData &data )
+        TrieIteratorData &operator=( const TrieIteratorData &data )
         {
             map = data.map;
             TrieIteratorData *tmp = parent;
@@ -73,29 +73,37 @@ namespace Framework
 
         TrieIterator next()
         {
-            Trie<T> *n = 0;
-            for( int i = 0; i < 256; i++ )
+            for( unsigned char i = 0; true; i++ )
             {
                 if( data.map->z( i ) )
                     return TrieIterator( TrieIteratorData<T>( data.map->z( i )->map, data ) );
+                if( i == 255 )
+                    break;
             }
             if( !data.parent || !data.parent->map )
                 return TrieIterator( TrieIteratorData<T>( 0, TrieIteratorData<T>() ) );
             TrieIteratorData<T> d = data;
             do
             {
-                for( int i = 0; i < 256; i++ )
+                for( unsigned char i = 0; true; i++ )
                 {
                     if( d.parent->map->z( i ) && d.parent->map->z( i )->map == d.map )
                     {
-                        for( int j = i + 1; j < 256; j++ )
+                        if( i < 256 )
                         {
-                            if( d.parent->map->z( j ) )
-                                return TrieIterator( TrieIteratorData<T>( d.parent->map->z( j )->map, *d.parent ) );
+                            for( unsigned char j = (unsigned char)( i + 1 ); true; j++ )
+                            {
+                                if( d.parent->map->z( j ) )
+                                    return TrieIterator( TrieIteratorData<T>( d.parent->map->z( j )->map, *d.parent ) );
+                                if( j == 255 )
+                                    break;
+                            }
                         }
                         d = *d.parent;
                         break;
                     }
+                    if( i == 255 )
+                        break;
                 }
             } while( d.parent && d.parent->map );
             return TrieIterator( TrieIteratorData<T>( 0, TrieIteratorData<T>() ) );
@@ -103,15 +111,15 @@ namespace Framework
 
         TrieIterator< T > &operator++() //! prefix
         {
-            TrieIterator< T > temp( *this );
-            *this = next();
-            return temp;
+            data = next().data;
+            return *this;
         }
 
-        TrieIterator< T > &operator++( int ) //! postfix
+        TrieIterator< T > operator++( int ) //! postfix
         {
-            *this = next();
-            return *this;
+            TrieIterator< T > temp( *this );
+            data = next().data;
+            return temp;
         }
 
         operator bool()

+ 1 - 1
UIInitialization.cpp

@@ -161,7 +161,7 @@ LDiag *createLDiag( UIInitParam &p )
     ret->setDatenRahmenBreite( 1 );
     ret->setDatenRahmenFarbe( 0xFFFFFFFF );
     ret->setHintergrundFarbe( 0xFF000000 );
-    ret->setHintergrundFarbe( 0xFF000000 );
+    ret->setDatenHintergrundFarbe( 0xFF000000 );
     return ret;
 }
 

+ 16 - 16
UIInitialization.h

@@ -34,22 +34,22 @@ namespace Framework
     struct UIInit
     {
         UIInitParam initParam;
-        std::function< AuswahlBox*( UIInitParam &p ) > createAuswahlBox;
-        std::function< AuswahlListe*( UIInitParam &p ) > createAuswahlListe;
-        std::function< BildZ*( UIInitParam &p ) > createBildZ;
-        std::function< FBalken*( UIInitParam &p ) > createFBalken;
-        std::function< Kamera2D*( UIInitParam &p ) > createKamera2D;
-        std::function< Fenster*( UIInitParam &p ) > createFenster;
-        std::function< Knopf*( UIInitParam &p ) > createKnopf;
-        std::function< KontrollKnopf*( UIInitParam &p ) > createKontrollKnopf;
-        std::function< LDiag*( UIInitParam &p ) > createLDiag;
-        std::function< M2DVorschau*( UIInitParam &p ) > createM2DVorschau;
-        std::function< Model2D*( UIInitParam &p ) > createModel2D;
-        std::function< Animation2D*( UIInitParam &p ) > createAnimation2D;
-        std::function< TextFeld*( UIInitParam &p ) > createTextFeld;
-        std::function< ObjTabelle*( UIInitParam &p ) > createObjTabelle;
-        std::function< SLDiag*( UIInitParam &p ) > createSLDiag;
-        std::function< UIMLView*( UIInitParam &p ) > createUIMLView;
+        std::function< AuswahlBox *( UIInitParam &p ) > createAuswahlBox;
+        std::function< AuswahlListe *( UIInitParam &p ) > createAuswahlListe;
+        std::function< BildZ *( UIInitParam &p ) > createBildZ;
+        std::function< FBalken *( UIInitParam &p ) > createFBalken;
+        std::function< Kamera2D *( UIInitParam &p ) > createKamera2D;
+        std::function< Fenster *( UIInitParam &p ) > createFenster;
+        std::function< Knopf *( UIInitParam &p ) > createKnopf;
+        std::function< KontrollKnopf *( UIInitParam &p ) > createKontrollKnopf;
+        std::function< LDiag *( UIInitParam &p ) > createLDiag;
+        std::function< M2DVorschau *( UIInitParam &p ) > createM2DVorschau;
+        std::function< Model2D *( UIInitParam &p ) > createModel2D;
+        std::function< Animation2D *( UIInitParam &p ) > createAnimation2D;
+        std::function< TextFeld *( UIInitParam &p ) > createTextFeld;
+        std::function< ObjTabelle *( UIInitParam &p ) > createObjTabelle;
+        std::function< SLDiag *( UIInitParam &p ) > createSLDiag;
+        std::function< UIMLView *( UIInitParam &p ) > createUIMLView;
     };
 
     //! gibt eine liste mit default initialisierungsfunktionen zurück