+++ /dev/null
-#ifndef COMPONENT_H_
-#define COMPONENT_H_
-
-#include <string>
-#include <msp/parser/loader.h>
-#include <msp/path/path.h>
-#include "buildinfo.h"
-#include "misc.h"
-#include "packageref.h"
-
-class Package;
-
-/**
-Components specify things to be built. Each component may build one binary (it
-may also build none), as well as install a bunch of headers. Components inherit
-dependencies and build info from the package they belong to, and may also add
-their own.
-*/
-class Component
-{
-public:
- /// Loads a Component from file. Used from Package::Loader.
- class Loader: public Msp::Parser::Loader
- {
- public:
- Loader(Component &);
- Component &get_object() { return comp; }
- private:
- Component ∁
-
- void source(const std::string &);
- void require(const std::string &);
- void modular();
- void host(const std::string &);
- void build_info();
- };
-
- enum Type
- {
- PROGRAM,
- LIBRARY,
- MODULE,
- HEADERS
- };
-
- Component(Package &, Type, const std::string &);
- const Package &get_package() const { return pkg; }
- Type get_type() const { return type; }
- const std::string &get_name() const { return name; }
- const PathList &get_sources() const { return sources; }
- const BuildInfo &get_build_info() const { return build_info; }
- bool get_install() const { return install; }
- const std::string &get_install_headers() const { return install_headers; }
- bool get_modular() const { return modular; }
- const PkgRefList &get_requires() const { return requires; }
- void resolve_refs();
- void create_build_info();
-protected:
- Package &pkg;
- Type type;
- std::string name;
- PathList sources;
- bool install;
- std::string install_headers;
- const Component *module_host;
- bool modular;
- BuildInfo build_info;
- PkgRefList requires;
-};
-typedef std::list<Component> ComponentList;
-
-#endif