From da20581f1b8eb680b1d8bc3e254ac92c0c82daa0 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Tue, 19 Mar 2019 10:25:05 +0100 Subject: [PATCH] Enabling printf style output method with variadic arguments --- api/Print.cpp | 29 +++++++++++++++++++++++++++++ api/Print.h | 3 +++ 2 files changed, 32 insertions(+) diff --git a/api/Print.cpp b/api/Print.cpp index 4f0016c4..b1c34112 100644 --- a/api/Print.cpp +++ b/api/Print.cpp @@ -144,6 +144,15 @@ size_t Print::print(const Printable& x) return x.printTo(*this); } +size_t Print::printf(char const * fmt, ...) +{ + va_list args; + va_start(args, fmt); + size_t const n = vprintf(fmt, args); + va_end(args); + return n; +} + size_t Print::println(void) { return write("\r\n"); @@ -233,6 +242,16 @@ size_t Print::println(const Printable& x) return n; } +size_t Print::printfln(char const * fmt, ...) +{ + va_list args; + va_start(args, fmt); + size_t n = vprintf(fmt, args); + va_end(args); + n += println(); + return n; +} + // Private Methods ///////////////////////////////////////////////////////////// size_t Print::printNumber(unsigned long n, uint8_t base) @@ -374,3 +393,13 @@ size_t Print::printFloat(double number, uint8_t digits) return n; } + +size_t Print::vprintf(char const * fmt, va_list args) +{ + static size_t const MSG_BUF_SIZE = 64; + char msg_buf[MSG_BUF_SIZE] = {0}; + + int const length = vsnprintf(msg_buf, MSG_BUF_SIZE, fmt, args); + + return write(msg_buf, length); +} diff --git a/api/Print.h b/api/Print.h index 6a06bad6..971b3806 100644 --- a/api/Print.h +++ b/api/Print.h @@ -36,6 +36,7 @@ class Print size_t printNumber(unsigned long, uint8_t); size_t printULLNumber(unsigned long long, uint8_t); size_t printFloat(double, uint8_t); + size_t vprintf(char const * fmt, va_list args); protected: void setWriteError(int err = 1) { write_error = err; } public: @@ -67,6 +68,7 @@ class Print size_t print(unsigned long long, int = DEC); size_t print(double, int = 2); size_t print(const Printable&); + size_t printf(char const * fmt, ...); size_t println(const __FlashStringHelper *); size_t println(const String &s); @@ -82,5 +84,6 @@ class Print size_t println(double, int = 2); size_t println(const Printable&); size_t println(void); + size_t printfln(char const * fmt, ...); }; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy