Unverified Commit 411fba39 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

OutputStream: configurable number of digits

parent 7642abff
Loading
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -17,9 +17,10 @@ class OutputStream {

	char digit_buffer[sizeof(long long) * 8];
	uint8_t base;
	uint8_t ndigits;

 public:
	OutputStream();
	OutputStream() : base(10), ndigits(2) {};

	virtual void put(char c) = 0;

@@ -52,6 +53,7 @@ class OutputStream {
#endif

	void setBase(uint8_t b);
	void setDigits(uint8_t ndig);
	void printf_uint8(uint8_t num);
	void printf_float(float num);
};
+10 −7
Original line number Diff line number Diff line
@@ -162,6 +162,11 @@ void OutputStream::setBase(uint8_t b)
	}
}

void OutputStream::setDigits(uint8_t ndig)
{
	ndigits = ndig;
}

static inline char format_hex_nibble(uint8_t num)
{
	if (num > 9) {
@@ -199,8 +204,11 @@ void OutputStream::printf_float(float num)
	}
	put('0' + ((unsigned int)num % 10));
	put('.');
	put('0' + ((unsigned int)(num * 10) % 10));
	put('0' + ((unsigned int)(num * 100) % 10));
	float mul = 10;
	for (int i = 0; i < ndigits; i++) {
		put('0' + ((unsigned int)(num * mul) % 10));
		mul *= 10;
	}
}

OutputStream & flush(OutputStream & os)
@@ -246,8 +254,3 @@ OutputStream & term(OutputStream & os)
	os.flush();
	return os;
}

OutputStream::OutputStream()
{
    base = 10;
}