00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00030
00031 #ifndef MASK_LIST_HPP
00032 #define MASK_LIST_HPP
00033
00034 #include "../my_config.h"
00035
00036 #include "mask.hpp"
00037
00038 namespace libdar
00039 {
00040
00043
00045
00049
00050 class mask_list : public mask
00051 {
00052 public:
00053
00055
00061 mask_list(const std::string & filename_list_st, bool case_sensit, const path & prefix, bool include);
00062
00064 bool is_covered(const std::string & expression) const;
00066 mask *clone() const { return new mask_list(*this); };
00067
00069 U_I size() const { return contenu.size(); };
00070
00071 private:
00072
00073
00074
00075
00076
00077 class my_char
00078 {
00079 public:
00080 my_char() { val = 0; };
00081 my_char(const char x) : val(x) {};
00082 bool operator < (const my_char & x) const
00083 {
00084 if(val == '/')
00085 if(x.val == '/')
00086 return false;
00087 else
00088 return true;
00089 else
00090 if(x.val == '/')
00091 return false;
00092 else
00093 return val < x.val;
00094 };
00095
00096 operator char() const
00097 {
00098 return val;
00099 };
00100
00101 private:
00102 char val;
00103 };
00104
00105 std::vector <std::basic_string<my_char> > contenu;
00106 U_I taille;
00107 bool case_s;
00108 bool including;
00109
00110 std::list<std::basic_string<my_char> > convert_list_string_char(const std::list<std::string> & src) const;
00111 std::basic_string<my_char> convert_string_char(const std::string & src) const;
00112 std::string convert_string_my_char(const std::basic_string<my_char> & src) const;
00113 };
00114
00116
00117 }
00118
00119 #endif