| 95 | |
| 96 | //- Version number type |
| 97 | class versionNumber |
| 98 | { |
| 99 | //- The version number |
| 100 | scalar versionNumber_; |
| 101 | |
| 102 | //- The version number as an integer |
| 103 | int index_; |
| 104 | |
| 105 | |
| 106 | public: |
| 107 | |
| 108 | // Constructors |
| 109 | |
| 110 | //- Construct from number |
| 111 | versionNumber(const scalar num) |
| 112 | : |
| 113 | versionNumber_(num), |
| 114 | index_(numberToIndex(num)) |
| 115 | {} |
| 116 | |
| 117 | //- Construct from Istream |
| 118 | versionNumber(Istream& is) |
| 119 | : |
| 120 | versionNumber_(readScalar(is)), |
| 121 | index_(numberToIndex(versionNumber_)) |
| 122 | {} |
| 123 | |
| 124 | |
| 125 | // Member functions |
| 126 | |
| 127 | //- Convert a version number into an index |
| 128 | int numberToIndex(const scalar num) const |
| 129 | { |
| 130 | return int(10*num + SMALL); |
| 131 | } |
| 132 | |
| 133 | //- Return major version |
| 134 | int majorVersion() const |
| 135 | { |
| 136 | return int(versionNumber_); |
| 137 | } |
| 138 | |
| 139 | //- Return minor version |
| 140 | int minorVersion() const |
| 141 | { |
| 142 | return int(10.0*(versionNumber_ - majorVersion())); |
| 143 | } |
| 144 | |
| 145 | //- Return the versionNumber as a character string |
| 146 | string str() const; |
| 147 | |
| 148 | |
| 149 | // Member operators |
| 150 | |
| 151 | //- Are these versionNumbers the same? |
| 152 | bool operator==(const versionNumber& vn) |
| 153 | { |
| 154 | return index_ == vn.index_; |