MCPcopy Create free account
hub / github.com/Kitware/VTK / vtkPythonSetNArray

Function vtkPythonSetNArray

Wrapping/PythonCore/vtkPythonArgs.cxx:754–839  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

752
753template <class T>
754bool vtkPythonSetNArray(PyObject* o, const T* a, int ndim, const size_t* dims)
755{
756 if (a)
757 {
758 size_t inc = 1;
759 for (int j = 1; j < ndim; j++)
760 {
761 inc *= dims[j];
762 }
763
764 size_t n = dims[0];
765 Py_ssize_t m = static_cast<Py_ssize_t>(n);
766
767 if (PyList_Check(o))
768 {
769 m = PyList_Size(o);
770 if (m == static_cast<Py_ssize_t>(n))
771 {
772 bool r = true;
773 if (ndim > 1)
774 {
775 for (Py_ssize_t i = 0; i < m && r; i++)
776 {
777 PyObject* s = PyList_GetItem(o, i);
778 r = vtkPythonSetNArray(s, a, ndim - 1, dims + 1);
779 a += inc;
780 }
781 }
782 else
783 {
784 for (Py_ssize_t i = 0; i < m && r; i++)
785 {
786 r = false;
787 PyObject* s = vtkPythonArgs::BuildValue(a[i]);
788 if (s)
789 {
790 PyList_SetItem(o, i, s);
791 r = true;
792 }
793 }
794 }
795 return r;
796 }
797 }
798 else if (PySequence_Check(o))
799 {
800 m = PySequence_Size(o);
801 if (m == static_cast<Py_ssize_t>(n))
802 {
803 bool r = true;
804 if (ndim > 1)
805 {
806 for (Py_ssize_t i = 0; i < m && r; i++)
807 {
808 r = false;
809 PyObject* s = PySequence_GetItem(o, i);
810 if (s)
811 {

Callers

nothing calls this directly

Calls 1

vtkPythonSequenceErrorFunction · 0.85

Tested by

no test coverage detected