#ifndef COLLECTDIRCONTENT_H
#define COLLECTDIRCONTENT_H

#if defined __cplusplus

#include <set>
#include <map>
#include <string>

#if defined( WNT )
#include <windows.h>
#include <algorithm>
#else
#include <dirent.h>
#endif // defined( WNT )

#include <iostream>

using namespace std;

typedef set<string> DirContent;
typedef map<string, DirContent> DirMap;
typedef DirMap::value_type EntriesPair;
typedef pair<string, string> PathFilePair;


struct IncludesCollection {
    private:
    DirMap allIncludes;
//    bool search(string filePath);
//    bool add_dir(string dirPath);
    PathFilePair split_path(const string& filePath);
    void add_to_collection(const string& dirPath);

    public:
        bool exists(string filePath);
};

#else

struct IncludesCollection;

#endif

#if defined __cplusplus
extern "C" {
#endif

struct IncludesCollection * create_IncludesCollection(void);

int call_IncludesCollection_exists(struct IncludesCollection* m, const char* filePath);

#if defined __cplusplus
}
#endif

#endif // COLLECTDIRCONTENT_H
