Эх сурвалжийг харах

Use std::array to avoid raw ptrs

Paul 11 жил өмнө
parent
commit
96fa014de5

+ 6 - 6
QGearsMain/include/data/QGearsBackgroundFile.h

@@ -108,9 +108,9 @@ namespace QGears
 
         typedef PaletteFile::Color Color;
 
-        virtual Layer* getLayers ( void ) { return m_layers;  }
-        virtual uint8* getPalette( void ) { return m_palette; }
-        virtual Page*  getPages  ( void ) { return m_pages;   }
+        std::array<Layer, LAYER_COUNT>& getLayers(void) { return m_layers; }
+        std::array<uint8, PALETTE_ENTRY_COUNT>& getPalette(void) { return m_palette; }
+        std::array<Page, PAGE_COUNT>&  getPages(void) { return m_pages; }
 
         virtual Ogre::Image*        createImage     ( const PaletteFilePtr &palette ) const;
 
@@ -124,10 +124,10 @@ namespace QGears
         virtual size_t calculateSize( const Page  &page  ) const;
 
     private:
-        Layer m_layers [ LAYER_COUNT ];
-        uint8 m_palette[ PALETTE_ENTRY_COUNT ];
+        std::array<Layer, LAYER_COUNT> m_layers;
+        std::array<uint8, PALETTE_ENTRY_COUNT> m_palette;
 
-        Page m_pages[ PAGE_COUNT ];
+        std::array<Page, PAGE_COUNT> m_pages;
     };
 
     typedef Ogre::SharedPtr<BackgroundFile> BackgroundFilePtr;

+ 10 - 2
QGearsMain/src/data/QGearsBackgroundFile.cpp

@@ -64,8 +64,16 @@ namespace QGears
     void
     BackgroundFile::unloadImpl()
     {
-        memset( m_layers , 0, sizeof( m_layers  ) );
-        memset( m_palette, 0, sizeof( m_palette ) );
+        for (auto& layer : m_layers)
+        {
+            memset(&layer, 0, sizeof(layer));
+        }
+
+        for (auto& pal : m_palette)
+        {
+            memset(&pal, 0, sizeof(pal));
+        }
+
         for( size_t i(PAGE_COUNT); i--; )
         {
             m_pages[i].enabled = false;

+ 7 - 8
QGearsMain/src/data/QGearsBackgroundFileSerializer.cpp

@@ -105,7 +105,7 @@ namespace QGears
                                           ,BackgroundFile *pDest )
     {
         readSectionHeader( stream, SECTION_NAME_PALETTE );
-        stream->read( pDest->getPalette(), BackgroundFile::PALETTE_ENTRY_COUNT );
+        stream->read( pDest->getPalette().data(), BackgroundFile::PALETTE_ENTRY_COUNT );
     }
 
     //---------------------------------------------------------------------
@@ -114,15 +114,15 @@ namespace QGears
                                              ,BackgroundFile *pDest )
     {
         readSectionHeader( stream, SECTION_NAME_BACK );
-        Layer *layer( pDest->getLayers() );
-        for( size_t i( 0 ); i < BackgroundFile::LAYER_COUNT; ++i, ++layer )
+        auto& layers( pDest->getLayers() );
+        for( size_t i( 0 ); i < BackgroundFile::LAYER_COUNT; ++i )
         {
             if( i != 0 )
             {
-                read1ByteBool( stream, layer->enabled );
+                read1ByteBool( stream, layers[i].enabled );
             }
 
-            readLayer( stream, layer, i );
+            readLayer(stream, &layers[i], i);
         }
     }
 
@@ -186,10 +186,9 @@ namespace QGears
                                           ,BackgroundFile *pDest )
     {
         readSectionHeader( stream, SECTION_NAME_TEXTURE );
-        Page *pages( pDest->getPages() );
-        for( size_t i(0); i < BackgroundFile::PAGE_COUNT; ++i )
+        for (auto& page : pDest->getPages())
         {
-            readObject( stream, pages[i] );
+            readObject(stream, page);
         }
     }