180ee5cbfSDavid du Colombier #include "os.h" 280ee5cbfSDavid du Colombier #include <mp.h> 380ee5cbfSDavid du Colombier #include "dat.h" 480ee5cbfSDavid du Colombier 580ee5cbfSDavid du Colombier /* 680ee5cbfSDavid du Colombier * this code assumes that mpdigit is at least as 780ee5cbfSDavid du Colombier * big as an int. 880ee5cbfSDavid du Colombier */ 980ee5cbfSDavid du Colombier 1080ee5cbfSDavid du Colombier mpint* uitomp(uint i,mpint * b)1180ee5cbfSDavid du Colombieruitomp(uint i, mpint *b) 1280ee5cbfSDavid du Colombier { 1380ee5cbfSDavid du Colombier if(b == nil) 1480ee5cbfSDavid du Colombier b = mpnew(0); 1580ee5cbfSDavid du Colombier mpassign(mpzero, b); 1680ee5cbfSDavid du Colombier if(i != 0) 1780ee5cbfSDavid du Colombier b->top = 1; 1880ee5cbfSDavid du Colombier *b->p = i; 1980ee5cbfSDavid du Colombier return b; 2080ee5cbfSDavid du Colombier } 2180ee5cbfSDavid du Colombier 2280ee5cbfSDavid du Colombier uint mptoui(mpint * b)2380ee5cbfSDavid du Colombiermptoui(mpint *b) 2480ee5cbfSDavid du Colombier { 2580ee5cbfSDavid du Colombier uint x; 2680ee5cbfSDavid du Colombier 2780ee5cbfSDavid du Colombier x = *b->p; 28*53293322SDavid du Colombier if(b->sign < 0) 2980ee5cbfSDavid du Colombier x = 0; 30*53293322SDavid du Colombier else if(b->top > 1 || (sizeof(mpdigit) > sizeof(uint) && x > MAXUINT)) 3180ee5cbfSDavid du Colombier x = MAXUINT; 3280ee5cbfSDavid du Colombier return x; 3380ee5cbfSDavid du Colombier } 34