#ifndef DATA_DYNAMIC_UTIL_HPP_ #define DATA_DYNAMIC_UTIL_HPP_ #include "dynamic.hpp" #include namespace dynamic { template inline dynamic::List_sptr to_value(glm::vec vec) { auto list = dynamic::create_list(); for (size_t i = 0; i < n; i++) { list->put(vec[i]); } return list; } template inline dynamic::List_sptr to_value(glm::mat mat) { auto list = dynamic::create_list(); for (size_t i = 0; i < n; i++) { for (size_t j = 0; j < m; j++) { list->put(mat[i][j]); } } return list; } template void get_vec(const dynamic::Map_sptr& root, const std::string& name, glm::vec& vec) { if (const auto& list = root->list(name)) { for (size_t i = 0; i < n; i++) { vec[i] = list->num(i); } } } template void get_vec(const dynamic::List_sptr& root, size_t index, glm::vec& vec) { if (const auto& list = root->list(index)) { for (size_t i = 0; i < n; i++) { vec[i] = list->num(i); } } } template void get_mat(const dynamic::Map_sptr& root, const std::string& name, glm::mat& mat) { if (const auto& list = root->list(name)) { for (size_t y = 0; y < n; y++) { for (size_t x = 0; x < m; x++) { mat[y][x] = list->num(y*m+x); } } } } template void get_mat(const dynamic::List_sptr& root, size_t index, glm::mat& mat) { if (const auto& list = root->list(index)) { for (size_t y = 0; y < n; y++) { for (size_t x = 0; x < m; x++) { mat[y][x] = list->num(y*m+x); } } } } } #endif // DATA_DYNAMIC_UTIL_HPP_