From 3ef98f56934bba642ff4848472c36065e8b0e61f Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Fri, 27 May 2016 00:18:19 +0200 Subject: [PATCH] [DEV] add some basic type for the template call --- jus/Future.cpp | 324 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 322 insertions(+), 2 deletions(-) diff --git a/jus/Future.cpp b/jus/Future.cpp index f9b5fac..78f14f8 100644 --- a/jus/Future.cpp +++ b/jus/Future.cpp @@ -25,6 +25,22 @@ namespace jus { return val.toBoolean().get(); } template<> + int64_t jus::Future::get() { + if (m_data == nullptr) { + return 0; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return 0; + } + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); + return 0; + } + return int64_t(val.toNumber().get()); + } + template<> int32_t jus::Future::get() { if (m_data == nullptr) { return 0; @@ -41,6 +57,102 @@ namespace jus { return int32_t(val.toNumber().get()); } template<> + int16_t jus::Future::get() { + if (m_data == nullptr) { + return 0; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return 0; + } + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); + return 0; + } + return int16_t(val.toNumber().get()); + } + template<> + int8_t jus::Future::get() { + if (m_data == nullptr) { + return 0; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return 0; + } + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); + return 0; + } + return int8_t(val.toNumber().get()); + } + template<> + uint64_t jus::Future::get() { + if (m_data == nullptr) { + return 0; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return 0; + } + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); + return 0; + } + return uint64_t(val.toNumber().get()); + } + template<> + uint32_t jus::Future::get() { + if (m_data == nullptr) { + return 0; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return 0; + } + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); + return 0; + } + return uint32_t(val.toNumber().get()); + } + template<> + uint16_t jus::Future::get() { + if (m_data == nullptr) { + return 0; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return 0; + } + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); + return 0; + } + return uint16_t(val.toNumber().get()); + } + template<> + uint8_t jus::Future::get() { + if (m_data == nullptr) { + return 0; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return 0; + } + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); + return 0; + } + return uint8_t(val.toNumber().get()); + } + template<> double jus::Future::get() { if (m_data == nullptr) { return 0; @@ -57,6 +169,22 @@ namespace jus { return val.toNumber().get(); } template<> + float jus::Future::get() { + if (m_data == nullptr) { + return 0.0f; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return 0.0f; + } + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); + return 0.0f; + } + return val.toNumber().get(); + } + template<> std::string jus::Future::get() { if (m_data == nullptr) { return ""; @@ -73,6 +201,30 @@ namespace jus { return val.toString().get(); } template<> + std::vector jus::Future>::get() { + std::vector out; + if (m_data == nullptr) { + return out; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return out; + } + if (val.isArray() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); + return out; + } + for (auto it : val.toArray()) { + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Number'"); + continue; + } + out.push_back(int64_t(val.toNumber().get())); + } + return out; + } + template<> std::vector jus::Future>::get() { std::vector out; if (m_data == nullptr) { @@ -81,11 +233,11 @@ namespace jus { ejson::Value val = m_data->m_returnData["return"]; if (val.exist() == false) { JUS_WARNING("No Return value ..."); - return std::vector(); + return out; } if (val.isArray() == false) { JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); - return std::vector(); + return out; } for (auto it : val.toArray()) { if (val.isNumber() == false) { @@ -97,6 +249,150 @@ namespace jus { return out; } template<> + std::vector jus::Future>::get() { + std::vector out; + if (m_data == nullptr) { + return out; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return out; + } + if (val.isArray() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); + return out; + } + for (auto it : val.toArray()) { + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Number'"); + continue; + } + out.push_back(int16_t(val.toNumber().get())); + } + return out; + } + template<> + std::vector jus::Future>::get() { + std::vector out; + if (m_data == nullptr) { + return out; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return out; + } + if (val.isArray() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); + return out; + } + for (auto it : val.toArray()) { + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Number'"); + continue; + } + out.push_back(int8_t(val.toNumber().get())); + } + return out; + } + template<> + std::vector jus::Future>::get() { + std::vector out; + if (m_data == nullptr) { + return out; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return out; + } + if (val.isArray() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); + return out; + } + for (auto it : val.toArray()) { + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Number'"); + continue; + } + out.push_back(uint64_t(val.toNumber().get())); + } + return out; + } + template<> + std::vector jus::Future>::get() { + std::vector out; + if (m_data == nullptr) { + return out; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return out; + } + if (val.isArray() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); + return out; + } + for (auto it : val.toArray()) { + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Number'"); + continue; + } + out.push_back(uint32_t(val.toNumber().get())); + } + return out; + } + template<> + std::vector jus::Future>::get() { + std::vector out; + if (m_data == nullptr) { + return out; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return out; + } + if (val.isArray() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); + return out; + } + for (auto it : val.toArray()) { + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Number'"); + continue; + } + out.push_back(int16_t(val.toNumber().get())); + } + return out; + } + template<> + std::vector jus::Future>::get() { + std::vector out; + if (m_data == nullptr) { + return out; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return out; + } + if (val.isArray() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); + return out; + } + for (auto it : val.toArray()) { + if (val.isNumber() == false) { + JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Number'"); + continue; + } + out.push_back(uint8_t(val.toNumber().get())); + } + return out; + } + template<> std::vector jus::Future>::get() { std::vector out; if (m_data == nullptr) { @@ -121,6 +417,30 @@ namespace jus { return out; } template<> + std::vector jus::Future>::get() { + std::vector out; + if (m_data == nullptr) { + return out; + } + ejson::Value val = m_data->m_returnData["return"]; + if (val.exist() == false) { + JUS_WARNING("No Return value ..."); + return out; + } + if (val.isArray() == false) { + JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Array'"); + return out; + } + for (auto it : val.toArray()) { + if (it.isNumber() == false) { + JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Number'"); + continue; + } + out.push_back(float(it.toNumber().get())); + } + return out; + } + template<> std::vector jus::Future>::get() { std::vector out; if (m_data == nullptr) {