xref: /plan9/sys/src/cmd/unix/drawterm/libmp/mptoui.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1*8ccd4a63SDavid du Colombier #include "os.h"
2*8ccd4a63SDavid du Colombier #include <mp.h>
3*8ccd4a63SDavid du Colombier #include "dat.h"
4*8ccd4a63SDavid du Colombier 
5*8ccd4a63SDavid du Colombier /*
6*8ccd4a63SDavid du Colombier  *  this code assumes that mpdigit is at least as
7*8ccd4a63SDavid du Colombier  *  big as an int.
8*8ccd4a63SDavid du Colombier  */
9*8ccd4a63SDavid du Colombier 
10*8ccd4a63SDavid du Colombier mpint*
uitomp(uint i,mpint * b)11*8ccd4a63SDavid du Colombier uitomp(uint i, mpint *b)
12*8ccd4a63SDavid du Colombier {
13*8ccd4a63SDavid du Colombier 	if(b == nil)
14*8ccd4a63SDavid du Colombier 		b = mpnew(0);
15*8ccd4a63SDavid du Colombier 	mpassign(mpzero, b);
16*8ccd4a63SDavid du Colombier 	if(i != 0)
17*8ccd4a63SDavid du Colombier 		b->top = 1;
18*8ccd4a63SDavid du Colombier 	*b->p = i;
19*8ccd4a63SDavid du Colombier 	return b;
20*8ccd4a63SDavid du Colombier }
21*8ccd4a63SDavid du Colombier 
22*8ccd4a63SDavid du Colombier uint
mptoui(mpint * b)23*8ccd4a63SDavid du Colombier mptoui(mpint *b)
24*8ccd4a63SDavid du Colombier {
25*8ccd4a63SDavid du Colombier 	uint x;
26*8ccd4a63SDavid du Colombier 
27*8ccd4a63SDavid du Colombier 	x = *b->p;
28*8ccd4a63SDavid du Colombier 	if(b->sign < 0){
29*8ccd4a63SDavid du Colombier 		x = 0;
30*8ccd4a63SDavid du Colombier 	} else {
31*8ccd4a63SDavid du Colombier 		if(b->top > 1 || x > MAXUINT)
32*8ccd4a63SDavid du Colombier 			x =  MAXUINT;
33*8ccd4a63SDavid du Colombier 	}
34*8ccd4a63SDavid du Colombier 	return x;
35*8ccd4a63SDavid du Colombier }
36