diff --git a/pub/src/commands.cpp b/pub/src/commands.cpp index f4248227106b405386634d0e7a7195bb71ad77cb..42b1a4bab06f3a1f2a9f84792ef227818f135e37 100644 --- a/pub/src/commands.cpp +++ b/pub/src/commands.cpp @@ -92,14 +92,15 @@ bool fridaCommand( string cmd ) } else if (cmd == "b") { cout << "Backup commands:\n" + " bc copy to online backup (automatically before cf)\n" " br retrieved from online backup\n" - " bs copy to online backup (automatically before cf)\n"; + ; - } else if (cmd == "br") { - NOlm::mem_retrieve(); + } else if (cmd == "bc") { + NOlm::mem_backup_store(); - } else if (cmd == "bs") { - NOlm::mem_backup(); + } else if (cmd == "br") { + NOlm::mem_backup_retrieve(); } else if (cmd == "c") { cout << "Curve and fit commands:\n" diff --git a/pub/src/curve.cpp b/pub/src/curve.cpp index 2abb9f7a1fcad407b3d5a11e697f44db15de5d32..13d3dffab740316f9f88db6cb618a38199b35663 100644 --- a/pub/src/curve.cpp +++ b/pub/src/curve.cpp @@ -836,6 +836,7 @@ void NCurveFile::Fit( bool _allow_slow_conv ) FitDatTyp data; allow_slow_conv = _allow_slow_conv; + NOlm::mem_backup_store(); NOlm::IterateC fiter; while ( POlc fc = fiter() ) { diff --git a/pub/src/mem.cpp b/pub/src/mem.cpp index 94abd93fcda2f9b24f7e473e84935b3446cc86ee..fd22dc3eab2c7ac32617f8481e916533e490fdbb 100644 --- a/pub/src/mem.cpp +++ b/pub/src/mem.cpp @@ -24,6 +24,7 @@ namespace NOlm { vector<POlo> MOM; + vector<POlo> BAK; bool overwrite; CList FSel, FSelOld, FSelNew; }; @@ -325,15 +326,29 @@ namespace NOlm { namespace NOlm { //! Copy selected files to backup. - void mem_backup() + + void mem_backup_store() { - throw "not yet implemented"; + BAK.clear(); + IterateO fiter; + while ( POlo fin=fiter() ){ + POlo fout( fin->new_olo( false ) ); + fout->copy_mainvec( fin ); + BAK.push_back( fout ); + } } //! Retrieve files from backup. - void mem_retrieve() + void mem_backup_retrieve() { - throw "not yet implemented"; + if( !BAK.size() ) + throw "no files in backup"; + sel_collect_begin(); + for( uint kb=0; kb<BAK.size(); ++kb ){ + mem_store( BAK[kb], -1 ); + } + sel_collect_end(); + BAK.clear(); } } diff --git a/pub/src/mem.h b/pub/src/mem.h index 21a727173d2060c92683396edc13a749b062d7e1..5a351e4dc2e4fe1b2f2ebc4b6384ee207f22961c 100644 --- a/pub/src/mem.h +++ b/pub/src/mem.h @@ -38,8 +38,8 @@ namespace NOlm { void sel_increment( int step ); // Backup: - void mem_backup(); - void mem_retrieve(); + void mem_backup_store(); + void mem_backup_retrieve(); //! Iterate over all files in selection. class IterateO {