1 /*
2  * Part of WCM Commander
3  * https://github.com/corporateshark/WCMCommander
4  * wcm@linderdaum.com
5  */
6 
7 #pragma once
8 
9 #include "wal/wal.h"
10 #include "unicode_lc.h"
11 
12 #include <vector>
13 
14 bool accmask_nocase( const unicode_t* name, const unicode_t* mask );
15 bool accmask( const unicode_t* name, const unicode_t* mask );
16 
17 class clMultimaskSplitter
18 {
19 public:
20 	explicit clMultimaskSplitter( const std::vector<unicode_t>& MultiMask );
21 
22 	/// this is OS-specific: case insensitive on Win/Mac, case sensitive on Linux/FreeBSD
23 	bool CheckAndFetchAllMasks( const unicode_t* FileName );
24 
25 	bool CheckAndFetchAllMasks_NoCase( const unicode_t* FileName );
26 
27 	bool CheckAndFetchAllMasks_Case( const unicode_t* FileName );
28 
29 protected:
30 	bool HasNextMask() const;
31 	std::vector<unicode_t> GetNextMask();
32 
33 private:
34 	const std::vector<unicode_t>& m_MultiMask;
35 	size_t m_CurrentPos;
36 };
37