lilypond-0.0.32
[lilypond.git] / flower / scalar.cc
blobd8e6f9e74b927876f92c384d339daba951be650d
1 #include <stdio.h>
2 #include "scalar.hh"
4 Scalar::Scalar(Rational r)
5 :String(r)
10 Scalar::operator Rational()
12 int p = pos('/');
13 if (!p)
14 return int(*this);
16 String s2 = right(len()-p);
17 p--;
18 String s1 = left(p);
20 return Rational(s1.value(), s2.value());
23 bool
24 Scalar::isnum()
26 int conv = false;
27 if (len()) {
28 long l =0;
29 conv = sscanf(data, "%ld", &l);
31 return len() && conv;
34 Scalar::operator Real()
36 assert (isnum());
37 return fvalue();
40 Scalar::operator int()
42 assert (isnum());
43 return value();
47 Scalar::operator bool() const
49 if (!len())
50 return false;
51 if (*this == "0")
52 return false;
53 String u (*this);
54 u.upper();
55 if (u== "FALSE")
56 return false;
57 return true;