OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimRationalNumber.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts (gpotts@imagelinks.com)
6 //
7 //*******************************************************************
8 // $Id: ossimRationalNumber.h 9968 2006-11-29 14:01:53Z gpotts $
9 #ifndef ossimRationalNumber_HEADER
10 #define ossimRationalNumber_HEADER
11 #include <ossim/base/ossimCommon.h>
13 #include <iostream>
14 
16 {
17 public:
18 
20  {
21  out<<rhs.theNum << "/" << rhs.theDen;
22 
23  return out;
24  }
26  :theNum(1),
27  theDen(1)
28  {
29  }
31  ossim_int32 den)
32  :theNum(num),
33  theDen(den)
34  {
35  }
37  :theNum(num),
38  theDen(1)
39  {}
40  double toDouble()const
41  {
42  return (static_cast<double>(theNum)/
43  static_cast<double>(theDen));
44  }
45  float toFloat()const
46  {
47  return (static_cast<float>(theNum)/
48  static_cast<float>(theDen));
49  }
50 
51  void normalize();
52 
54  {
55  return assign(n, 1);
56  }
57 
59  {
60  return assign(n);
61  }
62 
64  {
65  return ossimRationalNumber(-theNum, theDen);
66  }
67  const ossimRationalNumber& operator+= (const ossimRationalNumber& r);
68  const ossimRationalNumber& operator-= (const ossimRationalNumber& r);
69  const ossimRationalNumber& operator*= (const ossimRationalNumber& r);
70  const ossimRationalNumber& operator/= (const ossimRationalNumber& r);
71 
72  inline const ossimRationalNumber& operator+= (ossim_int32 i);
73  inline const ossimRationalNumber& operator-= (ossim_int32 i);
74  inline const ossimRationalNumber& operator*= (ossim_int32 i);
75  inline const ossimRationalNumber& operator/= (ossim_int32 i);
76 
81 
86 
91 
92  // Comparison operators
93 // inline bool operator< (const ossimRationalNumber& r) const;
94  inline bool operator== (const ossimRationalNumber& r) const;
95 
96  inline bool operator== (ossim_int32 i) const;
97 
98  // Increment and decrement
99  inline const ossimRationalNumber& operator++();
100  inline const ossimRationalNumber& operator--();
101 
102  // Assign in place
103  inline const ossimRationalNumber& assign(ossim_int32 n, ossim_int32 d);
108  const ossimRationalNumber& assign(double value, long precision=10000);
109 
114 
119 
120 };
121 
123 {
124  theNum = n;
125  theDen = d;
126  normalize();
127 
128  return *this;
129 }
130 
131 // Mixed-mode operators
133 {
134  return operator + (ossimRationalNumber(i));
135 }
136 
138 {
139  return operator - (ossimRationalNumber(i));
140 }
141 
143 {
144  return operator * (ossimRationalNumber(i));
145 }
146 
148 {
149  return operator / (ossimRationalNumber(i));
150 }
151 
153 {
154  return ossimRationalNumber(i)+r;
155 }
156 
158 {
159  return ossimRationalNumber(i)-r;
160 }
161 
163 {
164  return ossimRationalNumber(i)*r;
165 }
166 
168 {
169  return ossimRationalNumber(i)/r;
170 }
171 
173 {
174  theNum += theDen;
175 
176  return *this;
177 }
178 
180 {
181  theNum -= theDen;
182 
183  return *this;
184 }
185 
187 {
188  return ((theNum == r.theNum) && (theDen == r.theDen));
189 }
190 
192 {
193  return ((theDen == ossim_int32(1)) && (theNum == i));
194 }
195 
196 #endif
const ossimRationalNumber & operator=(ossim_int32 n)
ossimRationalNumber operator-(ossim_int32 i, ossimRationalNumber &r)
#define OSSIMDLLEXPORT
const ossimRationalNumber & assign(ossim_int32 n, ossim_int32 d)
ossimRationalNumber operator/(ossim_int32 i, ossimRationalNumber &r)
ossimRationalNumber operator*(const ossimRationalNumber &r) const
ossimRationalNumber operator*(ossim_int32 i, ossimRationalNumber &r)
const ossimRationalNumber & operator++()
const ossimRationalNumber & operator--()
os2<< "> n<< " > nendobj n
ossimRationalNumber operator+(const ossimRationalNumber &r) const
bool operator==(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
Definition: ossimRefPtr.h:101
friend std::ostream & operator<<(std::ostream &out, const ossimRationalNumber &rhs)
ossimRationalNumber(ossim_int32 num)
const ossimRationalNumber & operator=(double n)
bool operator==(const ossimRationalNumber &r) const
ossimRationalNumber operator+(ossim_int32 i, ossimRationalNumber &r)
ossimRationalNumber operator-() const
ossimRationalNumber operator/(const ossimRationalNumber &r) const
ossimRationalNumber(ossim_int32 num, ossim_int32 den)
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
int ossim_int32