]> git.tdb.fi Git - builder.git/blob - source/architecture.h
Refactor arch handling a bit
[builder.git] / source / architecture.h
1 /* $Id$
2
3 This file is part of builder
4 Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #ifndef ARCHITECTURE_H_
9 #define ARCHITECTURE_H_
10
11 #include <msp/datafile/loader.h>
12 #include "misc.h"
13
14 class Builder;
15
16 // XXX Add lib/exe prefix/suffix fields.  Some archs may need multiple alternatives, how to handle this?
17 class Architecture
18 {
19 public:
20         class Loader: public Msp::DataFile::Loader
21         {
22         public:
23                 Loader(Architecture &);
24                 Architecture &get_object() { return arch; }
25         private:
26                 Architecture &arch;
27
28                 void tool(const std::string &t, const std::string &p);
29         };
30
31         Architecture(Builder &b, const std::string &n, bool a=false);
32         void set_tool(const std::string &t, const std::string &p);
33         std::string get_tool(const std::string &t) const;
34         const std::string &get_name() const { return name; }
35         bool is_native() const { return native; }
36         const std::string &get_prefix() const { return prefix; }
37 private:
38         Builder     &builder;
39         std::string name;
40         bool        native;
41         std::string prefix;
42         StringMap   tools;
43 };
44
45 typedef std::map<std::string, Architecture> ArchMap;
46
47 #endif