#pragma once #include #include #include namespace plsm { namespace utils { template inline auto mapToJson(const std::vector &vector) { boost::json::array result(vector.size()); for (size_t i = 0; i < vector.size(); i++) result[i] = vector[i]->toJson(); return result; } template inline auto mapToJson(const std::vector &vector, const Mapper &mapper) { boost::json::array result(vector.size()); for (size_t i = 0; i < vector.size(); i++) result[i] = mapper(vector[i]); return result; } template inline bool is(const A *value) { return value && dynamic_cast(value); } template inline std::unique_ptr ptrcast(std::unique_ptr &ptr) { return std::unique_ptr(static_cast(ptr.release())); } template inline std::shared_ptr ptrcast(std::shared_ptr &ptr) { return std::static_pointer_cast(ptr); } // template inline bool is(const A &value) { // return dynamic_cast(&value) != nullptr; // } } // namespace utils } // namespace plsm