29#include "//include/dar/libdar_my_config.h"
32#include "//include/dar/erreurs.hpp"
33#include "//include/dar/infinint.hpp"
55 criterium(
const criterium & ref) =
default;
56 criterium(criterium && ref)
noexcept =
default;
57 criterium & operator = (
const criterium & ref) =
default;
58 criterium & operator = (criterium && ref)
noexcept =
default;
59 virtual ~criterium()
noexcept(
false) {};
73 virtual criterium *
clone()
const = 0;
86 class crit_in_place_is_inode :
public criterium
89 crit_in_place_is_inode() {};
90 crit_in_place_is_inode(
const crit_in_place_is_inode & ref) =
default;
91 crit_in_place_is_inode(crit_in_place_is_inode && ref)
noexcept =
default;
92 crit_in_place_is_inode & operator = (
const crit_in_place_is_inode & ref) =
default;
93 crit_in_place_is_inode & operator = (crit_in_place_is_inode && ref)
noexcept =
default;
94 ~crit_in_place_is_inode() =
default;
97 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_is_inode(*
this); };
103 class crit_in_place_is_dir :
public criterium
106 crit_in_place_is_dir() {};
107 crit_in_place_is_dir(
const crit_in_place_is_dir & ref) =
default;
108 crit_in_place_is_dir(crit_in_place_is_dir && ref)
noexcept =
default;
109 crit_in_place_is_dir & operator = (
const crit_in_place_is_dir & ref) =
default;
110 crit_in_place_is_dir & operator = (crit_in_place_is_dir && ref)
noexcept =
default;
111 ~crit_in_place_is_dir() =
default;
114 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_is_dir(*
this); };
120 class crit_in_place_is_file :
public criterium
123 crit_in_place_is_file() {};
124 crit_in_place_is_file(
const crit_in_place_is_file & ref) =
default;
125 crit_in_place_is_file(crit_in_place_is_file && ref)
noexcept =
default;
126 crit_in_place_is_file & operator = (
const crit_in_place_is_file & ref) =
default;
127 crit_in_place_is_file & operator = (crit_in_place_is_file && ref)
noexcept =
default;
128 ~crit_in_place_is_file() =
default;
131 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_is_file(*
this); };
138 class crit_in_place_is_hardlinked_inode :
public criterium
141 crit_in_place_is_hardlinked_inode() {};
142 crit_in_place_is_hardlinked_inode(
const crit_in_place_is_hardlinked_inode & ref) =
default;
143 crit_in_place_is_hardlinked_inode(crit_in_place_is_hardlinked_inode && ref)
noexcept =
default;
144 crit_in_place_is_hardlinked_inode & operator = (
const crit_in_place_is_hardlinked_inode & ref) =
default;
145 crit_in_place_is_hardlinked_inode & operator = (crit_in_place_is_hardlinked_inode && ref)
noexcept =
default;
146 ~crit_in_place_is_hardlinked_inode() =
default;
149 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_is_hardlinked_inode(*
this); };
157 class crit_in_place_is_new_hardlinked_inode :
public criterium
160 crit_in_place_is_new_hardlinked_inode() {};
161 crit_in_place_is_new_hardlinked_inode(
const crit_in_place_is_new_hardlinked_inode & ref) =
default;
162 crit_in_place_is_new_hardlinked_inode(crit_in_place_is_new_hardlinked_inode && ref)
noexcept =
default;
163 crit_in_place_is_new_hardlinked_inode & operator = (
const crit_in_place_is_new_hardlinked_inode & ref) =
default;
164 crit_in_place_is_new_hardlinked_inode & operator = (crit_in_place_is_new_hardlinked_inode && ref)
noexcept =
default;
165 ~crit_in_place_is_new_hardlinked_inode() =
default;
168 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_is_new_hardlinked_inode(*
this); };
176 class crit_in_place_data_more_recent :
public criterium
179 crit_in_place_data_more_recent(
const infinint & hourshift = 0) : x_hourshift(hourshift) {};
180 crit_in_place_data_more_recent(
const crit_in_place_data_more_recent & ref) =
default;
181 crit_in_place_data_more_recent(crit_in_place_data_more_recent && ref)
noexcept =
default;
182 crit_in_place_data_more_recent & operator = (
const crit_in_place_data_more_recent & ref) =
default;
183 crit_in_place_data_more_recent & operator = (crit_in_place_data_more_recent && ref)
noexcept =
default;
184 ~crit_in_place_data_more_recent() =
default;
187 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_data_more_recent(*
this); };
200 class crit_in_place_data_more_recent_or_equal_to :
public criterium
203 crit_in_place_data_more_recent_or_equal_to(
const infinint & date,
const infinint & hourshift = 0) : x_hourshift(hourshift), x_date(date) {};
204 crit_in_place_data_more_recent_or_equal_to(
const crit_in_place_data_more_recent_or_equal_to & ref) =
default;
205 crit_in_place_data_more_recent_or_equal_to(crit_in_place_data_more_recent_or_equal_to && ref)
noexcept =
default;
206 crit_in_place_data_more_recent_or_equal_to & operator = (
const crit_in_place_data_more_recent_or_equal_to & ref) =
default;
207 crit_in_place_data_more_recent_or_equal_to & operator = (crit_in_place_data_more_recent_or_equal_to && ref)
noexcept =
default;
208 ~crit_in_place_data_more_recent_or_equal_to() =
default;
211 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_data_more_recent_or_equal_to(*
this); };
223 class crit_in_place_data_bigger :
public criterium
226 crit_in_place_data_bigger() {};
227 crit_in_place_data_bigger(
const crit_in_place_data_bigger & ref) =
default;
228 crit_in_place_data_bigger(crit_in_place_data_bigger && ref)
noexcept =
default;
229 crit_in_place_data_bigger & operator = (
const crit_in_place_data_bigger & ref) =
default;
230 crit_in_place_data_bigger & operator = (crit_in_place_data_bigger && ref)
noexcept =
default;
231 ~crit_in_place_data_bigger() =
default;
234 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_data_bigger(*
this); };
244 class crit_in_place_data_saved :
public criterium
247 crit_in_place_data_saved() {};
248 crit_in_place_data_saved(
const crit_in_place_data_saved & ref) =
default;
249 crit_in_place_data_saved(crit_in_place_data_saved && ref)
noexcept =
default;
250 crit_in_place_data_saved & operator = (
const crit_in_place_data_saved & ref) =
default;
251 crit_in_place_data_saved & operator = (crit_in_place_data_saved && ref)
noexcept =
default;
252 ~crit_in_place_data_saved() =
default;
255 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_data_saved(*
this); };
261 class crit_in_place_data_dirty :
public criterium
264 crit_in_place_data_dirty() {};
265 crit_in_place_data_dirty(
const crit_in_place_data_dirty & ref) =
default;
266 crit_in_place_data_dirty(crit_in_place_data_dirty && ref)
noexcept =
default;
267 crit_in_place_data_dirty & operator = (
const crit_in_place_data_dirty & ref) =
default;
268 crit_in_place_data_dirty & operator = (crit_in_place_data_dirty && ref)
noexcept =
default;
269 ~crit_in_place_data_dirty() =
default;
272 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_data_dirty(*
this); };
277 class crit_in_place_data_sparse :
public criterium
280 crit_in_place_data_sparse() {};
281 crit_in_place_data_sparse(
const crit_in_place_data_sparse & ref) =
default;
282 crit_in_place_data_sparse(crit_in_place_data_sparse && ref)
noexcept =
default;
283 crit_in_place_data_sparse & operator = (
const crit_in_place_data_sparse & ref) =
default;
284 crit_in_place_data_sparse & operator = (crit_in_place_data_sparse && ref)
noexcept =
default;
285 ~crit_in_place_data_sparse() =
default;
288 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_data_sparse(*
this); };
294 class crit_in_place_has_delta_sig :
public criterium
297 crit_in_place_has_delta_sig() {};
298 crit_in_place_has_delta_sig(
const crit_in_place_has_delta_sig & ref) =
default;
299 crit_in_place_has_delta_sig(crit_in_place_has_delta_sig && ref)
noexcept =
default;
300 crit_in_place_has_delta_sig & operator = (
const crit_in_place_has_delta_sig & ref) =
default;
301 crit_in_place_has_delta_sig & operator = (crit_in_place_has_delta_sig && ref)
noexcept =
default;
302 ~crit_in_place_has_delta_sig() =
default;
305 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_has_delta_sig(*
this); };
308 class crit_in_place_is_binary_patch :
public criterium
311 crit_in_place_is_binary_patch() {};
312 crit_in_place_is_binary_patch(
const crit_in_place_is_binary_patch & ref) =
default;
313 crit_in_place_is_binary_patch(crit_in_place_is_binary_patch && ref)
noexcept =
default;
314 crit_in_place_is_binary_patch & operator = (
const crit_in_place_is_binary_patch & ref) =
default;
315 crit_in_place_is_binary_patch & operator = (crit_in_place_is_binary_patch && ref)
noexcept =
default;
316 ~crit_in_place_is_binary_patch() =
default;
318 virtual bool evaluate(
const cat_nomme &first,
const cat_nomme &second)
const override;
319 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_is_binary_patch(*
this); };
334 class crit_same_inode_data :
public criterium
337 crit_same_inode_data() {};
338 crit_same_inode_data(
const crit_same_inode_data & ref) =
default;
339 crit_same_inode_data(crit_same_inode_data && ref)
noexcept =
default;
340 crit_same_inode_data & operator = (
const crit_same_inode_data & ref) =
default;
341 crit_same_inode_data & operator = (crit_same_inode_data && ref)
noexcept =
default;
342 ~crit_same_inode_data() =
default;
345 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_same_inode_data(*
this); };
352 class crit_in_place_EA_present :
public criterium
355 crit_in_place_EA_present() {};
356 crit_in_place_EA_present(
const crit_in_place_EA_present & ref) =
default;
357 crit_in_place_EA_present(crit_in_place_EA_present && ref)
noexcept =
default;
358 crit_in_place_EA_present & operator = (
const crit_in_place_EA_present & ref) =
default;
359 crit_in_place_EA_present & operator = (crit_in_place_EA_present && ref)
noexcept =
default;
360 ~crit_in_place_EA_present() =
default;
363 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_EA_present(*
this); };
374 class crit_in_place_EA_more_recent :
public criterium
377 crit_in_place_EA_more_recent(
const infinint & hourshift = 0) : x_hourshift(hourshift) {};
378 crit_in_place_EA_more_recent(
const crit_in_place_EA_more_recent & ref) =
default;
379 crit_in_place_EA_more_recent(crit_in_place_EA_more_recent && ref)
noexcept =
default;
380 crit_in_place_EA_more_recent & operator = (
const crit_in_place_EA_more_recent & ref) =
default;
381 crit_in_place_EA_more_recent & operator = (crit_in_place_EA_more_recent && ref)
noexcept =
default;
382 ~crit_in_place_EA_more_recent() =
default;
386 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_EA_more_recent(*
this); };
398 class crit_in_place_EA_more_recent_or_equal_to :
public criterium
401 crit_in_place_EA_more_recent_or_equal_to(
const infinint & date,
const infinint & hourshift = 0) : x_hourshift(hourshift), x_date(date) {};
402 crit_in_place_EA_more_recent_or_equal_to(
const crit_in_place_EA_more_recent_or_equal_to & ref) =
default;
403 crit_in_place_EA_more_recent_or_equal_to(crit_in_place_EA_more_recent_or_equal_to && ref)
noexcept =
default;
404 crit_in_place_EA_more_recent_or_equal_to & operator = (
const crit_in_place_EA_more_recent_or_equal_to & ref) =
default;
405 crit_in_place_EA_more_recent_or_equal_to & operator = (crit_in_place_EA_more_recent_or_equal_to && ref)
noexcept =
default;
406 ~crit_in_place_EA_more_recent_or_equal_to() =
default;
409 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_EA_more_recent_or_equal_to(*
this); };
421 class crit_in_place_more_EA :
public criterium
424 crit_in_place_more_EA() {};
425 crit_in_place_more_EA(
const crit_in_place_more_EA & ref) =
default;
426 crit_in_place_more_EA(crit_in_place_more_EA && ref)
noexcept =
default;
427 crit_in_place_more_EA & operator = (
const crit_in_place_more_EA & ref) =
default;
428 crit_in_place_more_EA & operator = (crit_in_place_more_EA && ref)
noexcept =
default;
429 ~crit_in_place_more_EA() =
default;
432 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_more_EA(*
this); };
441 class crit_in_place_EA_bigger :
public crit_in_place_more_EA
444 crit_in_place_EA_bigger() {};
445 crit_in_place_EA_bigger(
const crit_in_place_EA_bigger & ref) =
default;
446 crit_in_place_EA_bigger(crit_in_place_EA_bigger && ref)
noexcept =
default;
447 crit_in_place_EA_bigger & operator = (
const crit_in_place_EA_bigger & ref) =
default;
448 crit_in_place_EA_bigger & operator = (crit_in_place_EA_bigger && ref)
noexcept =
default;
449 ~crit_in_place_EA_bigger() =
default;
452 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_EA_bigger(*
this); };
460 class crit_in_place_EA_saved :
public criterium
463 crit_in_place_EA_saved() {};
464 crit_in_place_EA_saved(
const crit_in_place_EA_saved & ref) =
default;
465 crit_in_place_EA_saved(crit_in_place_EA_saved && ref)
noexcept =
default;
466 crit_in_place_EA_saved & operator = (
const crit_in_place_EA_saved & ref) =
default;
467 crit_in_place_EA_saved & operator = (crit_in_place_EA_saved && ref)
noexcept =
default;
468 ~crit_in_place_EA_saved() =
default;
471 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_in_place_EA_saved(*
this); };
480 class crit_same_type :
public criterium
484 crit_same_type(
const crit_same_type & ref) =
default;
485 crit_same_type(crit_same_type && ref)
noexcept =
default;
486 crit_same_type & operator = (
const crit_same_type & ref) =
default;
487 crit_same_type & operator = (crit_same_type && ref)
noexcept =
default;
488 ~crit_same_type() =
default;
491 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_same_type(*
this); };
497 class crit_not :
public criterium
500 crit_not(
const criterium & crit) { x_crit = crit.
clone();
if(x_crit ==
nullptr)
throw Ememory(
"crit_not::crit_not"); };
501 crit_not(
const crit_not & ref): criterium(ref) { copy_from(ref); };
502 crit_not(crit_not && ref)
noexcept: criterium(std::move(ref)) { x_crit =
nullptr; std::swap(x_crit, ref.x_crit); };
503 crit_not & operator = (
const crit_not & ref) { destroy(); copy_from(ref);
return *
this; };
504 crit_not & operator = (crit_not && ref)
noexcept { criterium::operator = (std::move(ref)); std::swap(x_crit, ref.x_crit);
return *
this; };
505 ~crit_not() { destroy(); };
508 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_not(*
this); };
514 void copy_from(
const crit_not & ref);
515 void destroy() {
if(x_crit !=
nullptr) {
delete x_crit; x_crit =
nullptr; } };
520 class crit_and :
public criterium
523 crit_and() { clear(); };
524 crit_and(
const crit_and & ref) : criterium(ref) { copy_from(ref); };
525 crit_and(crit_and && ref) =
default;
526 crit_and & operator = (
const crit_and & ref) { detruit(); copy_from(ref);
return *
this; };
527 crit_and & operator = (crit_and && ref)
noexcept =
default;
528 ~crit_and() { detruit(); };
530 void add_crit(
const criterium & ref);
531 void clear() { detruit(); };
534 void gobe(crit_and & to_be_voided);
537 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_and(*
this); };
540 std::deque<criterium *> operand;
543 void copy_from(
const crit_and & ref);
547 class crit_or :
public crit_and
550 crit_or() { clear(); };
551 crit_or(
const crit_or & ref) =
default;
552 crit_or(crit_or && ref) =
default;
553 crit_or & operator = (
const crit_or & ref) =
default;
554 crit_or & operator = (crit_or && ref)
noexcept =
default;
555 ~crit_or() =
default;
557 virtual bool evaluate(
const cat_nomme & first,
const cat_nomme & second)
const override;
558 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_or(*
this); };
565 crit_invert(
const criterium & crit) : crit_not(crit) {};
566 crit_invert(
const crit_invert & ref) =
default;
567 crit_invert(crit_invert && ref)
noexcept =
default;
568 crit_invert & operator = (
const crit_invert & ref) =
default;
569 crit_invert & operator = (crit_invert && ref)
noexcept =
default;
570 ~crit_invert() =
default;
572 virtual bool evaluate(
const cat_nomme & first,
const cat_nomme & second)
const override {
return x_crit->evaluate(second, first); };
573 virtual criterium *
clone()
const override {
return new (std::nothrow) crit_invert(*
this); };
exception used when memory has been exhausted
the base class for all entry that have a name
realises the AND operator
virtual criterium * clone() const override
clone construction method
void gobe(crit_and &to_be_voided)
this call merges to the current call the arguments of another "crit_and", the given argument is clear...
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
realises the negation of the criterium given in argument to its constructor
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
virtual criterium * clone() const override
clone construction method
virtual criterium * clone() const override
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const override
criterum interface method
the generic criterium class, parent of all criterium
virtual criterium * clone() const =0
clone construction method
virtual bool evaluate(const cat_nomme &first, const cat_nomme &second) const =0
criterum interface method
the arbitrary large positive integer class
libdar namespace encapsulate all libdar symbols