1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- * (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * See the copyright notice in the ACK home directory, in the file "Copyright".
- *
- *
- * Module: CARDINAL operations with overflow checking
- * Author: Ceriel J.H. Jacobs
- * Version: $Id$
- */
- #ifndef EM_WSIZE
- #define EM_WSIZE _EM_WSIZE
- #endif
- #ifndef EM_LSIZE
- #define EM_LSIZE _EM_LSIZE
- #endif
- #include <m2_traps.h>
- #define MAXCARD ((unsigned)-1)
- #if EM_WSIZE < EM_LSIZE
- #define MAXLONGCARD ((unsigned long) -1L)
- #endif
- adduchk(a,b)
- unsigned a,b;
- {
- if (MAXCARD - a < b) TRP(M2_UOVFL);
- }
- #if EM_WSIZE < EM_LSIZE
- addulchk(a,b)
- unsigned long a,b;
- {
- if (MAXLONGCARD - a < b) TRP(M2_UOVFL);
- }
- #endif
- muluchk(a,b)
- unsigned a,b;
- {
- if (a != 0 && MAXCARD/a < b) TRP(M2_UOVFL);
- }
- #if EM_WSIZE < EM_LSIZE
- mululchk(a,b)
- unsigned long a,b;
- {
- if (a != 0 && MAXLONGCARD/a < b) TRP(M2_UOVFL);
- }
- #endif
- subuchk(a,b)
- unsigned a,b;
- {
- if (b < a) TRP(M2_UUVFL);
- }
- #if EM_WSIZE < EM_LSIZE
- subulchk(a,b)
- unsigned long a,b;
- {
- if (b < a) TRP(M2_UUVFL);
- }
- #endif
|