Disk ARchive  2.7.14
Full featured and portable backup and archiving tool
erreurs_ext.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 ERREURS_EXT_HPP
27 #define ERREURS_EXT_HPP
28 
29 #include "erreurs.hpp"
30 #include "infinint.hpp"
31 
32 namespace libdar
33 {
34 
37 
38 
40 
42  {
43  public :
44  Ethread_cancel_with_attr(bool now, U_64 x_flag, const infinint & attr);
45  Ethread_cancel_with_attr(const Ethread_cancel_with_attr & ref): Ethread_cancel(ref) { copy_from(ref); };
46  Ethread_cancel_with_attr(Ethread_cancel_with_attr && ref) noexcept : Ethread_cancel(std::move(ref)) { x_attr = nullptr; std::swap(x_attr, ref.x_attr); };
47  Ethread_cancel_with_attr & operator = (const Ethread_cancel_with_attr & ref) { detruit(); copy_from(ref); return *this; };
48  Ethread_cancel_with_attr & operator = (Ethread_cancel_with_attr && ref) noexcept;
49  ~Ethread_cancel_with_attr() { detruit(); };
50 
51  const infinint get_attr() const { return *x_attr; };
52 
53  private :
54  // infinint may throw Ebug exception from destructor.
55  // Having a field of type infinint lead this class
56  // to have a default destructor throwing Ebug too
57  // which implies Egeneric to have the same which
58  // makes circular dependency as Ebug cannot be defined
59  // before Egeneric. Here is the reason why we use a infinint* here
60  infinint *x_attr;
61 
62  void detruit();
63  void copy_from(const Ethread_cancel_with_attr & ref);
64  };
65 
67 
68 } // end of namespace
69 
70 #endif
Ethread_cancel with infinint attribute.
Definition: erreurs_ext.hpp:42
exception used when the thread libdar is running in is asked to stop
Definition: erreurs.hpp:383
the arbitrary large positive integer class
contains all the excetion class thrown by libdar
switch module to limitint (32 ou 64 bits integers) or infinint
libdar namespace encapsulate all libdar symbols
Definition: archive.hpp:47