Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
26 7u83 1
#include <u.h>
2
#include <libc.h>
3
#include <mp.h>
4
#include "dat.h"
5
#include "fns.h"
6
 
7
static int
8
mpdetfmt(Fmt *f)
9
{
10
	mpint *a;
11
	int i, j;
12
 
13
	a = va_arg(f->args, mpint *);
14
	fmtprint(f, "(sign=%d,top=%d,size=%d,", a->sign, a->top, a->size);
15
	for(i=0;i<a->top;){
16
		fmtprint(f, "%ullx", (uvlong)a->p[i]);
17
		if(++i == a->top) break;
18
		fmtrune(f, ',');
19
		for(j = i+1; j < a->top;  j++)
20
			if(a->p[i] != a->p[j])
21
				goto next;
22
		fmtprint(f, "...");
23
		break;
24
	next:;
25
	}
26
	fmtrune(f, '|');
27
	for(i=a->top;i<a->size;){
28
		fmtprint(f, "%ullx", (uvlong)a->p[i]);
29
		if(++i == a->size) break;
30
		fmtrune(f, ',');
31
		for(j = i+1; j < a->top;  j++)
32
			if(a->p[i] != a->p[j])
33
				goto next2;
34
		fmtprint(f, "...");
35
		break;
36
	next2:;
37
	}
38
	fmtrune(f, ')');
39
	return 0;
40
}
41
 
42
void
43
main()
44
{
45
	extern int ldfmt(Fmt *);
46
 
47
	fmtinstall('B', mpfmt);
48
	fmtinstall(L'β', mpdetfmt);
49
	fmtinstall('L', ldfmt);
50
 
51
	convtests();
52
	tests();
53
}