+++ /dev/null
-#ifndef INSTALLMAP_H_
-#define INSTALLMAP_H_
-
-#include <vector>
-#include <msp/datafile/objectloader.h>
-#include <msp/fs/path.h>
-
-class FileTarget;
-
-/**
-Maps install locations based on location in the source tree. Mappings are
-defined as pairs of source and install locations. Targets within a source
-location are mapped if their default install location shares a common prefix
-with the mapped install location. The remainder of the source location is
-appended to the mapped install location to form the final install location.
-*/
-class InstallMap
-{
-public:
- class Loader: public Msp::DataFile::ObjectLoader<InstallMap>
- {
- private:
- Msp::FS::Path source_base;
-
- public:
- Loader(InstallMap &, const Msp::FS::Path &);
-
- private:
- void map(const std::string &, const std::string &);
- };
-
-private:
- struct Entry
- {
- Msp::FS::Path source;
- Msp::FS::Path install;
- };
-
- std::vector<Entry> entries;
-
-public:
- /** Adds an install mapping. Multiple mappings can be specified for the
- same source location, but the first one that matches both that and the
- target's default install location will be used. */
- void add_mapping(const Msp::FS::Path &, const Msp::FS::Path &);
-
- /** Returns the install location for a target. If no defined mappings match
- the target, its default install location is returned. */
- Msp::FS::Path get_install_location(const FileTarget &) const;
-};
-
-#endif