Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: third_party/bigint/BigInteger.hh

Issue 804463003: Fix build after previous commit. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code by Matt McCutchen, see the LICENSE file. 5 // Original code by Matt McCutchen, see the LICENSE file.
6 6
7 #ifndef BIGINTEGER_H 7 #ifndef BIGINTEGER_H
8 #define BIGINTEGER_H 8 #define BIGINTEGER_H
9 9
10 #include "BigUnsigned.hh" 10 #include "BigUnsigned.hh"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 ans.subtract(*this, x); 157 ans.subtract(*this, x);
158 return ans; 158 return ans;
159 } 159 }
160 inline BigInteger BigInteger::operator *(const BigInteger &x) const { 160 inline BigInteger BigInteger::operator *(const BigInteger &x) const {
161 BigInteger ans; 161 BigInteger ans;
162 ans.multiply(*this, x); 162 ans.multiply(*this, x);
163 return ans; 163 return ans;
164 } 164 }
165 inline BigInteger BigInteger::operator /(const BigInteger &x) const { 165 inline BigInteger BigInteger::operator /(const BigInteger &x) const {
166 if (x.isZero()) 166 if (x.isZero())
167 #ifdef FOXIT_CHROME_BUILD
168 abort(); 167 abort();
169 #else
170 throw "BigInteger::operator /: division by zero";
171 #endif
172 BigInteger q, r; 168 BigInteger q, r;
173 r = *this; 169 r = *this;
174 r.divideWithRemainder(x, q); 170 r.divideWithRemainder(x, q);
175 return q; 171 return q;
176 } 172 }
177 inline BigInteger BigInteger::operator %(const BigInteger &x) const { 173 inline BigInteger BigInteger::operator %(const BigInteger &x) const {
178 if (x.isZero()) 174 if (x.isZero())
179 #ifdef FOXIT_CHROME_BUILD
180 abort(); 175 abort();
181 #else
182 throw "BigInteger::operator %: division by zero";
183 #endif
184 BigInteger q, r; 176 BigInteger q, r;
185 r = *this; 177 r = *this;
186 r.divideWithRemainder(x, q); 178 r.divideWithRemainder(x, q);
187 return r; 179 return r;
188 } 180 }
189 inline BigInteger BigInteger::operator -() const { 181 inline BigInteger BigInteger::operator -() const {
190 BigInteger ans; 182 BigInteger ans;
191 ans.negate(*this); 183 ans.negate(*this);
192 return ans; 184 return ans;
193 } 185 }
194 186
195 /* 187 /*
196 * ASSIGNMENT OPERATORS 188 * ASSIGNMENT OPERATORS
197 * 189 *
198 * Now the responsibility for making a temporary copy if necessary 190 * Now the responsibility for making a temporary copy if necessary
199 * belongs to the put-here operations. See Assignment Operators in 191 * belongs to the put-here operations. See Assignment Operators in
200 * BigUnsigned.hh. 192 * BigUnsigned.hh.
201 */ 193 */
202 inline void BigInteger::operator +=(const BigInteger &x) { 194 inline void BigInteger::operator +=(const BigInteger &x) {
203 add(*this, x); 195 add(*this, x);
204 } 196 }
205 inline void BigInteger::operator -=(const BigInteger &x) { 197 inline void BigInteger::operator -=(const BigInteger &x) {
206 subtract(*this, x); 198 subtract(*this, x);
207 } 199 }
208 inline void BigInteger::operator *=(const BigInteger &x) { 200 inline void BigInteger::operator *=(const BigInteger &x) {
209 multiply(*this, x); 201 multiply(*this, x);
210 } 202 }
211 inline void BigInteger::operator /=(const BigInteger &x) { 203 inline void BigInteger::operator /=(const BigInteger &x) {
212 if (x.isZero()) 204 if (x.isZero())
213 #ifdef FOXIT_CHROME_BUILD
214 abort(); 205 abort();
215 #else
216 throw "BigInteger::operator /=: division by zero";
217 #endif
218 /* The following technique is slightly faster than copying *this first 206 /* The following technique is slightly faster than copying *this first
219 * when x is large. */ 207 * when x is large. */
220 BigInteger q; 208 BigInteger q;
221 divideWithRemainder(x, q); 209 divideWithRemainder(x, q);
222 // *this contains the remainder, but we overwrite it with the quotient. 210 // *this contains the remainder, but we overwrite it with the quotient.
223 *this = q; 211 *this = q;
224 } 212 }
225 inline void BigInteger::operator %=(const BigInteger &x) { 213 inline void BigInteger::operator %=(const BigInteger &x) {
226 if (x.isZero()) 214 if (x.isZero())
227 #ifdef FOXIT_CHROME_BUILD
228 abort(); 215 abort();
229 #else
230 throw "BigInteger::operator %=: division by zero";
231 #endif
232 BigInteger q; 216 BigInteger q;
233 // Mods *this by x. Don't care about quotient left in q. 217 // Mods *this by x. Don't care about quotient left in q.
234 divideWithRemainder(x, q); 218 divideWithRemainder(x, q);
235 } 219 }
236 // This one is trivial 220 // This one is trivial
237 inline void BigInteger::flipSign() { 221 inline void BigInteger::flipSign() {
238 sign = Sign(-sign); 222 sign = Sign(-sign);
239 } 223 }
240 224
241 #endif 225 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698