Better copy constructor hierarchy
authorMikko Keinänen <mikko.keinanen@gmail.com>
Sat, 19 Jun 2010 12:33:26 +0000 (15:33 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Sat, 19 Jun 2010 12:33:26 +0000 (15:33 +0300)
src/dataobjects/emufrontfile.cpp
src/dataobjects/emufrontfile.h
src/dataobjects/emufrontobject.h
src/dataobjects/mediaimage.cpp
src/dataobjects/mediaimage.h
src/dataobjects/mediaimagecontainer.cpp

index f6ee835..dd68586 100644 (file)
@@ -26,6 +26,10 @@ EmuFrontFile::EmuFrontFile(int type) : EmuFrontObject(), type(type) { }
 EmuFrontFile::EmuFrontFile(int id, QString name, QString checksum, int size, int type)
    : EmuFrontObject(id, name), checkSum(checksum), size(size), type(type) { }
 
+EmuFrontFile::EmuFrontFile(EmuFrontFile &eff)
+    : EmuFrontObject(eff), checkSum(eff.checkSum), size(eff.size), type(eff.type)
+{}
+
 QString EmuFrontFile::getCheckSum() const
 { return checkSum; }
 
index 4b457ff..43d4517 100644 (file)
@@ -28,6 +28,7 @@ public:
     EmuFrontFile();
     EmuFrontFile(int type);
     EmuFrontFile(int id, QString name, QString checksum, int size, int type);
+    EmuFrontFile(EmuFrontFile &);
     QString getCheckSum() const;
     void setCheckSum(QString);
     int getSize() const;
index 97a589f..6b9c064 100644 (file)
@@ -28,7 +28,6 @@ public:
     EmuFrontObject();
     EmuFrontObject(int id, QString name);
 
-    // No need for these as long we use QString (see Implicit Data Sharing)
     EmuFrontObject(const EmuFrontObject &);
     ~EmuFrontObject();
     EmuFrontObject &operator=(const EmuFrontObject &);
index 87ab431..0ec8f62 100644 (file)
@@ -31,4 +31,7 @@ MediaImage::MediaImage(QString name, QString checksum, int size)
     : EmuFrontFile(-1, name, checksum, size, EmuFrontFile::FileType_MediaImage)
 { }
 
+MediaImage::MediaImage(MediaImage &mi)
+    : EmuFrontFile(mi) {}
+
 
index 6ca418f..712958f 100644 (file)
@@ -28,6 +28,7 @@ public:
     MediaImage();
     MediaImage(QString name, QString checksum, int size);
     MediaImage(int id, QString name, QString checksum, int size);
+    MediaImage(MediaImage&);
 };
 
 #endif // MEDIAIMAGE_H
index e4b2db9..ce9c267 100644 (file)
@@ -26,16 +26,12 @@ MediaImageContainer::MediaImageContainer()
 }
 
 MediaImageContainer::MediaImageContainer(int id, QString name, QString checksum, int size, QList<MediaImage *>images)
-    : EmuFrontFile(id, name, checksum, size, EmuFrontFile::FileType_MediaImageContainer)
-{
-    lstMediaImage = QList<MediaImage*>();
-}
+    : EmuFrontFile(id, name, checksum, size, EmuFrontFile::FileType_MediaImageContainer), lstMediaImage(images)
+{ }
 
 MediaImageContainer::MediaImageContainer(QString name, QString checksum, int size, QList<MediaImage *>images)
-    : EmuFrontFile(-1, name, checksum, size, EmuFrontFile::FileType_MediaImageContainer)
-{
-    lstMediaImage = QList<MediaImage*>();
-}
+    : EmuFrontFile(-1, name, checksum, size, EmuFrontFile::FileType_MediaImageContainer), lstMediaImage(images)
+{ }
 
 MediaImageContainer::~MediaImageContainer()
 {
@@ -43,11 +39,11 @@ MediaImageContainer::~MediaImageContainer()
 }
 
 MediaImageContainer::MediaImageContainer(MediaImageContainer &mic)
-    : EmuFrontFile(mic.id, mic.name, mic.checkSum, mic.size, mic.type)
+    : EmuFrontFile(mic)
 {
     lstMediaImage = QList<MediaImage*>();
     foreach(MediaImage *mi, mic.lstMediaImage)
-        lstMediaImage.append(new MediaImage(mi));
+        lstMediaImage.append(new MediaImage(*mi));
 }
 
 MediaImageContainer& MediaImageContainer::operator =(MediaImageContainer &mic)
@@ -59,8 +55,8 @@ MediaImageContainer& MediaImageContainer::operator =(MediaImageContainer &mic)
     checkSum = mic.checkSum;
     size = mic.size;
     qDeleteAll(lstMediaImage);
-    foreach(MediaImage *mi, mic)
-        lstMediaImage.append(new MediaImage(mi));
+    foreach(MediaImage *mi, mic.lstMediaImage)
+        lstMediaImage.append(new MediaImage(*mi));
     return (*this);
 }