Canola
0.8.D001
|
00001 // 00002 // canola - canon canola 1614p emulator 00003 // Copyright (C) 2011 Peter Miller 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License, version 3, as 00007 // published by the Free Software Foundation. 00008 // 00009 // This program is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU General Public License along 00015 // with this program. If not, see <http://www.gnu.org/licenses/>. 00016 // 00017 00018 #ifndef LIB_PRECISION_AND_ROUNDING_H 00019 #define LIB_PRECISION_AND_ROUNDING_H 00020 00021 class number; // forward 00022 00028 class precision_and_rounding 00029 { 00030 public: 00034 virtual ~precision_and_rounding(); 00035 00039 precision_and_rounding(); 00040 00041 enum round_t 00042 { 00046 round_up, 00047 00051 round_off, 00052 00056 round_down, 00057 }; 00058 00068 precision_and_rounding(int precision, round_t round); 00069 00076 precision_and_rounding(const precision_and_rounding &rhs); 00077 00084 precision_and_rounding &operator=(const precision_and_rounding &rhs); 00085 00093 void apply(number &value); 00094 00095 int get_precision(void) const { return precision; } 00096 00097 round_t get_rounding(void) const { return round; } 00098 00099 private: 00105 int precision; 00106 00111 round_t round; 00112 }; 00113 00114 #endif // LIB_PRECISION_AND_ROUNDING_H