mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-18 03:19:53 +00:00
triangulation-type setting for non-triangulated polyhedral from iterator
This commit is contained in:
@@ -189,21 +189,15 @@
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
PyObject* pythonize_vector(const std::vector<T>& v) {
|
||||
PyObject* pythonize_vector(const T& v) {
|
||||
const size_t size = v.size();
|
||||
PyObject* pyobj = PyTuple_New(size);
|
||||
for (size_t i = 0; i < size; ++i) {
|
||||
PyTuple_SetItem(pyobj, i, pythonize(v[i]));
|
||||
}
|
||||
return pyobj;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
PyObject* pythonize_vector2(const std::vector< std::vector<T> >& v) {
|
||||
const size_t size = v.size();
|
||||
PyObject* pyobj = PyTuple_New(size);
|
||||
for (size_t i = 0; i < size; ++i) {
|
||||
PyTuple_SetItem(pyobj, i, pythonize_vector(v[i]));
|
||||
if constexpr (is_std_vector_v<typename T::value_type>) {
|
||||
PyTuple_SetItem(pyobj, i, pythonize_vector(v[i]));
|
||||
} else {
|
||||
PyTuple_SetItem(pyobj, i, pythonize(v[i]));
|
||||
}
|
||||
}
|
||||
return pyobj;
|
||||
}
|
||||
|
||||
@@ -38,9 +38,7 @@
|
||||
try {
|
||||
$result = $1.array_->apply_visitor([](auto& v){
|
||||
using U = std::decay_t<decltype(v)>;
|
||||
if constexpr (is_std_vector_vector_v<U>) {
|
||||
return pythonize_vector2(v);
|
||||
} else if constexpr (is_std_vector_v<U>) {
|
||||
if constexpr (is_std_vector_v<U>) {
|
||||
return pythonize_vector(v);
|
||||
} else if constexpr (std::is_same_v<U, EnumerationReference>) {
|
||||
return pythonize(std::string(v.value()));
|
||||
@@ -70,10 +68,22 @@
|
||||
|
||||
%define CREATE_VECTOR_TYPEMAP_OUT(template_type)
|
||||
%typemap(out) std::vector<template_type> {
|
||||
$result = pythonize_vector<template_type>($1);
|
||||
$result = pythonize_vector<std::vector<template_type>>($1);
|
||||
}
|
||||
%typemap(out) const std::vector<template_type>& {
|
||||
$result = pythonize_vector<template_type>(*$1);
|
||||
$result = pythonize_vector<std::vector<template_type>>(*$1);
|
||||
}
|
||||
%typemap(out) std::vector<std::vector<template_type>> {
|
||||
$result = pythonize_vector<std::vector<std::vector<template_type>>>($1);
|
||||
}
|
||||
%typemap(out) const std::vector<std::vector<template_type>>& {
|
||||
$result = pythonize_vector<std::vector<std::vector<template_type>>>(*$1);
|
||||
}
|
||||
%typemap(out) std::vector<std::vector<std::vector<template_type>>> {
|
||||
$result = pythonize_vector<std::vector<std::vector<std::vector<template_type>>>>($1);
|
||||
}
|
||||
%typemap(out) const std::vector<std::vector<std::vector<template_type>>>& {
|
||||
$result = pythonize_vector<std::vector<std::vector<std::vector<template_type>>>>(*$1);
|
||||
}
|
||||
%enddef
|
||||
|
||||
|
||||
Reference in New Issue
Block a user