/** @file * @author Edouard DUPIN * @copyright 2014, Edouard DUPIN, all right reserved * @license APACHE v2.0 (see license file) */ #include #include #include namespace jus { template<> bool jus::Future::get() { if (m_data == nullptr) { return false; } ejson::Value val = m_data->m_returnData["return"]; if (val.exist() == false) { JUS_WARNING("No Return value ..."); return false; } if (val.isBoolean() == false) { JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Boolean'"); return false; } 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; } 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 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; } ejson::Value val = m_data->m_returnData["return"]; if (val.exist() == false) { JUS_WARNING("No Return value ..."); return 0.0; } if (val.isNumber() == false) { JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'Number'"); return 0.0; } 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 ""; } ejson::Value val = m_data->m_returnData["return"]; if (val.exist() == false) { JUS_WARNING("No Return value ..."); return ""; } if (val.isString() == false) { JUS_WARNING("Wrong return Type get '" << val.getType() << " instead of 'String'"); return ""; } 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) { 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(int32_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(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) { 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(it.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 (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) { 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.isString() == false) { JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'String'"); continue; } out.push_back(it.toString().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 (it.isBoolean() == false) { JUS_WARNING("Wrong return Type (part of array) get '" << it.getType() << " instead of 'Boolean'"); continue; } out.push_back(it.toBoolean().get()); } return out; } }