Disk ARchive
2.4.8
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
src
libdar
elastic.hpp
Go to the documentation of this file.
1
/*********************************************************************/
2
// dar - disk archive - a backup/restoration program
3
// Copyright (C) 2002-2052 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
//
19
// to contact the author : http://dar.linux.free.fr/email.html
20
/*********************************************************************/
21
25
26
#ifndef ELASTIC_HPP
27
#define ELASTIC_HPP
28
29
#include "../my_config.h"
30
31
#include "
integers.hpp
"
32
#include "
erreurs.hpp
"
33
#include "
infinint.hpp
"
34
#include "
generic_file.hpp
"
35
#include "
header_version.hpp
"
36
37
38
namespace
libdar
39
{
40
43
44
45
enum
elastic_direction
{ elastic_forward, elastic_backward };
46
48
53
class
elastic
54
{
55
public
:
56
elastic
(U_32 size);
57
elastic
(
const
unsigned
char
*buffer, U_32 size,
elastic_direction
dir,
const
archive_version
& reading_ver);
58
elastic
(
generic_file
&f,
elastic_direction
dir,
const
archive_version
& reading_ver);
59
60
U_32 dump(
unsigned
char
*buffer, U_32 size)
const
;
61
U_32 get_size()
const
{
return
taille; };
62
63
static
U_I max_length() {
return
(U_I)(254)*254*254*254 - 1; };
64
65
#ifdef LIBDAR_SPECIAL_ALLOC
66
USE_SPECIAL_ALLOC(
elastic
);
67
#endif
68
69
private
:
70
U_32 taille;
// max size of elastic buffer is 4GB which is large enough
71
72
void
randomize(
unsigned
char
*a)
const
;
73
U_I base_from_version(
const
archive_version
& reading_ver)
const
;
74
unsigned
char
get_low_mark(
const
archive_version
& reading_ver)
const
;
75
unsigned
char
get_high_mark(
const
archive_version
& reading_ver)
const
;
76
unsigned
char
get_low_mark()
const
{
return
255; };
77
unsigned
char
get_high_mark()
const
{
return
254; };
78
79
};
80
82
83
}
// end of namespace
84
85
#endif
Generated on Sun Nov 11 2012 23:12:38 for Disk ARchive by
1.8.1.2