Disk ARchive
2.8.5
Full featured and portable backup and archiving tool
Toggle main menu visibility
Loading...
Searching...
No Matches
src
libdar
elastic.hpp
Go to the documentation of this file.
1
/*********************************************************************/
2
// dar - disk archive - a backup/restoration program
3
// Copyright (C) 2002-2026 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 ELASTIC_HPP
27
#define ELASTIC_HPP
28
29
#include "
../my_config.h
"
30
31
#include "
integers.hpp
"
32
#include "
infinint.hpp
"
33
#include "
generic_file.hpp
"
34
#include "
archive_version.hpp
"
35
36
namespace
libdar
37
{
38
41
42
44
enum
elastic_direction
{ elastic_forward, elastic_backward };
45
47
51
class
elastic
52
{
53
public
:
54
elastic(U_32 size);
55
elastic(
const
unsigned
char
*buffer, U_32 size,
elastic_direction
dir,
const
archive_version
& reading_ver);
56
elastic(
generic_file
&f,
elastic_direction
dir,
const
archive_version
& reading_ver);
57
elastic(
const
elastic & ref) =
default
;
58
elastic(elastic && ref)
noexcept
=
default
;
59
elastic & operator = (
const
elastic & ref) =
default
;
60
elastic & operator = (elastic && ref)
noexcept
=
default
;
61
~elastic() =
default
;
62
63
U_32 dump(
unsigned
char
*buffer, U_32 size)
const
;
64
U_32 get_size()
const
{
return
taille; };
65
66
static
U_I max_length() {
return
(U_I)(254)*254*254*254 - 1; };
67
68
private
:
69
U_32 taille;
// max size of elastic buffer is 4GB which is large enough
70
71
void
randomize(
unsigned
char
*a)
const
;
72
U_I base_from_version(
const
archive_version
& reading_ver)
const
;
73
unsigned
char
get_low_mark(
const
archive_version
& reading_ver)
const
;
74
unsigned
char
get_high_mark(
const
archive_version
& reading_ver)
const
;
75
unsigned
char
get_low_mark()
const
{
return
255; };
76
unsigned
char
get_high_mark()
const
{
return
254; };
77
78
};
79
81
82
}
// end of namespace
83
84
#endif
archive_version.hpp
class archive_version that rules which archive format to follow
libdar::archive_version
class archive_version manages the version of the archive format
Definition
archive_version.hpp:47
libdar::generic_file
this is the interface class from which all other data transfer classes inherit
Definition
generic_file.hpp:77
generic_file.hpp
class generic_file is defined here as well as class fichier
libdar::elastic_direction
elastic_direction
reading direction of an elastic buffer
Definition
elastic.hpp:44
infinint.hpp
switch module to limitint (32 ou 64 bits integers) or infinint
integers.hpp
are defined here basic integer types that tend to be portable
my_config.h
include macro defined by the configure script and some specific additional ones
libdar
libdar namespace encapsulate all libdar symbols
Definition
archive.hpp:47
Generated on
for Disk ARchive by
1.17.0