]> git.saurik.com Git - android/aapt.git/blob - tests/MockFileFinder.h
Fix "Too many open files" error for aapt built with Mac OS X SDK 10.6.
[android/aapt.git] / tests / MockFileFinder.h
1 //
2 // Copyright 2011 The Android Open Source Project
3 //
4
5 #ifndef MOCKFILEFINDER_H
6 #define MOCKFILEFINDER_H
7
8 #include <utils/Vector.h>
9 #include <utils/KeyedVector.h>
10 #include <utils/String8.h>
11
12 #include "DirectoryWalker.h"
13
14 using namespace android;
15
16 class MockFileFinder : public FileFinder {
17 public:
18 MockFileFinder (KeyedVector<String8, KeyedVector<String8,time_t> >& files)
19 : mFiles(files)
20 {
21 // Nothing left to do
22 };
23
24 /**
25 * findFiles implementation for the abstraction.
26 * PRECONDITIONS:
27 * No checking is done, so there MUST be an entry in mFiles with
28 * path matching basePath.
29 *
30 * POSTCONDITIONS:
31 * fileStore is filled with a copy of the data in mFiles corresponding
32 * to the basePath.
33 */
34
35 virtual bool findFiles(String8 basePath, Vector<String8>& extensions,
36 KeyedVector<String8,time_t>& fileStore,
37 DirectoryWalker* dw)
38 {
39 const KeyedVector<String8,time_t>* payload(&mFiles.valueFor(basePath));
40 // Since KeyedVector doesn't implement swap
41 // (who doesn't use swap??) we loop and add one at a time.
42 for (size_t i = 0; i < payload->size(); ++i) {
43 fileStore.add(payload->keyAt(i),payload->valueAt(i));
44 }
45 return true;
46 }
47
48 private:
49 // Virtual mapping between "directories" and the "files" contained
50 // in them
51 KeyedVector<String8, KeyedVector<String8,time_t> > mFiles;
52 };
53
54
55 #endif // MOCKFILEFINDER_H