Disk ARchive  2.6.5
Full featured and portable backup and archiving tool
delta_sig_block_size.hpp
Go to the documentation of this file.
1 /*********************************************************************/
2 // dar - disk archive - a backup/restoration program
3 // Copyright (C) 2002-2019 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 : http://dar.linux.free.fr/email.html
20 /*********************************************************************/
21 
25 
26 #ifndef DELTA_SIG_BLOCK_SIZE_HPP
27 #define DELTA_SIG_BLOCK_SIZE_HPP
28 
29 #include "../my_config.h"
30 
31 extern "C"
32 {
33 } // end extern "C"
34 
35 #include "infinint.hpp"
36 
37 
38 namespace libdar
39 {
41 
44 
45 
47  {
50  {
53  log2,
56  };
57 
58  fs_function_t fs_function; //< the function to use to calculate the signature block len
63 
64  // definitions to help using the struct
65 
66  delta_sig_block_size() { reset(); };
67  delta_sig_block_size(const delta_sig_block_size & ref) = default;
68  delta_sig_block_size(delta_sig_block_size && ref) noexcept = default;
69  delta_sig_block_size & operator = (const delta_sig_block_size & ref) = default;
70  delta_sig_block_size & operator = (delta_sig_block_size && ref) noexcept = default;
71  ~delta_sig_block_size() = default;
72 
73  bool operator == (const delta_sig_block_size & ref) const;
74 
76  void reset();
77 
79  bool equals_default() { return (*this) == delta_sig_block_size(); };
80 
82  void check() const;
83 
85 
88  U_I calculate(const infinint & filesize) const;
89 
90  };
91 
92 
93 } // end of namespace
94 
95 #endif
bool equals_default()
whether structure has default values
U_I min_block_len
calculated block len will never be lower than that
void check() const
check the sanity of the provided values
defines how to calculate delta signature block size based of file size to delta sign ...
fs_function_t
defines the function to use to derivate block size from file size
U_I max_block_len
calculated block len will never be higer than that except if this field is set to zero (disabling thi...
void reset()
reset to default value
block size is proportional to log2(file size)
infinint divisor
function dependently used divisor
switch module to limitint (32 ou 64 bits integers) or infinint
block size is independant from file size
block size is proportional to filesize^2
the arbitrary large positive integer class
block size if proportionnal to file size
infinint multiplier
function dependently used multiplier
libdar namespace encapsulate all libdar symbols
Definition: archive.hpp:46
block size if proportional to filesize^3
U_I calculate(const infinint &filesize) const
calculate the value of the block size given the file size