From 906d403ccbe54e6846f91e45153de7c26af88ef9 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (laptop)" <j.wuttke@fz-juelich.de> Date: Fri, 18 Jan 2013 09:36:19 +0100 Subject: [PATCH] basic backup implementation completed --- pub/src/commands.cpp | 11 ++++++----- pub/src/curve.cpp | 1 + pub/src/mem.cpp | 23 +++++++++++++++++++---- pub/src/mem.h | 4 ++-- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/pub/src/commands.cpp b/pub/src/commands.cpp index f4248227..42b1a4ba 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 2abb9f7a..13d3dffa 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 94abd93f..fd22dc3e 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 21a72717..5a351e4d 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 { -- GitLab