add dv::to_value for std::vector
This commit is contained in:
parent
3498af6be9
commit
1bdb5c3145
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
namespace dv {
|
namespace dv {
|
||||||
template <int n, typename T>
|
template <int n, typename T>
|
||||||
inline dv::value to_value(glm::vec<n, T> vec) {
|
dv::value to_value(const glm::vec<n, T>& vec) {
|
||||||
auto list = dv::list();
|
auto list = dv::list();
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (size_t i = 0; i < n; i++) {
|
||||||
list.add(vec[i]);
|
list.add(vec[i]);
|
||||||
@ -15,7 +15,7 @@ namespace dv {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <int n, int m, typename T>
|
template <int n, int m, typename T>
|
||||||
inline dv::value to_value(glm::mat<n, m, T> mat) {
|
dv::value to_value(const glm::mat<n, m, T>& mat) {
|
||||||
auto list = dv::list();
|
auto list = dv::list();
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (size_t i = 0; i < n; i++) {
|
||||||
for (size_t j = 0; j < m; j++) {
|
for (size_t j = 0; j < m; j++) {
|
||||||
@ -25,6 +25,15 @@ namespace dv {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
dv::value to_value(const std::vector<T>& vec) {
|
||||||
|
auto values = dv::list();
|
||||||
|
for (const auto& value : vec) {
|
||||||
|
values.add(value);
|
||||||
|
}
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
|
||||||
template <int n>
|
template <int n>
|
||||||
void get_vec(const dv::value& list, glm::vec<n, float>& vec) {
|
void get_vec(const dv::value& list, glm::vec<n, float>& vec) {
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (size_t i = 0; i < n; i++) {
|
||||||
@ -68,11 +77,24 @@ namespace dv {
|
|||||||
if (!map.has(key)) {
|
if (!map.has(key)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto& list = map[key];
|
auto& arr = map[key];
|
||||||
for (size_t y = 0; y < n; y++) {
|
for (size_t y = 0; y < n; y++) {
|
||||||
for (size_t x = 0; x < m; x++) {
|
for (size_t x = 0; x < m; x++) {
|
||||||
mat[y][x] = list[y * m + x].asNumber();
|
mat[y][x] = arr[y * m + x].asNumber();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void get(const dv::value& map, const std::string& key, std::vector<T>& vec) {
|
||||||
|
if (!map.has(key)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const auto& arr = map[key];
|
||||||
|
for (size_t i = 0; i < arr.size(); i++) {
|
||||||
|
T value;
|
||||||
|
arr.at(i).get(value);
|
||||||
|
vec.emplace_back(std::move(value));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user