1 /* This file is part of the project "Hilbert II" - http://www.qedeq.org" target="alexandria_uri">http://www.qedeq.org
2 *
3 * Copyright 2000-2014, Michael Meyling <mime@qedeq.org>.
4 *
5 * "Hilbert II" is free software; you can redistribute
6 * it and/or modify it under the terms of the GNU General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This program 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
16 package org.qedeq.kernel.bo.logic.model;
17
18 /**
19 * One function for our model.
20 *
21 * @author Michael Meyling
22 */
23 public abstract class Function {
24
25
26 /** Minimum number of arguments this function has. */
27 private final int minimum;
28
29 /** Maximum number of arguments this function has. */
30 private final int maximum;
31
32 /** Display text. */
33 private final String display;
34
35 /** Description for this function. */
36 private final String description;
37
38 static Function createConstant(final Entity entity) {
39 return new Function(0, 90, "->" + entity, "contant " + entity.getDescription()) {
40 public Entity map(final Entity[] entities) {
41 return entity;
42 }
43 };
44 }
45
46 /**
47 * Constructor.
48 *
49 * @param minimum Minimum number of arguments this function has.
50 * @param maximum Maximum number of arguments this function has.
51 * @param display Show this to represent the function within outputs.
52 * @param description Description for this function.
53 */
54 public Function(final int minimum, final int maximum, final String display,
55 final String description) {
56 this.minimum = minimum;
57 this.maximum = maximum;
58 this.display = display;
59 this.description = description;
60 }
61
62 /**
63 * Get minimum number of arguments this function has.
64 *
65 * @return Minimum number of arguments for this function.
66 */
67 public int getMinimumArgumentNumber() {
68 return minimum;
69 }
70
71 /**
72 * Get maximum number of arguments this function has.
73 *
74 * @return Maximum number of arguments for this function.
75 */
76 public int getMaximumArgumentNumber() {
77 return maximum;
78 }
79
80 /**
81 * Get display text.
82 *
83 * @return Representation of this function for textual output.
84 */
85 public String toString() {
86 return display;
87 }
88
89 /**
90 * Get description.
91 *
92 * @return Description of this function.
93 */
94 public String getDescription() {
95 return description;
96 }
97
98 /**
99 * Calculate truth value.
100 *
101 * @param entities Calculate function for this entities.
102 * @return Truth value.
103 */
104 public abstract Entity map(Entity[] entities);
105
106 }