1 // print_integer().
2 
3 // General includes.
4 #include "base/cl_sysdep.h"
5 
6 // Specification.
7 #include "cln/integer_io.h"
8 
9 
10 // Implementation.
11 
12 #include "cln/output.h"
13 
14 namespace cln {
15 
print_integer(std::ostream & stream,const cl_print_rational_flags & flags,const cl_I & z)16 void print_integer (std::ostream& stream, const cl_print_rational_flags& flags, const cl_I& z)
17 {
18 	var unsigned int base = flags.rational_base;
19 	if (flags.rational_readably)
20 		// Radix-Specifier ausgeben:
21 		switch (base) {
22 		case 2:
23 			fprintchar(stream,'#');
24 			fprintchar(stream,'b');
25 			break;
26 		case 8:
27 			fprintchar(stream,'#');
28 			fprintchar(stream,'o');
29 			break;
30 		case 16:
31 			fprintchar(stream,'#');
32 			fprintchar(stream,'x');
33 			break;
34 		case 10:
35 			// Basis 10 bei Integers durch
36 			// nachgestellten Punkt kennzeichnen:
37 			print_integer(stream,base,z);
38 			fprintchar(stream,'.');
39 			return;
40 		default:
41 			// Basis in #nR-Schreibweise ausgeben:
42 			fprintchar(stream,'#');
43 			print_integer(stream,10,base);
44 			fprintchar(stream,'r');
45 			break;
46 		}
47 	// Integer in Basis base ausgeben:
48 	print_integer(stream,base,z);
49 }
50 
51 }  // namespace cln
52