7945712b6efa34fae4425c1ba5bfbe80980d2ea4
[lsystem3d.git] / src / ruleset.h
1 // Copyright (C) 2006 Erik Dahlberg
2 //
3 // This file is part of LSystem3D.
4 //
5 // LSystem3D is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
9 //
10 // LSystem3D is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with LSystem3D; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19
20
21
22 #ifndef RULESET_H
23 #define RULESET_H
24
25 #include <map>
26 #include <string>
27
28 #include "rule.h"
29
30 using namespace std;
31
32 typedef multimap<string, Rule> rulemap;
33
34
35
36 /**
37 * Set of L-system rules
38 */
39 class RuleSet
40 {
41 public:
42
43 /**
44 * Constructor
45 */
46 RuleSet();
47
48 /**
49 * Destructor
50 */
51 ~RuleSet();
52
53
54 /**
55 * Clear rule set
56 */
57 void clear();
58
59 /**
60 * Add one rule
61 * @param rule the rule
62 */
63 void addRule(Rule rule);
64
65 /**
66 * Get one rule with repect of probability factor
67 * @param name the rule name
68 * @return the rule
69 */
70 Rule findRule(string ruleName);
71
72
73 /**
74 * Get all rules
75 * @return the rules
76 */
77 rulemap getRules();
78
79 protected:
80
81 rulemap _rules;
82 };
83
84
85
86 #endif