-#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;
-
-class Component
-{
-public:
- 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 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; }
- void resolve_refs();
- void create_build_info();
-protected:
- Package &pkg;
- Type type;
- std::string name;
- PathList sources;
- bool install;
- std::string install_headers;
- BuildInfo build_info;
- std::list<PackageRef> requires;
-};
-typedef std::list<Component> ComponentList;
-
-#endif