2
/******************************************************************************
5
* COPYRIGHT : (C) 1999 Joris van der Hoeven
6
*******************************************************************************
7
* This software falls under the GNU general public license and comes WITHOUT
8
* ANY WARRANTY WHATSOEVER. See the file $TEXMACS_PATH/LICENSE for more details.
9
* If you don't have this file, write to the Free Software Foundation, Inc.,
10
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
11
******************************************************************************/
15
/******************************************************************************
17
******************************************************************************/
19
space_rep::space_rep (SI min2, SI def2, SI max2) {
25
space_rep::space_rep (SI def2) {
29
space::space (SI min, SI def, SI max) {
30
rep= new space_rep (min, def, max);
33
space::space (SI def) {
34
rep= new space_rep (def);
37
space::operator tree () {
41
as_string (rep->max));
44
/******************************************************************************
45
* The routines which are provided
46
******************************************************************************/
49
operator == (space spc1, space spc2) {
51
(spc1->min == spc2->min) &&
52
(spc1->def == spc2->def) &&
53
(spc1->max == spc2->max);
57
operator != (space spc1, space spc2) {
59
(spc1->min != spc2->min) ||
60
(spc1->def != spc2->def) ||
61
(spc1->max != spc2->max);
65
operator << (ostream& out, space spc) {
66
out << "[ " << spc->min << ", " << spc->def << ", " << spc->max << " ]";
72
return space (spc->min, spc->def, spc->max);
76
operator + (space spc1, space spc2) {
77
return space (spc1->min + spc2->min,
78
spc1->def + spc2->def,
79
spc1->max + spc2->max);
83
operator - (space spc1, space spc2) {
84
return space (spc1->min - spc2->min,
85
spc1->def - spc2->def,
86
spc1->max - spc2->max);
90
operator * (int i, space spc) {
91
return space (i*spc->min, i*spc->def, i*spc->max);
95
operator / (space spc, int i) {
96
return space (spc->min/i, spc->def/i, spc->max/i);
100
max (space spc1, space spc2) {
101
return space (max (spc1->min, spc2->min),
102
max (spc1->def, spc2->def),
103
max (spc1->max, spc2->max));