/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/python/contourpy/src/output_array.h
70 строк
2 KB
Anton Myagkov
Update ydb version to 24.4 (#4579)
07 фев 2026, 11:59
Не верифицирован
07 фев 2026, 11:59
2c21cae
Код
Авторство
О чём код?
#ifndef CONTOURPY_OUTPUT_ARRAY_H #define CONTOURPY_OUTPUT_ARRAY_H #include "common.h" #include <vector> namespace contourpy { // A reusable array that is output from C++ to Python. Depending on the chosen line or fill type, // it can either be created as a NumPy array that will be directly returned to the Python caller, // or as a C++ vector that will be further manipulated (such as split up) before being converted to // NumPy array(s) for returning. BaseContourGenerator's marching does not care which form it is as // it just writes values to either array using an incrementing pointer. template <typename T> class OutputArray { public: OutputArray() : size(0), start(nullptr), current(nullptr) {} void clear() { vector.clear(); size = 0; start = current = nullptr; } void create_cpp(count_t new_size) { assert(new_size > 0); size = new_size; vector.resize(size); start = current = vector.data(); } py::array_t<T> create_python(count_t new_size) { assert(new_size > 0); size = new_size; py::array_t<T> py_array(size); start = current = py_array.mutable_data(); return py_array; } py::array_t<T> create_python(count_t shape0, count_t shape1) { assert(shape0 > 0 && shape1 > 0); size = shape0*shape1; py::array_t<T> py_array({shape0, shape1}); start = current = py_array.mutable_data(); return py_array; } // Non-copyable and non-moveable. OutputArray(const OutputArray& other) = delete; OutputArray(const OutputArray&& other) = delete; OutputArray& operator=(const OutputArray& other) = delete; OutputArray& operator=(const OutputArray&& other) = delete; std::vector<T> vector; count_t size; T* start; // Start of array, whether C++ or Python. T* current; // Where to write next value to before incrementing. }; } // namespace contourpy #endif // CONTOURPY_OUTPUT_ARRAY_H