Disk ARchive 2.7.16
Full featured and portable backup and archiving tool
Loading...
Searching...
No Matches
archive_options5.hpp
Go to the documentation of this file.
1/*********************************************************************/
2// dar - disk archive - a backup/restoration program
3// Copyright (C) 2002-2024 Denis Corbin
4//
5// This program is free software; you can redistribute it and/or
6// modify it under the terms of the GNU General Public License
7// as published by the Free Software Foundation; either version 2
8// of the License, or (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program; if not, write to the Free Software
17// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18//
19// to contact the author, see the AUTHOR file
20/*********************************************************************/
21
25
26#ifndef ARCHIVE_OPTIONS5_HPP
27#define ARCHIVE_OPTIONS5_HPP
28
29#include "archive_options.hpp"
31
32namespace libdar5
33{
34
35 // ///////////////////////////////////////////////////////
36 // //////////// OPTIONS FOR OPENNING AN ARCHIVE //////////
37 // ///////////////////////////////////////////////////////
38
41
42 using libdar::entrepot;
43
44 class archive_options_read: public libdar::archive_options_read
45 {
46 public:
47 void set_entrepot(const entrepot & entr)
48 {
49 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
50 if(!tmp)
51 throw Ememory("libdar5::archive_options_create::set_entrepot");
53 }
54
55 void set_ref_entrepot(const entrepot & entr)
56 {
57 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
58 if(!tmp)
59 throw Ememory("libdar5::archive_options_create::set_ref_entrepot");
61 }
62 };
63
64
65 // ///////////////////////////////////////////////////////
66 // /////// OPTIONS FOR CREATING AN ARCHIVE ///////////////
67 // ///////////////////////////////////////////////////////
68
69 class archive_options_create: public libdar::archive_options_create
70 {
71 public:
72 using libdar::archive_options_create::archive_options_create;
73
75
89 void set_reference(libdar::archive *ref_arch)
90 {
92 std::shared_ptr<libdar::archive>(ref_arch,
93 [](libdar::archive* ptr) {} )
94 // the custom deleter must not delete the object pointed to by
95 // by ref, this is why it does nothing
96 );
97 };
98
99 void set_entrepot(const entrepot & entr)
100 {
101 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
102 if(!tmp)
103 throw Ememory("libdar5::archive_options_create::set_entrepot");
105 }
106
107 };
108
109 // ///////////////////////////////////////////////////////
110 // ////////// OPTIONS FOR ISOLATING A CATALOGUE //////////
111 // ///////////////////////////////////////////////////////
112
113
114 class archive_options_isolate: public libdar::archive_options_isolate
115 {
116 void set_entrepot(const entrepot & entr)
117 {
118 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
119 if(!tmp)
120 throw Ememory("libdar5::archive_options_create::set_entrepot");
122 }
123 };
124
125 // ///////////////////////////////////////////////////////
126 // //////// OPTONS FOR MERGING ARCHIVES //////////////////
127 // ///////////////////////////////////////////////////////
128
129 class archive_options_merge: public libdar::archive_options_merge
130 {
131 public:
132
133 using libdar::archive_options_merge::archive_options_merge;
134
135 void set_auxilliary_ref(libdar::archive *ref)
136 {
137 libdar::archive_options_merge::set_auxiliary_ref(
138 std::shared_ptr<libdar::archive>(ref,
139 [](libdar::archive* ptr) {})
140 // the custom deleter must not delete the object pointed to by
141 // by ref, this is why it does nothing
142 );
143 };
144
145 void set_entrepot(const entrepot & entr)
146 {
147 std::shared_ptr<libdar::entrepot> tmp(entr.clone());
148 if(!tmp)
149 throw Ememory("libdar5::archive_options_create::set_entrepot");
151 }
152 };
153
154
155 // ///////////////////////////////////////////////////////
156 // //////// OPTONS FOR EXTRACTING FILES FROM ARCHIVE /////
157 // ///////////////////////////////////////////////////////
158
159 using libdar::archive_options_extract;
160
161
162 // ///////////////////////////////////////////////////////
163 // //////// OPTIONS FOR LISTING AN ARCHIVE ///////////////
164 // ///////////////////////////////////////////////////////
165
166 class archive_options_listing: public libdar::archive_options_listing_shell
167 {
168 public:
169 using libdar::archive_options_listing_shell::archive_options_listing_shell;
170 };
171
172
173 // ///////////////////////////////////////////////////////
174 // //////// OPTONS FOR DIFFING AN ARCHIVE ////////////////
175 // ///////////////////////////////////////////////////////
176
177 using libdar::archive_options_diff;
178
179
180 // ///////////////////////////////////////////////////////
181 // //////// OPTONS FOR TESTING AN ARCHIVE ////////////////
182 // ///////////////////////////////////////////////////////
183
184 using libdar::archive_options_test;
185
186
187 // ///////////////////////////////////////////////////////
188 // /////// OPTIONS FOR REPAIRING AN ARCHIVE //////////////
189 // ///////////////////////////////////////////////////////
190
191 using libdar::archive_options_repair;
192
194
195} // end of namespace
196
197#endif
this file contains a set of classes used to transmit options to archive operation
this file contains shell_interaction options class for listing
virtual entrepot * clone() const =0
generate a clone of "this"
void set_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use for slices
void set_reference(std::shared_ptr< archive > ref_arch)
set the archive to take as reference (nullptr for a full backup)
void set_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use for slices
void set_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use for slices
void set_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use to retrieve slices
void set_ref_entrepot(const std::shared_ptr< entrepot > &entr)
defines the protocol to use to retrieve slices of the reference archive (where the external catalogue...
libdar5 namespace encapsulate all libdar symbols
Definition archive5.hpp:37