26 #ifndef FILESYSTEM_SPECIFIC_ATTRIBUTE_HPP 27 #define FILESYSTEM_SPECIFIC_ATTRIBUTE_HPP 29 #include "../my_config.h" 34 #include <sys/types.h> 105 virtual std::string
show_val()
const = 0;
117 void set_family(
const fsa_family & val) { fam = val; };
118 void set_nature(
const fsa_nature & val) { nat = val; };
130 class filesystem_specific_attribute_list :
public on_pool 133 filesystem_specific_attribute_list() {};
134 filesystem_specific_attribute_list(
const filesystem_specific_attribute_list & ref) { copy_from(ref); };
135 const filesystem_specific_attribute_list & operator = (
const filesystem_specific_attribute_list & ref) { clear(); copy_from(ref);
return *
this; };
136 ~filesystem_specific_attribute_list() { clear(); };
142 fsa_scope get_fsa_families()
const {
return familes; };
145 bool is_included_in(
const filesystem_specific_attribute_list & ref,
const fsa_scope & scope)
const;
154 void get_fsa_from_filesystem_for(
const std::string & target,
155 const fsa_scope & scope,
164 bool set_fsa_to_filesystem_for(
const std::string & target,
165 const fsa_scope & scope,
169 bool empty()
const {
return fsa.empty(); };
173 U_I size()
const {
return fsa.size(); };
186 filesystem_specific_attribute_list operator + (
const filesystem_specific_attribute_list & arg)
const;
196 std::vector<filesystem_specific_attribute *> fsa;
199 void copy_from(
const filesystem_specific_attribute_list & ref);
200 void update_familes();
204 void fill_extX_FSA_with(
const std::string & target, mode_t itype);
205 void fill_HFS_FSA_with(
const std::string & target, mode_t itype);
208 bool set_extX_FSA_to(
user_interaction & ui,
const std::string & target)
const;
211 bool set_hfs_FSA_to(
user_interaction & ui,
const std::string & target)
const;
213 static std::string family_to_signature(
fsa_family f);
214 static std::string nature_to_signature(
fsa_nature n);
215 static fsa_family signature_to_family(
const std::string & sig);
216 static fsa_nature signature_to_nature(
const std::string & sig);
221 template <
class T> T *cloner(
const T *x, memory_pool *p)
225 T *ret =
new (p) T(*x);
227 throw Ememory(
"cloner template");
240 bool get_value()
const {
return val; };
243 virtual std::string
show_val()
const {
return val ? gettext(
"true") : gettext(
"false"); };
263 const infinint & get_value()
const {
return val; };
266 virtual std::string
show_val()
const;
286 const datetime & get_value()
const {
return val; };
289 virtual std::string
show_val()
const;
filesystem specific attributes available families and fsa_scope definition
are defined here basic integer types that tend to be portable
class crc definition, used to handle Cyclic Redundancy Checks
filesystem_specific_attribute(fsa_family f)
constructor used to before reading the FSA from filesystem
This is a pure virtual class that is used by libdar when interaction with the user is required...
bool is_same_type_as(const filesystem_specific_attribute &ref) const
provide a mean to compare objects types
memory_pool * get_pool() const
fsa_family get_family() const
obtain the family of the FSA
exception used when memory has been exhausted
bool operator<(const filesystem_specific_attribute &ref) const
used to provided a sorted list of FSA
virtual void write(generic_file &f) const =0
write down to libdar archive
exception used to signal a bug. A bug is triggered when reaching some code that should never be reach...
this is the interface class from which all other data transfer classes inherit
void write(const char *a, U_I size)
write data to the generic_file
this is the base class of object that can be allocated on a memory pool
fsa_nature get_nature() const
obtain the nature of the FSA
virtual infinint storage_size() const =0
give the storage size for the FSA
virtual bool equal_value_to(const filesystem_specific_attribute &ref) const =0
should return true if the value of the argument is equal to the one of 'this' false in any other case...
the arbitrary large positive integer class
class archive_version manages the version of the archive format
virtual std::string show_val() const =0
provides a human readable value of the FSA
libdar namespace encapsulate all libdar symbols
virtual bool operator==(const filesystem_specific_attribute &ref) const
provides a mean to compare objects values
filesystem_specific_attribute(generic_file &f, fsa_family xfam, fsa_nature xnat)
constructor used to read a FSA from a libdar archive
virtual filesystem_specific_attribute * clone() const =0
provides a way to copy objects without having to know the more specific class of the object ...
virtual ~filesystem_specific_attribute()
virtual destructor for inherited classes