diff --git a/aegisub/src/ass_dialogue.cpp b/aegisub/src/ass_dialogue.cpp index 49a49a0c7..504ce9fbd 100644 --- a/aegisub/src/ass_dialogue.cpp +++ b/aegisub/src/ass_dialogue.cpp @@ -33,8 +33,6 @@ /// @brief Class for dialogue lines in subtitles /// @ingroup subs_storage -//////////// -// Includes #include "config.h" #ifndef AGI_PRE @@ -66,7 +64,8 @@ AssDialogue::AssDialogue() } AssDialogue::AssDialogue(AssDialogue const& that) -: Comment(that.Comment) +: AssEntry() +, Comment(that.Comment) , Layer(that.Layer) , Start(that.Start) , End(that.End) diff --git a/aegisub/src/ass_file.cpp b/aegisub/src/ass_file.cpp index dff7b4d6e..1bd3050e0 100644 --- a/aegisub/src/ass_file.cpp +++ b/aegisub/src/ass_file.cpp @@ -36,6 +36,7 @@ #include "config.h" #ifndef AGI_PRE +#include #include #include @@ -276,7 +277,7 @@ bool AssFile::CanSave() { // I strongly advice you against touching this function unless you know what you're doing; // even moving things out of order might break ASS parsing - AMZ. -void AssFile::AddLine (wxString data,wxString group,int &version,wxString *outGroup) { +void AssFile::AddLine(wxString data,wxString group,int &version,wxString *outGroup) { // Group AssEntry *entry = NULL; wxString origGroup = group; @@ -450,18 +451,18 @@ void AssFile::LoadDefault (bool defline) { loaded = true; } -AssFile::AssFile (AssFile &from) { - using std::list; - - // Copy standard variables +AssFile::AssFile (const AssFile &from) { filename = from.filename; loaded = from.loaded; Modified = from.Modified; - - // Copy lines - for (list::iterator cur=from.Line.begin();cur!=from.Line.end();cur++) { - Line.push_back((*cur)->Clone()); - } + std::transform(from.Line.begin(), from.Line.end(), std::back_inserter(Line), std::mem_fun(&AssEntry::Clone)); +} +AssFile& AssFile::operator=(AssFile from) { + filename = from.filename; + loaded = from.loaded; + Modified = from.Modified; + std::swap(Line, from.Line); + return *this; } void AssFile::InsertStyle (AssStyle *style) { diff --git a/aegisub/src/ass_file.h b/aegisub/src/ass_file.h index bbc02073e..4457ba226 100644 --- a/aegisub/src/ass_file.h +++ b/aegisub/src/ass_file.h @@ -90,7 +90,8 @@ public: bool loaded; AssFile(); - AssFile(AssFile &from); + AssFile(const AssFile &from); + AssFile& operator=(AssFile from); ~AssFile(); /// Does the file have unsaved changes?