JsonVariantContent.ipp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // Copyright Benoit Blanchon 2014-2015
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #pragma once
  7. namespace ArduinoJson {
  8. // Forward declarations
  9. class JsonArray;
  10. class JsonObject;
  11. namespace Internals {
  12. template <>
  13. inline bool JsonVariantContent::as<bool>() const {
  14. return asBoolean;
  15. }
  16. template <>
  17. inline char const* JsonVariantContent::as<char const*>() const {
  18. return asString;
  19. }
  20. template <>
  21. inline double JsonVariantContent::as<double>() const {
  22. return asDouble;
  23. }
  24. template <>
  25. inline float JsonVariantContent::as<float>() const {
  26. return static_cast<float>(asDouble);
  27. }
  28. template <>
  29. inline JsonArray& JsonVariantContent::as<JsonArray&>() const {
  30. return *asArray;
  31. }
  32. template <>
  33. inline const JsonArray& JsonVariantContent::as<JsonArray const&>() const {
  34. return *asArray;
  35. }
  36. template <>
  37. inline JsonObject& JsonVariantContent::as<JsonObject&>() const {
  38. return *asObject;
  39. }
  40. template <>
  41. inline const JsonObject& JsonVariantContent::as<JsonObject const&>() const {
  42. return *asObject;
  43. }
  44. template <>
  45. inline signed char JsonVariantContent::as<signed char>() const {
  46. return static_cast<signed char>(asLong);
  47. }
  48. template <>
  49. inline signed int JsonVariantContent::as<signed int>() const {
  50. return static_cast<signed int>(asLong);
  51. }
  52. template <>
  53. inline signed long JsonVariantContent::as<signed long>() const {
  54. return static_cast<signed long>(asLong);
  55. }
  56. template <>
  57. inline signed short JsonVariantContent::as<signed short>() const {
  58. return static_cast<signed short>(asLong);
  59. }
  60. template <>
  61. inline unsigned char JsonVariantContent::as<unsigned char>() const {
  62. return static_cast<unsigned char>(asLong);
  63. }
  64. template <>
  65. inline unsigned int JsonVariantContent::as<unsigned int>() const {
  66. return static_cast<unsigned int>(asLong);
  67. }
  68. template <>
  69. inline unsigned long JsonVariantContent::as<unsigned long>() const {
  70. return static_cast<unsigned long>(asLong);
  71. }
  72. template <>
  73. inline unsigned short JsonVariantContent::as<unsigned short>() const {
  74. return static_cast<unsigned short>(asLong);
  75. }
  76. }
  77. }