 |
Arduino Core for STM32
1.0
|
Go to the documentation of this file.
44 #include <type_traits>
82 #define __INTEGER_ONLY__(t, ret_type) template<typename t> typename std::enable_if_t<std::is_integral<t>::value, ret_type>
89 #define __INTEGER_ONLY__R(t) __INTEGER_ONLY__(t, t)
97 #define __SIGNED_INTEGER_ONLY__(t, ret_type) template<typename t> typename std::enable_if_t<std::is_integral<t>::value && std::is_signed<t>::value && !std::is_same<t, bool>::value, ret_type>
105 #define __UNSIGNED_INTEGER_ONLY__(t, ret_type) template<typename t> typename std::enable_if_t<std::is_integral<t>::value && (!std::is_signed<t>::value || std::is_same<t, bool>::value), ret_type>
113 #define __FLOATING_ONLY__(t, ret_type) template<typename t> typename std::enable_if_t<std::is_floating_point<t>::value, ret_type>
120 #define __FLOATING_ONLY__R(t) __FLOATING_ONLY__(t, t)
143 __INTEGER_ONLY__(T,
size_t) printNumber(T n, uint8_t base){
144 char buf[8 *
sizeof(n) + 1];
145 char* str = &buf[
sizeof(buf) - 1];
157 char c = m - base * n;
159 *--str = c < 10 ? c +
'0' : c +
'A' - 10;
171 __FLOATING_ONLY__(T,
size_t)
inline printNumber(T number, uint8_t digits){
173 return write(
ftoa(number, buf, digits));
176 template<
typename T,
typename... P>
inline size_t _println(T v, P... args){
177 size_t n =
print(v, args...);
217 virtual size_t write(uint8_t
byte) = 0;
228 return write((
const uint8_t *) str, strlen(str));
237 virtual size_t write(
const uint8_t *buffer,
size_t size);
245 size_t write(
const char *buffer,
size_t size) {
246 return write((
const uint8_t *) buffer, size);
286 #ifdef String_class_h
292 size_t print(
const String &s);
300 size_t print(
const char str[]);
307 size_t print(
char c);
317 if (base == 10 && n < 0) {
321 return printNumber(
static_cast<typename std::make_unsigned<T>::type
>(n), base) + t;
334 return printNumber(n, base);
376 __FLOATING_ONLY__(T,
size_t)
inline print(T n,
int digits = 2){
377 return printNumber(n, digits);
390 #ifdef String_class_h
396 size_t println(
const String &s);
420 __INTEGER_ONLY__(T,
size_t)
inline println(T n,
int base = 10){
421 return _println(n, base);
437 __FLOATING_ONLY__(T,
size_t)
inline println(T n,
int digits = 2){
438 return _println(n, digits);
size_t size_t print(const String &s)
Prints string.
Print & operator<<(T value)
This operator (<<) applied to an output stream is known as insertion operator, it can be used same as...
Definition: Print.h:466
int getWriteError()
Gets write error.
Definition: Print.h:201
size_t write(const char *buffer, size_t size)
Writes character array (string).
Definition: Print.h:245
size_t printf(const char *format,...) __attribute__((format(printf
Prints formatted data.
Definition: Print.cpp:31
Print()
Constructor.
Definition: Print.h:194
__SIGNED_INTEGER_ONLY__(T, size_t) print(T n
Converts integer number to character array and prints it.
#define __UNSIGNED_INTEGER_ONLY__(t, ret_type)
Macro, that allows method or function to use unsigned integers only template in parameter.
Definition: Print.h:105
virtual int availableForWrite()
Gets how many bytes can be written, meaning "a single write may block".
Definition: Print.h:277
The Printable class provides a way for new classes to allow themselves to be printed....
Definition: Printable.h:33
void __attribute__((optimize("Ofast"))) delayMicrosecondsDWT(uint32_t microseconds)
Pauses the program for the amount of time (in microseconds) specified as parameter.
Definition: wirish.h:906
void clearWriteError()
Clears write error.
Definition: Print.h:208
__INTEGER_ONLY__(T, size_t) inline write(T val)
Converts integer type variable to unsigned byte and writes it.
Definition: Print.h:255
size_t println(void)
Prints carriage return and new line.
Definition: Print.cpp:143
The stream class is derived from this class. This class contains methods, that are used for to print ...
Definition: Print.h:130
#define DEC
Decimal base macro.
Definition: Print.h:53
void setWriteError(int err=1)
Sets write error.
Definition: Print.h:187
size_t write(const char *str)
Writes character array (string).
Definition: Print.h:225
std::enable_if< std::is_floating_point< T >::value, char * >::type ftoa(T f, char *buf, int precision)
Converts floating point number to char array.
Definition: ftoa.h:49