Piethon  1.0
A Python-like interpreter using flex and bison.
number.h
Go to the documentation of this file.
1 #ifndef NUMBER_H
2 #define NUMBER_H
3 
4 #include <iosfwd>
5 
6 using std::ostream;
7 
8 typedef enum Type {
9  INT,
11 } Type;
12 
13 typedef union Value {
14  Value(int _i) : i(_i) { }
15  Value(double _f) : f(_f) { }
16 
17  int i;
18  double f;
19 } Value;
20 
21 class Number {
22 public:
23  Number() : type(INT), value(0) { }
24  Number(const int val) : type(INT), value(val) { }
25  Number(const double val) : type(FLOAT), value(val) { }
26 
27  friend ostream& operator<< (ostream&, const Number&);
28  friend bool operator== (const Number&, const Number&);
29  friend bool operator!= (const Number&, const Number&);
30  friend bool operator< (const Number&, const Number&);
31  friend bool operator> (const Number&, const Number&);
32  friend bool operator<= (const Number&, const Number&);
33  friend bool operator>= (const Number&, const Number&);
34 
35  Number& operator= (const Number&);
36  Number& operator+= (const Number&);
37  Number& operator-= (const Number&);
38  Number& operator*= (const Number&);
39  Number& operator/= (const Number&);
40  Number& operator%= (const Number&);
41  Number& operator^= (const Number&);
42 
43  Number operator+ (const Number&) const;
44  Number operator- (const Number&) const;
45  Number operator* (const Number&) const;
46  Number operator/ (const Number&) const;
47  Number operator% (const Number&) const;
48  Number operator^ (const Number&) const;
49  Number operator- () const;
50 
51 private:
52  Type type;
53  Value value;
54 };
55 
56 #endif
bool operator!=(const Number &lhs, const Number &rhs)
Definition: number.cpp:34
bool operator<=(const Number &lhs, const Number &rhs)
Definition: number.cpp:66
Value(int _i)
Definition: number.h:14
bool operator>=(const Number &lhs, const Number &rhs)
Definition: number.cpp:70
Value(double _f)
Definition: number.h:15
Number(const int val)
Definition: number.h:24
bool operator>(const Number &lhs, const Number &rhs)
Definition: number.cpp:52
Definition: number.h:13
ostream & operator<<(ostream &out, const Number &num)
Definition: number.cpp:10
Definition: number.h:10
Number(const double val)
Definition: number.h:25
Type
Definition: number.h:8
bool operator<(const Number &lhs, const Number &rhs)
Definition: number.cpp:38
double f
Definition: number.h:18
Definition: number.h:21
Definition: number.h:9
bool operator==(const Number &lhs, const Number &rhs)
Definition: number.cpp:20
int i
Definition: number.h:17
Number()
Definition: number.h:23