Print.cpp 974 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Arduino JSON library
  3. * Benoit Blanchon 2014 - MIT License
  4. */
  5. #ifndef ARDUINO
  6. #include "Print.h"
  7. #include <string> // for sprintf, strchr and strcat
  8. size_t Print::print(const char s[])
  9. {
  10. size_t n = 0;
  11. while (*s)
  12. {
  13. n += write(*s++);
  14. }
  15. return n;
  16. }
  17. static inline void ensureStringContainsPoint(char* s)
  18. {
  19. // Ensures that the decimal point is present.
  20. // For example, we don't want "0" but "0.0".
  21. // Otherwise, the value would be considered as an integer by some parsers
  22. // See issue #22
  23. if (!strchr(s, '.'))
  24. strcat(s, ".0");
  25. }
  26. size_t Print::print(double value, int digits)
  27. {
  28. char tmp[32];
  29. sprintf(tmp, "%.*lg", digits+1, value);
  30. if (digits>0)
  31. ensureStringContainsPoint(tmp);
  32. return print(tmp);
  33. }
  34. size_t Print::print(long value)
  35. {
  36. char tmp[32];
  37. sprintf(tmp, "%ld", value);
  38. return print(tmp);
  39. }
  40. size_t Print::println()
  41. {
  42. return write('\r') + write('\n');
  43. }
  44. #endif