elastic.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00028
00029 #ifndef ELASTIC_HPP
00030 #define ELASTIC_HPP
00031
00032 #include "../my_config.h"
00033
00034 #include "integers.hpp"
00035 #include "erreurs.hpp"
00036 #include "infinint.hpp"
00037 #include "generic_file.hpp"
00038 #include "header_version.hpp"
00039
00040
00041 namespace libdar
00042 {
00043
00044 enum elastic_direction { elastic_forward, elastic_backward };
00045
00047
00052 class elastic
00053 {
00054 public:
00055 elastic(U_32 size);
00056 elastic(const unsigned char *buffer, U_32 size, elastic_direction dir, const dar_version & reading_ver);
00057 elastic(generic_file &f, elastic_direction dir, const dar_version & reading_ver);
00058
00059 U_32 dump(unsigned char *buffer, U_32 size) const;
00060 U_32 get_size() const { return taille; };
00061
00062 static U_I max_length() { return (U_I)(254)*254*254*254 - 1; };
00063
00064 private:
00065 U_32 taille;
00066
00067 void randomize(unsigned char *a) const;
00068 U_I base_from_version(const dar_version & reading_ver) const;
00069 unsigned char get_low_mark(const dar_version & reading_ver) const;
00070 unsigned char get_high_mark(const dar_version & reading_ver) const;
00071 unsigned char get_low_mark() const { return 255; };
00072 unsigned char get_high_mark() const { return 254; };
00073
00074 };
00075
00076 }
00077
00078 #endif