137da2899SCharles.Forsyth #include "os.h" 237da2899SCharles.Forsyth #include <mp.h> 337da2899SCharles.Forsyth #include "dat.h" 437da2899SCharles.Forsyth 537da2899SCharles.Forsyth /* 637da2899SCharles.Forsyth * this code assumes that mpdigit is at least as 737da2899SCharles.Forsyth * big as an int. 837da2899SCharles.Forsyth */ 937da2899SCharles.Forsyth 1037da2899SCharles.Forsyth mpint* uitomp(uint i,mpint * b)1137da2899SCharles.Forsythuitomp(uint i, mpint *b) 1237da2899SCharles.Forsyth { 1337da2899SCharles.Forsyth if(b == nil) 1437da2899SCharles.Forsyth b = mpnew(0); 1537da2899SCharles.Forsyth mpassign(mpzero, b); 1637da2899SCharles.Forsyth if(i != 0) 1737da2899SCharles.Forsyth b->top = 1; 1837da2899SCharles.Forsyth *b->p = i; 1937da2899SCharles.Forsyth return b; 2037da2899SCharles.Forsyth } 2137da2899SCharles.Forsyth 2237da2899SCharles.Forsyth uint mptoui(mpint * b)2337da2899SCharles.Forsythmptoui(mpint *b) 2437da2899SCharles.Forsyth { 2537da2899SCharles.Forsyth uint x; 2637da2899SCharles.Forsyth 2737da2899SCharles.Forsyth x = *b->p; 28*d9bd3181SCharles.Forsyth if(b->sign < 0) 2937da2899SCharles.Forsyth x = 0; 30*d9bd3181SCharles.Forsyth else if(b->top > 1 || (sizeof(mpdigit) > sizeof(uint) && x > MAXUINT)) 3137da2899SCharles.Forsyth x = MAXUINT; 3237da2899SCharles.Forsyth return x; 3337da2899SCharles.Forsyth } 34