From cf426f840380d320d534c7c1a86681f54ee48f37 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 27 Apr 2024 03:25:24 -0500 Subject: [PATCH] wip --- .../controls/lib/lateral_mpc_lib/SConscript | 90 + .../lateral_mpc_lib/c_generated_code/Makefile | 211 - .../c_generated_code/acados_ocp_solver_pyx.c | 44066 ---------------- .../c_generated_code/acados_ocp_solver_pyx.so | Bin 1744968 -> 0 bytes .../c_generated_code/acados_sim_solver_lat.c | 290 - .../c_generated_code/acados_solver.pxd | 62 - .../c_generated_code/acados_solver_lat.c | 1034 - .../lat_cost/lat_cost_y_0_fun.c | 167 - .../lat_cost/lat_cost_y_0_fun_jac_ut_xt.c | 182 - .../lat_cost/lat_cost_y_0_hess.c | 152 - .../lat_cost/lat_cost_y_e_fun.c | 158 - .../lat_cost/lat_cost_y_e_fun_jac_ut_xt.c | 170 - .../lat_cost/lat_cost_y_e_hess.c | 150 - .../lat_cost/lat_cost_y_fun.c | 167 - .../lat_cost/lat_cost_y_fun_jac_ut_xt.c | 182 - .../lat_cost/lat_cost_y_hess.c | 152 - .../lat_model/lat_expl_ode_fun.c | 164 - .../lat_model/lat_expl_vde_adj.c | 186 - .../lat_model/lat_expl_vde_forw.c | 299 - .../libacados_ocp_solver_lat.so | Bin 150432 -> 0 bytes .../c_generated_code/main_lat.c | 216 - .../c_generated_code/main_sim_lat.c | 125 - 22 files changed, 90 insertions(+), 48133 deletions(-) create mode 100644 selfdrive/controls/lib/lateral_mpc_lib/SConscript delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/Makefile delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c delete mode 100755 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_sim_solver_lat.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_solver.pxd delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_solver_lat.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun_jac_ut_xt.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_hess.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_fun.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_fun_jac_ut_xt.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_hess.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_fun.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_fun_jac_ut_xt.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_hess.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_ode_fun.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_vde_adj.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_vde_forw.c delete mode 100755 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/libacados_ocp_solver_lat.so delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/main_lat.c delete mode 100644 selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/main_sim_lat.c diff --git a/selfdrive/controls/lib/lateral_mpc_lib/SConscript b/selfdrive/controls/lib/lateral_mpc_lib/SConscript new file mode 100644 index 0000000..b6603e6 --- /dev/null +++ b/selfdrive/controls/lib/lateral_mpc_lib/SConscript @@ -0,0 +1,90 @@ +Import('env', 'envCython', 'arch', 'messaging_python', 'common_python', 'opendbc_python') + +gen = "c_generated_code" + +casadi_model = [ + f'{gen}/lat_model/lat_expl_ode_fun.c', + f'{gen}/lat_model/lat_expl_vde_forw.c', +] + +casadi_cost_y = [ + f'{gen}/lat_cost/lat_cost_y_fun.c', + f'{gen}/lat_cost/lat_cost_y_fun_jac_ut_xt.c', + f'{gen}/lat_cost/lat_cost_y_hess.c', +] + +casadi_cost_e = [ + f'{gen}/lat_cost/lat_cost_y_e_fun.c', + f'{gen}/lat_cost/lat_cost_y_e_fun_jac_ut_xt.c', + f'{gen}/lat_cost/lat_cost_y_e_hess.c', +] + +casadi_cost_0 = [ + f'{gen}/lat_cost/lat_cost_y_0_fun.c', + f'{gen}/lat_cost/lat_cost_y_0_fun_jac_ut_xt.c', + f'{gen}/lat_cost/lat_cost_y_0_hess.c', +] + +build_files = [f'{gen}/acados_solver_lat.c'] + casadi_model + casadi_cost_y + casadi_cost_e + casadi_cost_0 + +# extra generated files used to trigger a rebuild +generated_files = [ + f'{gen}/Makefile', + + f'{gen}/main_lat.c', + f'{gen}/main_sim_lat.c', + f'{gen}/acados_solver_lat.h', + f'{gen}/acados_sim_solver_lat.h', + f'{gen}/acados_sim_solver_lat.c', + f'{gen}/acados_solver.pxd', + + f'{gen}/lat_model/lat_expl_vde_adj.c', + + f'{gen}/lat_model/lat_model.h', + f'{gen}/lat_constraints/lat_constraints.h', + f'{gen}/lat_cost/lat_cost.h', +] + build_files + +acados_dir = '#third_party/acados' +acados_templates_dir = '#third_party/acados/acados_template/c_templates_tera' + +source_list = ['lat_mpc.py', + '#selfdrive/modeld/constants.py', + f'{acados_dir}/include/acados_c/ocp_nlp_interface.h', + f'{acados_templates_dir}/acados_solver.in.c', +] + +lenv = env.Clone() +lenv.Clean(generated_files, Dir(gen)) + +generated_lat = lenv.Command(generated_files, + source_list, + f"cd {Dir('.').abspath} && python3 lat_mpc.py") +lenv.Depends(generated_lat, [messaging_python, common_python, opendbc_python]) + +lenv["CFLAGS"].append("-DACADOS_WITH_QPOASES") +lenv["CXXFLAGS"].append("-DACADOS_WITH_QPOASES") +lenv["CCFLAGS"].append("-Wno-unused") +if arch != "Darwin": + lenv["LINKFLAGS"].append("-Wl,--disable-new-dtags") +lib_solver = lenv.SharedLibrary(f"{gen}/acados_ocp_solver_lat", + build_files, + LIBS=['m', 'acados', 'hpipm', 'blasfeo', 'qpOASES_e']) + +# generate cython stuff +acados_ocp_solver_pyx = File("#third_party/acados/acados_template/acados_ocp_solver_pyx.pyx") +acados_ocp_solver_common = File("#third_party/acados/acados_template/acados_solver_common.pxd") +libacados_ocp_solver_pxd = File(f'{gen}/acados_solver.pxd') +libacados_ocp_solver_c = File(f'{gen}/acados_ocp_solver_pyx.c') + +lenv2 = envCython.Clone() +lenv2["LINKFLAGS"] += [lib_solver[0].get_labspath()] +lenv2.Command(libacados_ocp_solver_c, + [acados_ocp_solver_pyx, acados_ocp_solver_common, libacados_ocp_solver_pxd], + f'cython' + \ + f' -o {libacados_ocp_solver_c.get_labspath()}' + \ + f' -I {libacados_ocp_solver_pxd.get_dir().get_labspath()}' + \ + f' -I {acados_ocp_solver_common.get_dir().get_labspath()}' + \ + f' {acados_ocp_solver_pyx.get_labspath()}') +lib_cython = lenv2.Program(f'{gen}/acados_ocp_solver_pyx.so', [libacados_ocp_solver_c]) +lenv2.Depends(lib_cython, lib_solver) diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/Makefile b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/Makefile deleted file mode 100644 index 7520bcd..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/Makefile +++ /dev/null @@ -1,211 +0,0 @@ -# -# Copyright (c) The acados authors. -# -# This file is part of acados. -# -# The 2-Clause BSD License -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE.; -# - - - - - -# define sources and use make's implicit rules to generate object files (*.o) - -# model -MODEL_SRC= -MODEL_SRC+= lat_model/lat_expl_ode_fun.c -MODEL_SRC+= lat_model/lat_expl_vde_forw.c -MODEL_SRC+= lat_model/lat_expl_vde_adj.c -MODEL_OBJ := $(MODEL_SRC:.c=.o) - -# optimal control problem - mostly CasADi exports -OCP_SRC= -OCP_SRC+= lat_cost/lat_cost_y_0_fun.c -OCP_SRC+= lat_cost/lat_cost_y_0_fun_jac_ut_xt.c -OCP_SRC+= lat_cost/lat_cost_y_0_hess.c -OCP_SRC+= lat_cost/lat_cost_y_fun.c -OCP_SRC+= lat_cost/lat_cost_y_fun_jac_ut_xt.c -OCP_SRC+= lat_cost/lat_cost_y_hess.c -OCP_SRC+= lat_cost/lat_cost_y_e_fun.c -OCP_SRC+= lat_cost/lat_cost_y_e_fun_jac_ut_xt.c -OCP_SRC+= lat_cost/lat_cost_y_e_hess.c - -OCP_SRC+= acados_solver_lat.c -OCP_OBJ := $(OCP_SRC:.c=.o) - -# for sim solver -SIM_SRC= acados_sim_solver_lat.c -SIM_OBJ := $(SIM_SRC:.c=.o) - -# for target example -EX_SRC= main_lat.c -EX_OBJ := $(EX_SRC:.c=.o) -EX_EXE := $(EX_SRC:.c=) - -# for target example_sim -EX_SIM_SRC= main_sim_lat.c -EX_SIM_OBJ := $(EX_SIM_SRC:.c=.o) -EX_SIM_EXE := $(EX_SIM_SRC:.c=) - -# combine model, sim and ocp object files -OBJ= -OBJ+= $(MODEL_OBJ) -OBJ+= $(SIM_OBJ) -OBJ+= $(OCP_OBJ) - -EXTERNAL_DIR= -EXTERNAL_LIB= - -INCLUDE_PATH = /data/openpilot/third_party/acados/include -LIB_PATH = /data/openpilot/third_party/acados/lib - -# preprocessor flags for make's implicit rules -CPPFLAGS+= -I$(INCLUDE_PATH) -CPPFLAGS+= -I$(INCLUDE_PATH)/acados -CPPFLAGS+= -I$(INCLUDE_PATH)/blasfeo/include -CPPFLAGS+= -I$(INCLUDE_PATH)/hpipm/include - - -# define the c-compiler flags for make's implicit rules -CFLAGS = -fPIC -std=c99 -O2#-fno-diagnostics-show-line-numbers -g -# # Debugging -# CFLAGS += -g3 - -# linker flags -LDFLAGS+= -L$(LIB_PATH) - -# link to libraries -LDLIBS+= -lacados -LDLIBS+= -lhpipm -LDLIBS+= -lblasfeo -LDLIBS+= -lm -LDLIBS+= - -# libraries -LIBACADOS_SOLVER=libacados_solver_lat.so -LIBACADOS_OCP_SOLVER=libacados_ocp_solver_lat.so -LIBACADOS_SIM_SOLVER=lib$(SIM_SRC:.c=.so) - -# virtual targets -.PHONY : all clean - -#all: clean example_sim example shared_lib - -all: clean example_sim example -shared_lib: bundled_shared_lib ocp_shared_lib sim_shared_lib - -# some linker targets -example: $(EX_OBJ) $(OBJ) - $(CC) $^ -o $(EX_EXE) $(LDFLAGS) $(LDLIBS) - -example_sim: $(EX_SIM_OBJ) $(MODEL_OBJ) $(SIM_OBJ) - $(CC) $^ -o $(EX_SIM_EXE) $(LDFLAGS) $(LDLIBS) - -bundled_shared_lib: $(OBJ) - $(CC) -shared $^ -o $(LIBACADOS_SOLVER) $(LDFLAGS) $(LDLIBS) - -ocp_shared_lib: $(OCP_OBJ) $(MODEL_OBJ) - $(CC) -shared $^ -o $(LIBACADOS_OCP_SOLVER) $(LDFLAGS) $(LDLIBS) \ - -L$(EXTERNAL_DIR) -l$(EXTERNAL_LIB) - -sim_shared_lib: $(SIM_OBJ) $(MODEL_OBJ) - $(CC) -shared $^ -o $(LIBACADOS_SIM_SOLVER) $(LDFLAGS) $(LDLIBS) - - -# Cython targets -ocp_cython_c: ocp_shared_lib - cython \ - -o acados_ocp_solver_pyx.c \ - -I $(INCLUDE_PATH)/../interfaces/acados_template/acados_template \ - $(INCLUDE_PATH)/../interfaces/acados_template/acados_template/acados_ocp_solver_pyx.pyx \ - -I /data/openpilot/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code \ - -ocp_cython_o: ocp_cython_c - $(CC) $(ACADOS_FLAGS) -c -O2 \ - -fPIC \ - -o acados_ocp_solver_pyx.o \ - -I $(INCLUDE_PATH)/blasfeo/include/ \ - -I $(INCLUDE_PATH)/hpipm/include/ \ - -I $(INCLUDE_PATH) \ - -I /usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/core/include \ - -I /usr/local/pyenv/versions/3.11.4/include/python3.11 \ - acados_ocp_solver_pyx.c \ - -ocp_cython: ocp_cython_o - $(CC) $(ACADOS_FLAGS) -shared \ - -o acados_ocp_solver_pyx.so \ - -Wl,-rpath=$(LIB_PATH) \ - acados_ocp_solver_pyx.o \ - $(abspath .)/libacados_ocp_solver_lat.so \ - $(LDFLAGS) $(LDLIBS) - -# Sim Cython targets -sim_cython_c: sim_shared_lib - cython \ - -o acados_sim_solver_pyx.c \ - -I $(INCLUDE_PATH)/../interfaces/acados_template/acados_template \ - $(INCLUDE_PATH)/../interfaces/acados_template/acados_template/acados_sim_solver_pyx.pyx \ - -I /data/openpilot/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code \ - -sim_cython_o: sim_cython_c - $(CC) $(ACADOS_FLAGS) -c -O2 \ - -fPIC \ - -o acados_sim_solver_pyx.o \ - -I $(INCLUDE_PATH)/blasfeo/include/ \ - -I $(INCLUDE_PATH)/hpipm/include/ \ - -I $(INCLUDE_PATH) \ - -I /usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/core/include \ - -I /usr/local/pyenv/versions/3.11.4/include/python3.11 \ - acados_sim_solver_pyx.c \ - -sim_cython: sim_cython_o - $(CC) $(ACADOS_FLAGS) -shared \ - -o acados_sim_solver_pyx.so \ - -Wl,-rpath=$(LIB_PATH) \ - acados_sim_solver_pyx.o \ - $(abspath .)/libacados_sim_solver_lat.so \ - $(LDFLAGS) $(LDLIBS) - -clean: - $(RM) $(OBJ) $(EX_OBJ) $(EX_SIM_OBJ) - $(RM) $(LIBACADOS_SOLVER) $(LIBACADOS_OCP_SOLVER) $(LIBACADOS_SIM_SOLVER) - $(RM) $(EX_EXE) $(EX_SIM_EXE) - -clean_ocp_shared_lib: - $(RM) $(LIBACADOS_OCP_SOLVER) - $(RM) $(OCP_OBJ) - -clean_ocp_cython: - $(RM) libacados_ocp_solver_lat.so - $(RM) acados_solver_lat.o - $(RM) acados_ocp_solver_pyx.so - $(RM) acados_ocp_solver_pyx.o - -clean_sim_cython: - $(RM) libacados_sim_solver_lat.so - $(RM) acados_sim_solver_lat.o - $(RM) acados_sim_solver_pyx.so - $(RM) acados_sim_solver_pyx.o diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c deleted file mode 100644 index fcbe6f5..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c +++ /dev/null @@ -1,44066 +0,0 @@ -/* Generated by Cython 3.0.8 */ - -#ifndef PY_SSIZE_T_CLEAN -#define PY_SSIZE_T_CLEAN -#endif /* PY_SSIZE_T_CLEAN */ -#if defined(CYTHON_LIMITED_API) && 0 - #ifndef Py_LIMITED_API - #if CYTHON_LIMITED_API+0 > 0x03030000 - #define Py_LIMITED_API CYTHON_LIMITED_API - #else - #define Py_LIMITED_API 0x03030000 - #endif - #endif -#endif - -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.7+ or Python 3.3+. -#else -#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API -#define __PYX_EXTRA_ABI_MODULE_NAME "limited" -#else -#define __PYX_EXTRA_ABI_MODULE_NAME "" -#endif -#define CYTHON_ABI "3_0_8" __PYX_EXTRA_ABI_MODULE_NAME -#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI -#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." -#define CYTHON_HEX_VERSION 0x030008F0 -#define CYTHON_FUTURE_DIVISION 1 -#include -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #define HAVE_LONG_LONG -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX -#if defined(GRAALVM_PYTHON) - /* For very preliminary testing purposes. Most variables are set the same as PyPy. - The existence of this section does not imply that anything works or is even tested */ - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #define CYTHON_COMPILING_IN_LIMITED_API 0 - #define CYTHON_COMPILING_IN_GRAAL 1 - #define CYTHON_COMPILING_IN_NOGIL 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_TYPE_SPECS - #define CYTHON_USE_TYPE_SPECS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_GIL - #define CYTHON_FAST_GIL 0 - #undef CYTHON_METH_FASTCALL - #define CYTHON_METH_FASTCALL 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #ifndef CYTHON_PEP487_INIT_SUBCLASS - #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) - #endif - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 1 - #undef CYTHON_USE_MODULE_STATE - #define CYTHON_USE_MODULE_STATE 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 - #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC - #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 - #endif -#elif defined(PYPY_VERSION) - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #define CYTHON_COMPILING_IN_LIMITED_API 0 - #define CYTHON_COMPILING_IN_GRAAL 0 - #define CYTHON_COMPILING_IN_NOGIL 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #ifndef CYTHON_USE_TYPE_SPECS - #define CYTHON_USE_TYPE_SPECS 0 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_GIL - #define CYTHON_FAST_GIL 0 - #undef CYTHON_METH_FASTCALL - #define CYTHON_METH_FASTCALL 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #ifndef CYTHON_PEP487_INIT_SUBCLASS - #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) - #endif - #if PY_VERSION_HEX < 0x03090000 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) - #define CYTHON_PEP489_MULTI_PHASE_INIT 1 - #endif - #undef CYTHON_USE_MODULE_STATE - #define CYTHON_USE_MODULE_STATE 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 - #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC - #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 - #endif -#elif defined(CYTHON_LIMITED_API) - #ifdef Py_LIMITED_API - #undef __PYX_LIMITED_VERSION_HEX - #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API - #endif - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #define CYTHON_COMPILING_IN_LIMITED_API 1 - #define CYTHON_COMPILING_IN_GRAAL 0 - #define CYTHON_COMPILING_IN_NOGIL 0 - #undef CYTHON_CLINE_IN_TRACEBACK - #define CYTHON_CLINE_IN_TRACEBACK 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_TYPE_SPECS - #define CYTHON_USE_TYPE_SPECS 1 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #endif - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_GIL - #define CYTHON_FAST_GIL 0 - #undef CYTHON_METH_FASTCALL - #define CYTHON_METH_FASTCALL 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #ifndef CYTHON_PEP487_INIT_SUBCLASS - #define CYTHON_PEP487_INIT_SUBCLASS 1 - #endif - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_MODULE_STATE - #define CYTHON_USE_MODULE_STATE 1 - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #endif - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 - #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC - #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 - #endif -#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #define CYTHON_COMPILING_IN_LIMITED_API 0 - #define CYTHON_COMPILING_IN_GRAAL 0 - #define CYTHON_COMPILING_IN_NOGIL 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #ifndef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 1 - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 1 - #endif - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #define CYTHON_COMPILING_IN_LIMITED_API 0 - #define CYTHON_COMPILING_IN_GRAAL 0 - #define CYTHON_COMPILING_IN_NOGIL 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #ifndef CYTHON_USE_TYPE_SPECS - #define CYTHON_USE_TYPE_SPECS 0 - #endif - #ifndef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #ifndef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_GIL - #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) - #endif - #ifndef CYTHON_METH_FASTCALL - #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP487_INIT_SUBCLASS - #define CYTHON_PEP487_INIT_SUBCLASS 1 - #endif - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) - #define CYTHON_PEP489_MULTI_PHASE_INIT 1 - #endif - #ifndef CYTHON_USE_MODULE_STATE - #define CYTHON_USE_MODULE_STATE 0 - #endif - #if PY_VERSION_HEX < 0x030400a1 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #elif !defined(CYTHON_USE_TP_FINALIZE) - #define CYTHON_USE_TP_FINALIZE 1 - #endif - #if PY_VERSION_HEX < 0x030600B1 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #elif !defined(CYTHON_USE_DICT_VERSIONS) - #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) - #endif - #if PY_VERSION_HEX < 0x030700A3 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 - #elif !defined(CYTHON_USE_EXC_INFO_STACK) - #define CYTHON_USE_EXC_INFO_STACK 1 - #endif - #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC - #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if !defined(CYTHON_VECTORCALL) -#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) -#endif -#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) -#if CYTHON_USE_PYLONG_INTERNALS - #if PY_MAJOR_VERSION < 3 - #include "longintrepr.h" - #endif - #undef SHIFT - #undef BASE - #undef MASK - #ifdef SIZEOF_VOID_P - enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; - #endif -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED - #if defined(__cplusplus) - /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 - * but leads to warnings with -pedantic, since it is a C++17 feature */ - #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) - #if __has_cpp_attribute(maybe_unused) - #define CYTHON_UNUSED [[maybe_unused]] - #endif - #endif - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_UNUSED_VAR -# if defined(__cplusplus) - template void CYTHON_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR - #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_USE_CPP_STD_MOVE - #if defined(__cplusplus) && (\ - __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) - #define CYTHON_USE_CPP_STD_MOVE 1 - #else - #define CYTHON_USE_CPP_STD_MOVE 0 - #endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - #endif - #endif - #if _MSC_VER < 1300 - #ifdef _WIN64 - typedef unsigned long long __pyx_uintptr_t; - #else - typedef unsigned int __pyx_uintptr_t; - #endif - #else - #ifdef _WIN64 - typedef unsigned __int64 __pyx_uintptr_t; - #else - typedef unsigned __int32 __pyx_uintptr_t; - #endif - #endif -#else - #include - typedef uintptr_t __pyx_uintptr_t; -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) - /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 - * but leads to warnings with -pedantic, since it is a C++17 feature */ - #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif -#ifdef __cplusplus - template - struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; - #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) -#else - #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) -#endif -#if CYTHON_COMPILING_IN_PYPY == 1 - #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) -#else - #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) -#endif -#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_DefaultClassType PyClass_Type - #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" - #define __Pyx_DefaultClassType PyType_Type -#if CYTHON_COMPILING_IN_LIMITED_API - static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, - PyObject *code, PyObject *c, PyObject* n, PyObject *v, - PyObject *fv, PyObject *cell, PyObject* fn, - PyObject *name, int fline, PyObject *lnos) { - PyObject *exception_table = NULL; - PyObject *types_module=NULL, *code_type=NULL, *result=NULL; - #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 - PyObject *version_info; - PyObject *py_minor_version = NULL; - #endif - long minor_version = 0; - PyObject *type, *value, *traceback; - PyErr_Fetch(&type, &value, &traceback); - #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 - minor_version = 11; - #else - if (!(version_info = PySys_GetObject("version_info"))) goto end; - if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; - minor_version = PyLong_AsLong(py_minor_version); - Py_DECREF(py_minor_version); - if (minor_version == -1 && PyErr_Occurred()) goto end; - #endif - if (!(types_module = PyImport_ImportModule("types"))) goto end; - if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; - if (minor_version <= 7) { - (void)p; - result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, - c, n, v, fn, name, fline, lnos, fv, cell); - } else if (minor_version <= 10) { - result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, - c, n, v, fn, name, fline, lnos, fv, cell); - } else { - if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; - result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, - c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); - } - end: - Py_XDECREF(code_type); - Py_XDECREF(exception_table); - Py_XDECREF(types_module); - if (type) { - PyErr_Restore(type, value, traceback); - } - return result; - } - #ifndef CO_OPTIMIZED - #define CO_OPTIMIZED 0x0001 - #endif - #ifndef CO_NEWLOCALS - #define CO_NEWLOCALS 0x0002 - #endif - #ifndef CO_VARARGS - #define CO_VARARGS 0x0004 - #endif - #ifndef CO_VARKEYWORDS - #define CO_VARKEYWORDS 0x0008 - #endif - #ifndef CO_ASYNC_GENERATOR - #define CO_ASYNC_GENERATOR 0x0200 - #endif - #ifndef CO_GENERATOR - #define CO_GENERATOR 0x0020 - #endif - #ifndef CO_COROUTINE - #define CO_COROUTINE 0x0080 - #endif -#elif PY_VERSION_HEX >= 0x030B0000 - static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, - PyObject *code, PyObject *c, PyObject* n, PyObject *v, - PyObject *fv, PyObject *cell, PyObject* fn, - PyObject *name, int fline, PyObject *lnos) { - PyCodeObject *result; - PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); - if (!empty_bytes) return NULL; - result = - #if PY_VERSION_HEX >= 0x030C0000 - PyUnstable_Code_NewWithPosOnlyArgs - #else - PyCode_NewWithPosOnlyArgs - #endif - (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); - Py_DECREF(empty_bytes); - return result; - } -#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#else - #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#endif -#endif -#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) - #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) -#else - #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) -#endif -#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) - #define __Pyx_Py_Is(x, y) Py_Is(x, y) -#else - #define __Pyx_Py_Is(x, y) ((x) == (y)) -#endif -#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) - #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) -#else - #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) -#endif -#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) - #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) -#else - #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) -#endif -#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) - #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) -#else - #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) -#endif -#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) -#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) -#else - #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) -#endif -#ifndef CO_COROUTINE - #define CO_COROUTINE 0x80 -#endif -#ifndef CO_ASYNC_GENERATOR - #define CO_ASYNC_GENERATOR 0x200 -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#ifndef Py_TPFLAGS_SEQUENCE - #define Py_TPFLAGS_SEQUENCE 0 -#endif -#ifndef Py_TPFLAGS_MAPPING - #define Py_TPFLAGS_MAPPING 0 -#endif -#ifndef METH_STACKLESS - #define METH_STACKLESS 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_METH_FASTCALL - #define __Pyx_METH_FASTCALL METH_FASTCALL - #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast - #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords -#else - #define __Pyx_METH_FASTCALL METH_VARARGS - #define __Pyx_PyCFunction_FastCall PyCFunction - #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords -#endif -#if CYTHON_VECTORCALL - #define __pyx_vectorcallfunc vectorcallfunc - #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET - #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) -#elif CYTHON_BACKPORT_VECTORCALL - typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, - size_t nargsf, PyObject *kwnames); - #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) - #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) -#else - #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 - #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) -#endif -#if PY_MAJOR_VERSION >= 0x030900B1 -#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) -#else -#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) -#endif -#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) -#elif !CYTHON_COMPILING_IN_LIMITED_API -#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) -#endif -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) -static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { - return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; -} -#endif -static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { -#if CYTHON_COMPILING_IN_LIMITED_API - return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; -#else - return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; -#endif -} -#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) -#if __PYX_LIMITED_VERSION_HEX < 0x030900B1 - #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) - typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); -#else - #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) - #define __Pyx_PyCMethod PyCMethod -#endif -#ifndef METH_METHOD - #define METH_METHOD 0x200 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_PyThreadState_Current PyThreadState_Get() -#elif !CYTHON_FAST_THREAD_STATE - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x030d00A1 - #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) -{ - void *result; - result = PyModule_GetState(op); - if (!result) - Py_FatalError("Couldn't find the module state"); - return result; -} -#endif -#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) -#if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) -#else - #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif -#if PY_MAJOR_VERSION < 3 - #if CYTHON_COMPILING_IN_PYPY - #if PYPY_VERSION_NUM < 0x07030600 - #if defined(__cplusplus) && __cplusplus >= 201402L - [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] - #elif defined(__GNUC__) || defined(__clang__) - __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) - #elif defined(_MSC_VER) - __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) - #endif - static CYTHON_INLINE int PyGILState_Check(void) { - return 0; - } - #else // PYPY_VERSION_NUM < 0x07030600 - #endif // PYPY_VERSION_NUM < 0x07030600 - #else - static CYTHON_INLINE int PyGILState_Check(void) { - PyThreadState * tstate = _PyThreadState_Current; - return tstate && (tstate == PyGILState_GetThisThreadState()); - } - #endif -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { - PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); - if (res == NULL) PyErr_Clear(); - return res; -} -#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) -#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError -#define __Pyx_PyDict_GetItemStr PyDict_GetItem -#else -static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { -#if CYTHON_COMPILING_IN_PYPY - return PyDict_GetItem(dict, name); -#else - PyDictEntry *ep; - PyDictObject *mp = (PyDictObject*) dict; - long hash = ((PyStringObject *) name)->ob_shash; - assert(hash != -1); - ep = (mp->ma_lookup)(mp, name, hash); - if (ep == NULL) { - return NULL; - } - return ep->me_value; -#endif -} -#define __Pyx_PyDict_GetItemStr PyDict_GetItem -#endif -#if CYTHON_USE_TYPE_SLOTS - #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) - #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) - #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) -#else - #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) - #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) - #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) -#else - #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) -#endif -#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 -#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ - PyTypeObject *type = Py_TYPE((PyObject*)obj);\ - assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ - PyObject_GC_Del(obj);\ - Py_DECREF(type);\ -} -#else -#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) - #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) - #define __Pyx_PyUnicode_DATA(u) ((void*)u) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) -#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #if PY_VERSION_HEX >= 0x030C0000 - #define __Pyx_PyUnicode_READY(op) (0) - #else - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #endif - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) - #if PY_VERSION_HEX >= 0x030C0000 - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) - #else - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) - #endif - #endif -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) - #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #if !defined(PyUnicode_DecodeUnicodeEscape) - #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) - #endif - #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) - #undef PyUnicode_Contains - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) - #endif - #if !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) - #endif - #if !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) - #endif -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact -#ifndef PyObject_Unicode - #define PyObject_Unicode PyObject_Str -#endif -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#if CYTHON_COMPILING_IN_CPYTHON - #define __Pyx_PySequence_ListKeepNew(obj)\ - (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) -#else - #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) -#endif -#if PY_VERSION_HEX >= 0x030900A4 - #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) -#else - #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) - #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) - #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) - #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) - #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) - #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) - #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) - #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) -#else - #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) - #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) - #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) - #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) - #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) - #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) - #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) - #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) -#endif -#if PY_VERSION_HEX >= 0x030d00A1 - #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) -#else - static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { - PyObject *module = PyImport_AddModule(name); - Py_XINCREF(module); - return module; - } -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define __Pyx_Py3Int_Check(op) PyLong_Check(op) - #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#else - #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) - #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) - #if !defined(_USE_MATH_DEFINES) - #define _USE_MATH_DEFINES - #endif -#endif -#include -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - -#define __PYX_MARK_ERR_POS(f_index, lineno) \ - { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } -#define __PYX_ERR(f_index, lineno, Ln_error) \ - { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } - -#ifdef CYTHON_EXTERN_C - #undef __PYX_EXTERN_C - #define __PYX_EXTERN_C CYTHON_EXTERN_C -#elif defined(__PYX_EXTERN_C) - #ifdef _MSC_VER - #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") - #else - #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. - #endif -#else - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__acados_template__acados_ocp_solver_pyx -#define __PYX_HAVE_API__acados_template__acados_ocp_solver_pyx -/* Early includes */ -#include -#include "acados/ocp_nlp/ocp_nlp_common.h" -#include "acados_c/ocp_nlp_interface.h" -#include "acados_solver_lat.h" -#include - - /* Using NumPy API declarations from "numpy/__init__.cython-30.pxd" */ - -#include "numpy/arrayobject.h" -#include "numpy/ndarrayobject.h" -#include "numpy/ndarraytypes.h" -#include "numpy/arrayscalars.h" -#include "numpy/ufuncobject.h" -#include "pythread.h" -#include -#ifdef _OPENMP -#include -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { - return (size_t) i < (size_t) limit; -} -#if defined (__cplusplus) && __cplusplus >= 201103L - #include - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -#if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const wchar_t *u) -{ - const wchar_t *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#else -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) -{ - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#endif -#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #if PY_VERSION_HEX >= 0x030C00A7 - #ifndef _PyLong_SIGN_MASK - #define _PyLong_SIGN_MASK 3 - #endif - #ifndef _PyLong_NON_SIZE_BITS - #define _PyLong_NON_SIZE_BITS 3 - #endif - #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) - #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) - #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) - #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) - #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) - #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) - #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) - #define __Pyx_PyLong_SignedDigitCount(x)\ - ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) - #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) - #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) - #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) - #else - #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) - #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) - #endif - typedef Py_ssize_t __Pyx_compact_pylong; - typedef size_t __Pyx_compact_upylong; - #else - #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) - #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) - #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) - #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) - #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) - #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) - #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) - #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) - #define __Pyx_PyLong_CompactValue(x)\ - ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) - typedef sdigit __Pyx_compact_pylong; - typedef digit __Pyx_compact_upylong; - #endif - #if PY_VERSION_HEX >= 0x030C00A5 - #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) - #else - #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) - #endif -#endif -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -#include -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = (char) c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#include -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -#if !CYTHON_USE_MODULE_STATE -static PyObject *__pyx_m = NULL; -#endif -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm = __FILE__; -static const char *__pyx_filename; - -/* Header.proto */ -#if !defined(CYTHON_CCOMPLEX) - #if defined(__cplusplus) - #define CYTHON_CCOMPLEX 1 - #elif (defined(_Complex_I) && !defined(_MSC_VER)) || ((defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) && !defined(__STDC_NO_COMPLEX__) && !defined(_MSC_VER)) - #define CYTHON_CCOMPLEX 1 - #else - #define CYTHON_CCOMPLEX 0 - #endif -#endif -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - #include - #else - #include - #endif -#endif -#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) - #undef _Complex_I - #define _Complex_I 1.0fj -#endif - -/* #### Code section: filename_table ### */ - -static const char *__pyx_f[] = { - "third_party/acados/acados_template/acados_ocp_solver_pyx.pyx", - "", - "__init__.cython-30.pxd", - "type.pxd", -}; -/* #### Code section: utility_code_proto_before_types ### */ -/* ForceInitThreads.proto */ -#ifndef __PYX_FORCE_INIT_THREADS - #define __PYX_FORCE_INIT_THREADS 0 -#endif - -/* NoFastGil.proto */ -#define __Pyx_PyGILState_Ensure PyGILState_Ensure -#define __Pyx_PyGILState_Release PyGILState_Release -#define __Pyx_FastGIL_Remember() -#define __Pyx_FastGIL_Forget() -#define __Pyx_FastGilFuncInit() - -/* BufferFormatStructs.proto */ -struct __Pyx_StructField_; -#define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) -typedef struct { - const char* name; - struct __Pyx_StructField_* fields; - size_t size; - size_t arraysize[8]; - int ndim; - char typegroup; - char is_unsigned; - int flags; -} __Pyx_TypeInfo; -typedef struct __Pyx_StructField_ { - __Pyx_TypeInfo* type; - const char* name; - size_t offset; -} __Pyx_StructField; -typedef struct { - __Pyx_StructField* field; - size_t parent_offset; -} __Pyx_BufFmt_StackElem; -typedef struct { - __Pyx_StructField root; - __Pyx_BufFmt_StackElem* head; - size_t fmt_offset; - size_t new_count, enc_count; - size_t struct_alignment; - int is_complex; - char enc_type; - char new_packmode; - char enc_packmode; - char is_valid_array; -} __Pyx_BufFmt_Context; - -/* Atomics.proto */ -#include -#ifndef CYTHON_ATOMICS - #define CYTHON_ATOMICS 1 -#endif -#define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS -#define __pyx_atomic_int_type int -#define __pyx_nonatomic_int_type int -#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\ - (__STDC_VERSION__ >= 201112L) &&\ - !defined(__STDC_NO_ATOMICS__)) - #include -#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\ - (__cplusplus >= 201103L) ||\ - (defined(_MSC_VER) && _MSC_VER >= 1700))) - #include -#endif -#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\ - (__STDC_VERSION__ >= 201112L) &&\ - !defined(__STDC_NO_ATOMICS__) &&\ - ATOMIC_INT_LOCK_FREE == 2) - #undef __pyx_atomic_int_type - #define __pyx_atomic_int_type atomic_int - #define __pyx_atomic_incr_aligned(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed) - #define __pyx_atomic_decr_aligned(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel) - #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) - #pragma message ("Using standard C atomics") - #elif defined(__PYX_DEBUG_ATOMICS) - #warning "Using standard C atomics" - #endif -#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\ - (__cplusplus >= 201103L) ||\ -\ - (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\ - ATOMIC_INT_LOCK_FREE == 2) - #undef __pyx_atomic_int_type - #define __pyx_atomic_int_type std::atomic_int - #define __pyx_atomic_incr_aligned(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed) - #define __pyx_atomic_decr_aligned(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel) - #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) - #pragma message ("Using standard C++ atomics") - #elif defined(__PYX_DEBUG_ATOMICS) - #warning "Using standard C++ atomics" - #endif -#elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\ - (__GNUC_MINOR__ > 1 ||\ - (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2)))) - #define __pyx_atomic_incr_aligned(value) __sync_fetch_and_add(value, 1) - #define __pyx_atomic_decr_aligned(value) __sync_fetch_and_sub(value, 1) - #ifdef __PYX_DEBUG_ATOMICS - #warning "Using GNU atomics" - #endif -#elif CYTHON_ATOMICS && defined(_MSC_VER) - #include - #undef __pyx_atomic_int_type - #define __pyx_atomic_int_type long - #undef __pyx_nonatomic_int_type - #define __pyx_nonatomic_int_type long - #pragma intrinsic (_InterlockedExchangeAdd) - #define __pyx_atomic_incr_aligned(value) _InterlockedExchangeAdd(value, 1) - #define __pyx_atomic_decr_aligned(value) _InterlockedExchangeAdd(value, -1) - #ifdef __PYX_DEBUG_ATOMICS - #pragma message ("Using MSVC atomics") - #endif -#else - #undef CYTHON_ATOMICS - #define CYTHON_ATOMICS 0 - #ifdef __PYX_DEBUG_ATOMICS - #warning "Not using atomics" - #endif -#endif -#if CYTHON_ATOMICS - #define __pyx_add_acquisition_count(memview)\ - __pyx_atomic_incr_aligned(__pyx_get_slice_count_pointer(memview)) - #define __pyx_sub_acquisition_count(memview)\ - __pyx_atomic_decr_aligned(__pyx_get_slice_count_pointer(memview)) -#else - #define __pyx_add_acquisition_count(memview)\ - __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) - #define __pyx_sub_acquisition_count(memview)\ - __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) -#endif - -/* MemviewSliceStruct.proto */ -struct __pyx_memoryview_obj; -typedef struct { - struct __pyx_memoryview_obj *memview; - char *data; - Py_ssize_t shape[8]; - Py_ssize_t strides[8]; - Py_ssize_t suboffsets[8]; -} __Pyx_memviewslice; -#define __Pyx_MemoryView_Len(m) (m.shape[0]) - -/* #### Code section: numeric_typedefs ### */ - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":730 - * # in Cython to enable them only on the right systems. - * - * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t - */ -typedef npy_int8 __pyx_t_5numpy_int8_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":731 - * - * ctypedef npy_int8 int8_t - * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< - * ctypedef npy_int32 int32_t - * ctypedef npy_int64 int64_t - */ -typedef npy_int16 __pyx_t_5numpy_int16_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":732 - * ctypedef npy_int8 int8_t - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< - * ctypedef npy_int64 int64_t - * #ctypedef npy_int96 int96_t - */ -typedef npy_int32 __pyx_t_5numpy_int32_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":733 - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t - * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< - * #ctypedef npy_int96 int96_t - * #ctypedef npy_int128 int128_t - */ -typedef npy_int64 __pyx_t_5numpy_int64_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":737 - * #ctypedef npy_int128 int128_t - * - * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t - */ -typedef npy_uint8 __pyx_t_5numpy_uint8_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":738 - * - * ctypedef npy_uint8 uint8_t - * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< - * ctypedef npy_uint32 uint32_t - * ctypedef npy_uint64 uint64_t - */ -typedef npy_uint16 __pyx_t_5numpy_uint16_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":739 - * ctypedef npy_uint8 uint8_t - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< - * ctypedef npy_uint64 uint64_t - * #ctypedef npy_uint96 uint96_t - */ -typedef npy_uint32 __pyx_t_5numpy_uint32_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":740 - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t - * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< - * #ctypedef npy_uint96 uint96_t - * #ctypedef npy_uint128 uint128_t - */ -typedef npy_uint64 __pyx_t_5numpy_uint64_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":744 - * #ctypedef npy_uint128 uint128_t - * - * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< - * ctypedef npy_float64 float64_t - * #ctypedef npy_float80 float80_t - */ -typedef npy_float32 __pyx_t_5numpy_float32_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":745 - * - * ctypedef npy_float32 float32_t - * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< - * #ctypedef npy_float80 float80_t - * #ctypedef npy_float128 float128_t - */ -typedef npy_float64 __pyx_t_5numpy_float64_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":754 - * # The int types are mapped a bit surprising -- - * # numpy.int corresponds to 'l' and numpy.long to 'q' - * ctypedef npy_long int_t # <<<<<<<<<<<<<< - * ctypedef npy_longlong longlong_t - * - */ -typedef npy_long __pyx_t_5numpy_int_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":755 - * # numpy.int corresponds to 'l' and numpy.long to 'q' - * ctypedef npy_long int_t - * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< - * - * ctypedef npy_ulong uint_t - */ -typedef npy_longlong __pyx_t_5numpy_longlong_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":757 - * ctypedef npy_longlong longlong_t - * - * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< - * ctypedef npy_ulonglong ulonglong_t - * - */ -typedef npy_ulong __pyx_t_5numpy_uint_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":758 - * - * ctypedef npy_ulong uint_t - * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< - * - * ctypedef npy_intp intp_t - */ -typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":760 - * ctypedef npy_ulonglong ulonglong_t - * - * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< - * ctypedef npy_uintp uintp_t - * - */ -typedef npy_intp __pyx_t_5numpy_intp_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":761 - * - * ctypedef npy_intp intp_t - * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< - * - * ctypedef npy_double float_t - */ -typedef npy_uintp __pyx_t_5numpy_uintp_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":763 - * ctypedef npy_uintp uintp_t - * - * ctypedef npy_double float_t # <<<<<<<<<<<<<< - * ctypedef npy_double double_t - * ctypedef npy_longdouble longdouble_t - */ -typedef npy_double __pyx_t_5numpy_float_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":764 - * - * ctypedef npy_double float_t - * ctypedef npy_double double_t # <<<<<<<<<<<<<< - * ctypedef npy_longdouble longdouble_t - * - */ -typedef npy_double __pyx_t_5numpy_double_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":765 - * ctypedef npy_double float_t - * ctypedef npy_double double_t - * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< - * - * ctypedef npy_cfloat cfloat_t - */ -typedef npy_longdouble __pyx_t_5numpy_longdouble_t; -/* #### Code section: complex_type_declarations ### */ -/* Declarations.proto */ -#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - typedef ::std::complex< float > __pyx_t_float_complex; - #else - typedef float _Complex __pyx_t_float_complex; - #endif -#else - typedef struct { float real, imag; } __pyx_t_float_complex; -#endif -static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); - -/* Declarations.proto */ -#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - typedef ::std::complex< double > __pyx_t_double_complex; - #else - typedef double _Complex __pyx_t_double_complex; - #endif -#else - typedef struct { double real, imag; } __pyx_t_double_complex; -#endif -static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); - -/* #### Code section: type_declarations ### */ - -/*--- Type declarations ---*/ -struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython; -struct __pyx_array_obj; -struct __pyx_MemviewEnum_obj; -struct __pyx_memoryview_obj; -struct __pyx_memoryviewslice_obj; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":767 - * ctypedef npy_longdouble longdouble_t - * - * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< - * ctypedef npy_cdouble cdouble_t - * ctypedef npy_clongdouble clongdouble_t - */ -typedef npy_cfloat __pyx_t_5numpy_cfloat_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":768 - * - * ctypedef npy_cfloat cfloat_t - * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< - * ctypedef npy_clongdouble clongdouble_t - * - */ -typedef npy_cdouble __pyx_t_5numpy_cdouble_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":769 - * ctypedef npy_cfloat cfloat_t - * ctypedef npy_cdouble cdouble_t - * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< - * - * ctypedef npy_cdouble complex_t - */ -typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":771 - * ctypedef npy_clongdouble clongdouble_t - * - * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew1(a): - */ -typedef npy_cdouble __pyx_t_5numpy_complex_t; - -/* "acados_template/acados_ocp_solver_pyx.pyx":49 - * - * - * cdef class AcadosOcpSolverCython: # <<<<<<<<<<<<<< - * """ - * Class to interact with the acados ocp solver C object. - */ -struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython { - PyObject_HEAD - lat_solver_capsule *capsule; - void *nlp_opts; - ocp_nlp_dims *nlp_dims; - ocp_nlp_config *nlp_config; - ocp_nlp_out *nlp_out; - ocp_nlp_out *sens_out; - ocp_nlp_in *nlp_in; - ocp_nlp_solver *nlp_solver; - int solver_created; - PyObject *model_name; - int N; - PyObject *nlp_solver_type; -}; - - -/* "View.MemoryView":114 - * @cython.collection_type("sequence") - * @cname("__pyx_array") - * cdef class array: # <<<<<<<<<<<<<< - * - * cdef: - */ -struct __pyx_array_obj { - PyObject_HEAD - struct __pyx_vtabstruct_array *__pyx_vtab; - char *data; - Py_ssize_t len; - char *format; - int ndim; - Py_ssize_t *_shape; - Py_ssize_t *_strides; - Py_ssize_t itemsize; - PyObject *mode; - PyObject *_format; - void (*callback_free_data)(void *); - int free_data; - int dtype_is_object; -}; - - -/* "View.MemoryView":302 - * - * @cname('__pyx_MemviewEnum') - * cdef class Enum(object): # <<<<<<<<<<<<<< - * cdef object name - * def __init__(self, name): - */ -struct __pyx_MemviewEnum_obj { - PyObject_HEAD - PyObject *name; -}; - - -/* "View.MemoryView":337 - * - * @cname('__pyx_memoryview') - * cdef class memoryview: # <<<<<<<<<<<<<< - * - * cdef object obj - */ -struct __pyx_memoryview_obj { - PyObject_HEAD - struct __pyx_vtabstruct_memoryview *__pyx_vtab; - PyObject *obj; - PyObject *_size; - PyObject *_array_interface; - PyThread_type_lock lock; - __pyx_atomic_int_type acquisition_count; - Py_buffer view; - int flags; - int dtype_is_object; - __Pyx_TypeInfo *typeinfo; -}; - - -/* "View.MemoryView":952 - * @cython.collection_type("sequence") - * @cname('__pyx_memoryviewslice') - * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< - * "Internal class for passing memoryview slices to Python" - * - */ -struct __pyx_memoryviewslice_obj { - struct __pyx_memoryview_obj __pyx_base; - __Pyx_memviewslice from_slice; - PyObject *from_object; - PyObject *(*to_object_func)(char *); - int (*to_dtype_func)(char *, PyObject *); -}; - - - -/* "View.MemoryView":114 - * @cython.collection_type("sequence") - * @cname("__pyx_array") - * cdef class array: # <<<<<<<<<<<<<< - * - * cdef: - */ - -struct __pyx_vtabstruct_array { - PyObject *(*get_memview)(struct __pyx_array_obj *); -}; -static struct __pyx_vtabstruct_array *__pyx_vtabptr_array; - - -/* "View.MemoryView":337 - * - * @cname('__pyx_memoryview') - * cdef class memoryview: # <<<<<<<<<<<<<< - * - * cdef object obj - */ - -struct __pyx_vtabstruct_memoryview { - char *(*get_item_pointer)(struct __pyx_memoryview_obj *, PyObject *); - PyObject *(*is_slice)(struct __pyx_memoryview_obj *, PyObject *); - PyObject *(*setitem_slice_assignment)(struct __pyx_memoryview_obj *, PyObject *, PyObject *); - PyObject *(*setitem_slice_assign_scalar)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *); - PyObject *(*setitem_indexed)(struct __pyx_memoryview_obj *, PyObject *, PyObject *); - PyObject *(*convert_item_to_object)(struct __pyx_memoryview_obj *, char *); - PyObject *(*assign_item_from_object)(struct __pyx_memoryview_obj *, char *, PyObject *); - PyObject *(*_get_base)(struct __pyx_memoryview_obj *); -}; -static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview; - - -/* "View.MemoryView":952 - * @cython.collection_type("sequence") - * @cname('__pyx_memoryviewslice') - * cdef class _memoryviewslice(memoryview): # <<<<<<<<<<<<<< - * "Internal class for passing memoryview slices to Python" - * - */ - -struct __pyx_vtabstruct__memoryviewslice { - struct __pyx_vtabstruct_memoryview __pyx_base; -}; -static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice; -/* #### Code section: utility_code_proto ### */ - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, Py_ssize_t); - void (*DECREF)(void*, PyObject*, Py_ssize_t); - void (*GOTREF)(void*, PyObject*, Py_ssize_t); - void (*GIVEREF)(void*, PyObject*, Py_ssize_t); - void* (*SetupContext)(const char*, Py_ssize_t, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ - } - #define __Pyx_RefNannyFinishContextNogil() {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __Pyx_RefNannyFinishContext();\ - PyGILState_Release(__pyx_gilstate_save);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) - #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() -#endif - #define __Pyx_RefNannyFinishContextNogil() {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __Pyx_RefNannyFinishContext();\ - PyGILState_Release(__pyx_gilstate_save);\ - } - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) - #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContextNogil() - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_Py_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; Py_XDECREF(tmp);\ - } while (0) -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#if PY_VERSION_HEX >= 0x030C00A6 -#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) -#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) -#else -#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) -#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) -#endif -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) -#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* PyObjectGetAttrStrNoError.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* TupleAndListFromArray.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); -static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); -#endif - -/* IncludeStringH.proto */ -#include - -/* BytesEquals.proto */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); - -/* UnicodeEquals.proto */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); - -/* fastcall.proto */ -#if CYTHON_AVOID_BORROWED_REFS - #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) -#elif CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) -#else - #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) -#endif -#if CYTHON_AVOID_BORROWED_REFS - #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) - #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) -#else - #define __Pyx_Arg_NewRef_VARARGS(arg) arg - #define __Pyx_Arg_XDECREF_VARARGS(arg) -#endif -#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) -#define __Pyx_KwValues_VARARGS(args, nargs) NULL -#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) -#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) -#if CYTHON_METH_FASTCALL - #define __Pyx_Arg_FASTCALL(args, i) args[i] - #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) - #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) - static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 - CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); - #else - #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) - #endif - #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs - to have the same reference counting */ - #define __Pyx_Arg_XDECREF_FASTCALL(arg) -#else - #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS - #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS - #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS - #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS - #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS - #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) - #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS -#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) -#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) -#else -#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) -#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) -#endif - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, - PyObject **argnames[], - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, - const char* function_name); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#if !CYTHON_VECTORCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); -#endif -#define __Pyx_BUILD_ASSERT_EXPR(cond)\ - (sizeof(char [1 - 2*!(cond)]) - 1) -#ifndef Py_MEMBER_SIZE -#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#endif -#if !CYTHON_VECTORCALL -#if PY_VERSION_HEX >= 0x03080000 - #include "frameobject.h" -#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API - #ifndef Py_BUILD_CORE - #define Py_BUILD_CORE 1 - #endif - #include "internal/pycore_frame.h" -#endif - #define __Pxy_PyFrame_Initialize_Offsets() - #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) -#else - static size_t __pyx_pyframe_localsplus_offset = 0; - #include "frameobject.h" - #define __Pxy_PyFrame_Initialize_Offsets()\ - ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ - (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) - #define __Pyx_PyFrame_GetLocalsplus(frame)\ - (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) -#endif -#endif -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectFastCall.proto */ -#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) -static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); - -/* RaiseUnexpectedTypeError.proto */ -static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); - -/* GCCDiagnostics.proto */ -#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#define __Pyx_HAS_GCC_DIAGNOSTIC -#endif - -/* BuildPyUnicode.proto */ -static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength, - int prepend_sign, char padding_char); - -/* CIntToPyUnicode.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char); - -/* CIntToPyUnicode.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); - -/* JoinPyUnicode.proto */ -static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, - Py_UCS4 max_char); - -/* StrEquals.proto */ -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals -#else -#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals -#endif - -/* PyObjectFormatSimple.proto */ -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyObject_FormatSimple(s, f) (\ - likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ - PyObject_Format(s, f)) -#elif PY_MAJOR_VERSION < 3 - #define __Pyx_PyObject_FormatSimple(s, f) (\ - likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ - likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\ - PyObject_Format(s, f)) -#elif CYTHON_USE_TYPE_SLOTS - #define __Pyx_PyObject_FormatSimple(s, f) (\ - likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ - likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ - likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ - PyObject_Format(s, f)) -#else - #define __Pyx_PyObject_FormatSimple(s, f) (\ - likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ - PyObject_Format(s, f)) -#endif - -CYTHON_UNUSED static int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ -static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/ -/* GetAttr.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* ObjectGetItem.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); -#else -#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -#endif - -/* KeywordStringCheck.proto */ -static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed); - -/* DivInt[Py_ssize_t].proto */ -static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t); - -/* UnaryNegOverflows.proto */ -#define __Pyx_UNARY_NEG_WOULD_OVERFLOW(x)\ - (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) - -/* GetAttr3.proto */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); - -/* PyDictVersioning.proto */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) -#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ - (version_var) = __PYX_GET_DICT_VERSION(dict);\ - (cache_var) = (value); -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ - (VAR) = __pyx_dict_cached_value;\ - } else {\ - (VAR) = __pyx_dict_cached_value = (LOOKUP);\ - __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ - }\ -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); -#else -#define __PYX_GET_DICT_VERSION(dict) (0) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); -#endif - -/* GetModuleGlobalName.proto */ -#if CYTHON_USE_DICT_VERSIONS -#define __Pyx_GetModuleGlobalName(var, name) do {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ - (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ - __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} while(0) -#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ - PY_UINT64_T __pyx_dict_version;\ - PyObject *__pyx_dict_cached_value;\ - (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} while(0) -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); -#else -#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) -#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); -#endif - -/* AssertionsEnabled.proto */ -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define __Pyx_init_assertions_enabled() (0) - #define __pyx_assertions_enabled() (1) -#elif CYTHON_COMPILING_IN_LIMITED_API || (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000) - static int __pyx_assertions_enabled_flag; - #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag) - static int __Pyx_init_assertions_enabled(void) { - PyObject *builtins, *debug, *debug_str; - int flag; - builtins = PyEval_GetBuiltins(); - if (!builtins) goto bad; - debug_str = PyUnicode_FromStringAndSize("__debug__", 9); - if (!debug_str) goto bad; - debug = PyObject_GetItem(builtins, debug_str); - Py_DECREF(debug_str); - if (!debug) goto bad; - flag = PyObject_IsTrue(debug); - Py_DECREF(debug); - if (flag == -1) goto bad; - __pyx_assertions_enabled_flag = flag; - return 0; - bad: - __pyx_assertions_enabled_flag = 1; - return -1; - } -#else - #define __Pyx_init_assertions_enabled() (0) - #define __pyx_assertions_enabled() (!Py_OptimizeFlag) -#endif - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* RaiseNoneIterError.proto */ -static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* GetTopmostException.proto */ -#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE -static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* SwapException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportDottedModule.proto */ -static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); -#if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); -#endif - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -CYTHON_UNUSED static int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ -/* ListCompAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len)) { - Py_INCREF(x); - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 - L->ob_item[len] = x; - #else - PyList_SET_ITEM(list, len, x); - #endif - __Pyx_SET_SIZE(list, len + 1); - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) -#endif - -/* PySequenceMultiply.proto */ -#define __Pyx_PySequence_Multiply_Left(mul, seq) __Pyx_PySequence_Multiply(seq, mul) -static CYTHON_INLINE PyObject* __Pyx_PySequence_Multiply(PyObject *seq, Py_ssize_t mul); - -/* SetItemInt.proto */ -#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ - __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) -static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); -static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, - int is_list, int wraparound, int boundscheck); - -/* RaiseUnboundLocalError.proto */ -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); - -/* DivInt[long].proto */ -static CYTHON_INLINE long __Pyx_div_long(long, long); - -/* PySequenceContains.proto */ -static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { - int result = PySequence_Contains(seq, item); - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); -} - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* HasAttr.proto */ -#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 -#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) -#else -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); -#endif - -/* PyIntCompare.proto */ -static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); - -/* PyIntCompare.proto */ -static CYTHON_INLINE int __Pyx_PyInt_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace); - -/* IsLittleEndian.proto */ -static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); - -/* BufferFormatCheck.proto */ -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type); - -/* BufferGetAndValidate.proto */ -#define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\ - ((obj == Py_None || obj == NULL) ?\ - (__Pyx_ZeroBuffer(buf), 0) :\ - __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)) -static int __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj, - __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); -static void __Pyx_ZeroBuffer(Py_buffer* buf); -static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; -static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - -/* UnicodeConcatInPlace.proto */ -# if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 - #if CYTHON_REFNANNY - #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, __pyx_refnanny) - #else - #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right) - #endif - static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right - #if CYTHON_REFNANNY - , void* __pyx_refnanny - #endif - ); -#else -#define __Pyx_PyUnicode_ConcatInPlace __Pyx_PyUnicode_Concat -#endif -#define __Pyx_PyUnicode_ConcatInPlaceSafe(left, right) ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\ - PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_ConcatInPlace(left, right)) - -/* SliceObject.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( - PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, - PyObject** py_start, PyObject** py_stop, PyObject** py_slice, - int has_cstart, int has_cstop, int wraparound); - -/* PyObject_Str.proto */ -#define __Pyx_PyObject_Str(obj)\ - (likely(PyString_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj)) - -/* PyObjectFormat.proto */ -#if CYTHON_USE_UNICODE_WRITER -static PyObject* __Pyx_PyObject_Format(PyObject* s, PyObject* f); -#else -#define __Pyx_PyObject_Format(s, f) PyObject_Format(s, f) -#endif - -/* py_dict_keys.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d); - -/* UnpackUnboundCMethod.proto */ -typedef struct { - PyObject *type; - PyObject **method_name; - PyCFunction func; - PyObject *method; - int flag; -} __Pyx_CachedCFunction; - -/* CallUnboundCMethod0.proto */ -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_CallUnboundCMethod0(cfunc, self)\ - (likely((cfunc)->func) ?\ - (likely((cfunc)->flag == METH_NOARGS) ? (*((cfunc)->func))(self, NULL) :\ - (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\ - (PY_VERSION_HEX >= 0x030700A0 ?\ - (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\ - (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\ - (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\ - (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\ - (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ? ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\ - ((cfunc)->flag == METH_VARARGS ? (*((cfunc)->func))(self, __pyx_empty_tuple) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\ - __Pyx__CallUnboundCMethod0(cfunc, self)) -#else -#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) -#endif - -/* DictGetItem.proto */ -#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key); -#define __Pyx_PyObject_Dict_GetItem(obj, name)\ - (likely(PyDict_CheckExact(obj)) ?\ - __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name)) -#else -#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key) -#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name) -#endif - -/* PyObjectLookupSpecial.proto */ -#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS -#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) -#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) -static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); -#else -#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) -#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) -#endif - -/* IncludeStructmemberH.proto */ -#include - -/* FixUpExtensionType.proto */ -#if CYTHON_USE_TYPE_SPECS -static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); -#endif - -/* FetchSharedCythonModule.proto */ -static PyObject *__Pyx_FetchSharedCythonABIModule(void); - -/* FetchCommonType.proto */ -#if !CYTHON_USE_TYPE_SPECS -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); -#else -static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); -#endif - -/* PyMethodNew.proto */ -#if CYTHON_COMPILING_IN_LIMITED_API -static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { - PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; - CYTHON_UNUSED_VAR(typ); - if (!self) - return __Pyx_NewRef(func); - typesModule = PyImport_ImportModule("types"); - if (!typesModule) return NULL; - methodType = PyObject_GetAttrString(typesModule, "MethodType"); - Py_DECREF(typesModule); - if (!methodType) return NULL; - result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); - Py_DECREF(methodType); - return result; -} -#elif PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { - CYTHON_UNUSED_VAR(typ); - if (!self) - return __Pyx_NewRef(func); - return PyMethod_New(func, self); -} -#else - #define __Pyx_PyMethod_New PyMethod_New -#endif - -/* PyVectorcallFastCallDict.proto */ -#if CYTHON_METH_FASTCALL -static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); -#endif - -/* CythonFunctionShared.proto */ -#define __Pyx_CyFunction_USED -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CYFUNCTION_COROUTINE 0x08 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#else - #define __Pyx_CyFunction_GetClassObj(f)\ - ((PyObject*) ((PyCMethodObject *) (f))->mm_class) -#endif -#define __Pyx_CyFunction_SetClassObj(f, classobj)\ - __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject_HEAD - PyObject *func; -#elif PY_VERSION_HEX < 0x030900B1 - PyCFunctionObject func; -#else - PyCMethodObject func; -#endif -#if CYTHON_BACKPORT_VECTORCALL - __pyx_vectorcallfunc func_vectorcall; -#endif -#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - PyObject *func_classobj; -#endif - void *defaults; - int defaults_pyobjects; - size_t defaults_size; - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; - PyObject *func_is_coroutine; -} __pyx_CyFunctionObject; -#undef __Pyx_CyOrPyCFunction_Check -#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) -#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) -#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); -#undef __Pyx_IsSameCFunction -#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) -static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *closure, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(PyObject *module); -#if CYTHON_METH_FASTCALL -static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -#if CYTHON_BACKPORT_VECTORCALL -#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) -#else -#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) -#endif -#endif - -/* CythonFunction.proto */ -static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *closure, - PyObject *module, PyObject *globals, - PyObject* code); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* PyObjectCallNoArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); - -/* PyObjectGetMethod.proto */ -static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); - -/* PyObjectCallMethod0.proto */ -static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* UnpackTupleError.proto */ -static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); - -/* UnpackTuple2.proto */ -#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\ - (likely(is_tuple || PyTuple_Check(tuple)) ?\ - (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\ - __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\ - (__Pyx_UnpackTupleError(tuple, 2), -1)) :\ - __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple)) -static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( - PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple); -static int __Pyx_unpack_tuple2_generic( - PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple); - -/* dict_iter.proto */ -static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name, - Py_ssize_t* p_orig_length, int* p_is_dict); -static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos, - PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict); - -/* PyIntBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\ - (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) -#endif - -/* BufferIndexError.proto */ -static void __Pyx_RaiseBufferIndexError(int axis); - -#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0) -/* PyUnicode_Unicode.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj); - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* PyObject_GenericGetAttr.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr -#endif - -/* ValidateBasesTuple.proto */ -#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS -static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); -#endif - -/* PyType_Ready.proto */ -CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); - -/* SetupReduce.proto */ -#if !CYTHON_COMPILING_IN_LIMITED_API -static int __Pyx_setup_reduce(PyObject* type_obj); -#endif - -/* SetVTable.proto */ -static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); - -/* GetVTable.proto */ -static void* __Pyx_GetVtable(PyTypeObject *type); - -/* MergeVTables.proto */ -#if !CYTHON_COMPILING_IN_LIMITED_API -static int __Pyx_MergeVtables(PyTypeObject *type); -#endif - -/* TypeImport.proto */ -#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_8 -#define __PYX_HAVE_RT_ImportType_proto_3_0_8 -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#include -#endif -#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L -#define __PYX_GET_STRUCT_ALIGNMENT_3_0_8(s) alignof(s) -#else -#define __PYX_GET_STRUCT_ALIGNMENT_3_0_8(s) sizeof(void*) -#endif -enum __Pyx_ImportType_CheckSize_3_0_8 { - __Pyx_ImportType_CheckSize_Error_3_0_8 = 0, - __Pyx_ImportType_CheckSize_Warn_3_0_8 = 1, - __Pyx_ImportType_CheckSize_Ignore_3_0_8 = 2 -}; -static PyTypeObject *__Pyx_ImportType_3_0_8(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_8 check_size); -#endif - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -#if !CYTHON_COMPILING_IN_LIMITED_API -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); -#endif - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -#if PY_MAJOR_VERSION < 3 - static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags); - static void __Pyx_ReleaseBuffer(Py_buffer *view); -#else - #define __Pyx_GetBuffer PyObject_GetBuffer - #define __Pyx_ReleaseBuffer PyBuffer_Release -#endif - - -/* BufferStructDeclare.proto */ -typedef struct { - Py_ssize_t shape, strides, suboffsets; -} __Pyx_Buf_DimInfo; -typedef struct { - size_t refcount; - Py_buffer pybuffer; -} __Pyx_Buffer; -typedef struct { - __Pyx_Buffer *rcbuffer; - char *data; - __Pyx_Buf_DimInfo diminfo[8]; -} __Pyx_LocalBuf_ND; - -/* MemviewSliceIsContig.proto */ -static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim); - -/* OverlappingSlices.proto */ -static int __pyx_slices_overlap(__Pyx_memviewslice *slice1, - __Pyx_memviewslice *slice2, - int ndim, size_t itemsize); - -/* TypeInfoCompare.proto */ -static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b); - -/* MemviewSliceValidateAndInit.proto */ -static int __Pyx_ValidateAndInit_memviewslice( - int *axes_specs, - int c_or_f_flag, - int buf_flags, - int ndim, - __Pyx_TypeInfo *dtype, - __Pyx_BufFmt_StackElem stack[], - __Pyx_memviewslice *memviewslice, - PyObject *original_obj); - -/* ObjectToMemviewSlice.proto */ -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dcd__double(PyObject *, int writable_flag); - -/* ObjectToMemviewSlice.proto */ -static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(PyObject *, int writable_flag); - -/* RealImag.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - #define __Pyx_CREAL(z) ((z).real()) - #define __Pyx_CIMAG(z) ((z).imag()) - #else - #define __Pyx_CREAL(z) (__real__(z)) - #define __Pyx_CIMAG(z) (__imag__(z)) - #endif -#else - #define __Pyx_CREAL(z) ((z).real) - #define __Pyx_CIMAG(z) ((z).imag) -#endif -#if defined(__cplusplus) && CYTHON_CCOMPLEX\ - && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) - #define __Pyx_SET_CREAL(z,x) ((z).real(x)) - #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) -#else - #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) - #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) -#endif - -/* Arithmetic.proto */ -#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #define __Pyx_c_eq_float(a, b) ((a)==(b)) - #define __Pyx_c_sum_float(a, b) ((a)+(b)) - #define __Pyx_c_diff_float(a, b) ((a)-(b)) - #define __Pyx_c_prod_float(a, b) ((a)*(b)) - #define __Pyx_c_quot_float(a, b) ((a)/(b)) - #define __Pyx_c_neg_float(a) (-(a)) - #ifdef __cplusplus - #define __Pyx_c_is_zero_float(z) ((z)==(float)0) - #define __Pyx_c_conj_float(z) (::std::conj(z)) - #if 1 - #define __Pyx_c_abs_float(z) (::std::abs(z)) - #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) - #endif - #else - #define __Pyx_c_is_zero_float(z) ((z)==0) - #define __Pyx_c_conj_float(z) (conjf(z)) - #if 1 - #define __Pyx_c_abs_float(z) (cabsf(z)) - #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) - #endif - #endif -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); - #endif -#endif - -/* Arithmetic.proto */ -#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #define __Pyx_c_eq_double(a, b) ((a)==(b)) - #define __Pyx_c_sum_double(a, b) ((a)+(b)) - #define __Pyx_c_diff_double(a, b) ((a)-(b)) - #define __Pyx_c_prod_double(a, b) ((a)*(b)) - #define __Pyx_c_quot_double(a, b) ((a)/(b)) - #define __Pyx_c_neg_double(a) (-(a)) - #ifdef __cplusplus - #define __Pyx_c_is_zero_double(z) ((z)==(double)0) - #define __Pyx_c_conj_double(z) (::std::conj(z)) - #if 1 - #define __Pyx_c_abs_double(z) (::std::abs(z)) - #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) - #endif - #else - #define __Pyx_c_is_zero_double(z) ((z)==0) - #define __Pyx_c_conj_double(z) (conj(z)) - #if 1 - #define __Pyx_c_abs_double(z) (cabs(z)) - #define __Pyx_c_pow_double(a, b) (cpow(a, b)) - #endif - #endif -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); - #endif -#endif - -/* MemviewSliceCopyTemplate.proto */ -static __Pyx_memviewslice -__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, - const char *mode, int ndim, - size_t sizeof_dtype, int contig_flag, - int dtype_is_object); - -/* MemviewSliceInit.proto */ -#define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d -#define __Pyx_MEMVIEW_DIRECT 1 -#define __Pyx_MEMVIEW_PTR 2 -#define __Pyx_MEMVIEW_FULL 4 -#define __Pyx_MEMVIEW_CONTIG 8 -#define __Pyx_MEMVIEW_STRIDED 16 -#define __Pyx_MEMVIEW_FOLLOW 32 -#define __Pyx_IS_C_CONTIG 1 -#define __Pyx_IS_F_CONTIG 2 -static int __Pyx_init_memviewslice( - struct __pyx_memoryview_obj *memview, - int ndim, - __Pyx_memviewslice *memviewslice, - int memview_is_new_reference); -static CYTHON_INLINE int __pyx_add_acquisition_count_locked( - __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); -static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( - __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); -#define __pyx_get_slice_count_pointer(memview) (&memview->acquisition_count) -#define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__) -#define __PYX_XCLEAR_MEMVIEW(slice, have_gil) __Pyx_XCLEAR_MEMVIEW(slice, have_gil, __LINE__) -static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); -static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *, int, int); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *); - -/* FormatTypeName.proto */ -#if CYTHON_COMPILING_IN_LIMITED_API -typedef PyObject *__Pyx_TypeName; -#define __Pyx_FMT_TYPENAME "%U" -static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); -#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) -#else -typedef const char *__Pyx_TypeName; -#define __Pyx_FMT_TYPENAME "%.200s" -#define __Pyx_PyType_GetName(tp) ((tp)->tp_name) -#define __Pyx_DECREF_TypeName(obj) -#endif - -/* CheckBinaryVersion.proto */ -static unsigned long __Pyx_get_runtime_version(void); -static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - -/* #### Code section: module_declarations ### */ -static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self); /* proto*/ -static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto*/ -static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/ -static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src); /* proto*/ -static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value); /* proto*/ -static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto*/ -static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/ -static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/ -static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v_self); /* proto*/ -static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/ -static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/ -static PyObject *__pyx_memoryviewslice__get_base(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto*/ -static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self); /* proto*/ -static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArrayObject *__pyx_v_self); /* proto*/ -static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self); /* proto*/ -static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self); /* proto*/ -static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self); /* proto*/ -static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self); /* proto*/ -static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self); /* proto*/ - -/* Module declarations from "cython.view" */ - -/* Module declarations from "cython.dataclasses" */ - -/* Module declarations from "cython" */ - -/* Module declarations from "libc.string" */ - -/* Module declarations from "libc.stdio" */ - -/* Module declarations from "libc" */ - -/* Module declarations from "acados_solver_common" */ - -/* Module declarations from "acados_solver" */ - -/* Module declarations from "__builtin__" */ - -/* Module declarations from "cpython.type" */ - -/* Module declarations from "cpython" */ - -/* Module declarations from "cpython.object" */ - -/* Module declarations from "cpython.ref" */ - -/* Module declarations from "numpy" */ - -/* Module declarations from "numpy" */ - -/* Module declarations from "acados_template.acados_ocp_solver_pyx" */ -static PyObject *__pyx_collections_abc_Sequence = 0; -static PyObject *generic = 0; -static PyObject *strided = 0; -static PyObject *indirect = 0; -static PyObject *contiguous = 0; -static PyObject *indirect_contiguous = 0; -static int __pyx_memoryview_thread_locks_used; -static PyThread_type_lock __pyx_memoryview_thread_locks[8]; -static CYTHON_INLINE PyObject *__Pyx_carray_to_py_int(int *, Py_ssize_t); /*proto*/ -static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_int(int *, Py_ssize_t); /*proto*/ -static int __pyx_array_allocate_buffer(struct __pyx_array_obj *); /*proto*/ -static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/ -static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo *); /*proto*/ -static CYTHON_INLINE int __pyx_memoryview_check(PyObject *); /*proto*/ -static PyObject *_unellipsify(PyObject *, int); /*proto*/ -static int assert_direct_dimensions(Py_ssize_t *, int); /*proto*/ -static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *, PyObject *); /*proto*/ -static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int, int); /*proto*/ -static char *__pyx_pybuffer_index(Py_buffer *, char *, Py_ssize_t, Py_ssize_t); /*proto*/ -static int __pyx_memslice_transpose(__Pyx_memviewslice *); /*proto*/ -static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice, int, PyObject *(*)(char *), int (*)(char *, PyObject *), int); /*proto*/ -static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ -static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ -static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *); /*proto*/ -static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/ -static Py_ssize_t abs_py_ssize_t(Py_ssize_t); /*proto*/ -static char __pyx_get_best_slice_order(__Pyx_memviewslice *, int); /*proto*/ -static void _copy_strided_to_strided(char *, Py_ssize_t *, char *, Py_ssize_t *, Py_ssize_t *, Py_ssize_t *, int, size_t); /*proto*/ -static void copy_strided_to_strided(__Pyx_memviewslice *, __Pyx_memviewslice *, int, size_t); /*proto*/ -static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *, int); /*proto*/ -static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *, Py_ssize_t *, Py_ssize_t, int, char); /*proto*/ -static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *, __Pyx_memviewslice *, char, int); /*proto*/ -static int __pyx_memoryview_err_extents(int, Py_ssize_t, Py_ssize_t); /*proto*/ -static int __pyx_memoryview_err_dim(PyObject *, PyObject *, int); /*proto*/ -static int __pyx_memoryview_err(PyObject *, PyObject *); /*proto*/ -static int __pyx_memoryview_err_no_memory(void); /*proto*/ -static int __pyx_memoryview_copy_contents(__Pyx_memviewslice, __Pyx_memviewslice, int, int, int); /*proto*/ -static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *, int, int); /*proto*/ -static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *, int, int, int); /*proto*/ -static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/ -static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/ -static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/ -static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/ -static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *, PyObject *); /*proto*/ -/* #### Code section: typeinfo ### */ -static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t = { "float64_t", NULL, sizeof(__pyx_t_5numpy_float64_t), { 0 }, 0, 'R', 0, 0 }; -static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t = { "int32_t", NULL, sizeof(__pyx_t_5numpy_int32_t), { 0 }, 0, __PYX_IS_UNSIGNED(__pyx_t_5numpy_int32_t) ? 'U' : 'I', __PYX_IS_UNSIGNED(__pyx_t_5numpy_int32_t), 0 }; -static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 }; -static __Pyx_TypeInfo __Pyx_TypeInfo_unsigned_char = { "unsigned char", NULL, sizeof(unsigned char), { 0 }, 0, __PYX_IS_UNSIGNED(unsigned char) ? 'U' : 'I', __PYX_IS_UNSIGNED(unsigned char), 0 }; -/* #### Code section: before_global_var ### */ -#define __Pyx_MODULE_NAME "acados_template.acados_ocp_solver_pyx" -extern int __pyx_module_is_main_acados_template__acados_ocp_solver_pyx; -int __pyx_module_is_main_acados_template__acados_ocp_solver_pyx = 0; - -/* Implementation of "acados_template.acados_ocp_solver_pyx" */ -/* #### Code section: global_var ### */ -static PyObject *__pyx_builtin_AssertionError; -static PyObject *__pyx_builtin_print; -static PyObject *__pyx_builtin_NotImplementedError; -static PyObject *__pyx_builtin_range; -static PyObject *__pyx_builtin_open; -static PyObject *__pyx_builtin_TypeError; -static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_MemoryError; -static PyObject *__pyx_builtin_enumerate; -static PyObject *__pyx_builtin_Ellipsis; -static PyObject *__pyx_builtin_id; -static PyObject *__pyx_builtin_IndexError; -static PyObject *__pyx_builtin_ImportError; -/* #### Code section: string_decls ### */ -static const char __pyx_k_[] = ": "; -static const char __pyx_k_0[] = "0"; -static const char __pyx_k_F[] = "F"; -static const char __pyx_k_N[] = "N"; -static const char __pyx_k_O[] = "O"; -static const char __pyx_k_c[] = "c"; -static const char __pyx_k_d[] = "d"; -static const char __pyx_k_f[] = "f"; -static const char __pyx_k_i[] = "i"; -static const char __pyx_k_k[] = "k"; -static const char __pyx_k_m[] = "m"; -static const char __pyx_k_n[] = "n"; -static const char __pyx_k_p[] = "p"; -static const char __pyx_k_r[] = "r"; -static const char __pyx_k_t[] = "t"; -static const char __pyx_k_u[] = "u"; -static const char __pyx_k_w[] = "w"; -static const char __pyx_k_x[] = "x"; -static const char __pyx_k_z[] = "z"; -static const char __pyx_k__2[] = "."; -static const char __pyx_k__3[] = "*"; -static const char __pyx_k__6[] = "'"; -static const char __pyx_k__7[] = ")"; -static const char __pyx_k_ex[] = "ex"; -static const char __pyx_k_gc[] = "gc"; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_lN[] = "lN"; -static const char __pyx_k_np[] = "np"; -static const char __pyx_k_nx[] = "nx"; -static const char __pyx_k_os[] = "os"; -static const char __pyx_k_pi[] = "pi"; -static const char __pyx_k_sl[] = "sl"; -static const char __pyx_k_su[] = "su"; -static const char __pyx_k_u0[] = "u0"; -static const char __pyx_k_SQP[] = "SQP"; -static const char __pyx_k__16[] = ""; -static const char __pyx_k__17[] = "_"; -static const char __pyx_k__31[] = ", "; -static const char __pyx_k__94[] = "?"; -static const char __pyx_k_abc[] = "abc"; -static const char __pyx_k_and[] = " and "; -static const char __pyx_k_get[] = "get"; -static const char __pyx_k_got[] = " (got "; -static const char __pyx_k_idx[] = "idx"; -static const char __pyx_k_int[] = "int"; -static const char __pyx_k_key[] = "key"; -static const char __pyx_k_lam[] = "lam"; -static const char __pyx_k_lbu[] = "lbu"; -static const char __pyx_k_lbx[] = "lbx"; -static const char __pyx_k_msg[] = "msg"; -static const char __pyx_k_new[] = "__new__"; -static const char __pyx_k_obj[] = "obj"; -static const char __pyx_k_out[] = "out"; -static const char __pyx_k_set[] = "set"; -static const char __pyx_k_sys[] = "sys"; -static const char __pyx_k_t_2[] = "t_"; -static const char __pyx_k_u_2[] = "u_"; -static const char __pyx_k_ubu[] = "ubu"; -static const char __pyx_k_ubx[] = "ubx"; -static const char __pyx_k_x_2[] = "x_"; -static const char __pyx_k_z_2[] = "z_"; -static const char __pyx_k_None[] = "None"; -static const char __pyx_k_TODO[] = "TODO!"; -static const char __pyx_k_base[] = "base"; -static const char __pyx_k_data[] = "data_"; -static const char __pyx_k_dict[] = "__dict__"; -static const char __pyx_k_dims[] = "dims"; -static const char __pyx_k_dump[] = "dump"; -static const char __pyx_k_exit[] = "__exit__"; -static const char __pyx_k_join[] = "join"; -static const char __pyx_k_json[] = "json"; -static const char __pyx_k_keys[] = "keys"; -static const char __pyx_k_load[] = "load"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_mode[] = "mode"; -static const char __pyx_k_name[] = "name"; -static const char __pyx_k_ndim[] = "ndim"; -static const char __pyx_k_open[] = "open"; -static const char __pyx_k_pack[] = "pack"; -static const char __pyx_k_path[] = "path"; -static const char __pyx_k_pi_2[] = "pi_"; -static const char __pyx_k_self[] = "self"; -static const char __pyx_k_size[] = "size"; -static const char __pyx_k_sl_2[] = "sl_"; -static const char __pyx_k_spec[] = "__spec__"; -static const char __pyx_k_step[] = "step"; -static const char __pyx_k_stop[] = "stop"; -static const char __pyx_k_su_2[] = "su_"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_yref[] = "yref"; -static const char __pyx_k_ASCII[] = "ASCII"; -static const char __pyx_k_alpha[] = "alpha"; -static const char __pyx_k_array[] = "array"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_count[] = "count"; -static const char __pyx_k_dtype[] = "dtype"; -static const char __pyx_k_enter[] = "__enter__"; -static const char __pyx_k_error[] = "error"; -static const char __pyx_k_field[] = "field"; -static const char __pyx_k_flags[] = "flags"; -static const char __pyx_k_index[] = "index"; -static const char __pyx_k_int32[] = "int32"; -static const char __pyx_k_lam_2[] = "lam_"; -static const char __pyx_k_numpy[] = "numpy"; -static const char __pyx_k_order[] = "order"; -static const char __pyx_k_print[] = "print"; -static const char __pyx_k_range[] = "range"; -static const char __pyx_k_reset[] = "reset"; -static const char __pyx_k_shape[] = "shape"; -static const char __pyx_k_solve[] = "solve"; -static const char __pyx_k_split[] = "split"; -static const char __pyx_k_stage[] = "stage"; -static const char __pyx_k_start[] = "start"; -static const char __pyx_k_utf_8[] = "utf-8"; -static const char __pyx_k_value[] = "value_"; -static const char __pyx_k_y_ref[] = "y_ref"; -static const char __pyx_k_zeros[] = "zeros"; -static const char __pyx_k_data_2[] = "data"; -static const char __pyx_k_enable[] = "enable"; -static const char __pyx_k_encode[] = "encode"; -static const char __pyx_k_fields[] = "fields"; -static const char __pyx_k_format[] = "format"; -static const char __pyx_k_getcwd[] = "getcwd"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_indent[] = "indent"; -static const char __pyx_k_isfile[] = "isfile"; -static const char __pyx_k_json_2[] = ".json"; -static const char __pyx_k_name_2[] = "__name__"; -static const char __pyx_k_pickle[] = "pickle"; -static const char __pyx_k_qp_mu0[] = "qp_mu0"; -static const char __pyx_k_reduce[] = "__reduce__"; -static const char __pyx_k_res_eq[] = "res_eq"; -static const char __pyx_k_stat_m[] = "stat_m"; -static const char __pyx_k_stat_n[] = "stat_n"; -static const char __pyx_k_status[] = "status"; -static const char __pyx_k_struct[] = "struct"; -static const char __pyx_k_tol_eq[] = "tol_eq"; -static const char __pyx_k_tolist[] = "tolist"; -static const char __pyx_k_unpack[] = "unpack"; -static const char __pyx_k_update[] = "update"; -static const char __pyx_k_utcnow[] = "utcnow"; -static const char __pyx_k_x0_bar[] = "x0_bar"; -static const char __pyx_k_SQP_RTI[] = "SQP_RTI"; -static const char __pyx_k_default[] = "default"; -static const char __pyx_k_disable[] = "disable"; -static const char __pyx_k_field_2[] = "field_"; -static const char __pyx_k_float64[] = "float64"; -static const char __pyx_k_fortran[] = "fortran"; -static const char __pyx_k_iterate[] = "iterate"; -static const char __pyx_k_memview[] = "memview"; -static const char __pyx_k_ndarray[] = "ndarray"; -static const char __pyx_k_out_mat[] = "out_mat"; -static const char __pyx_k_qp_iter[] = "qp_iter"; -static const char __pyx_k_time_qp[] = "time_qp"; -static const char __pyx_k_value_2[] = "value"; -static const char __pyx_k_z_guess[] = "z_guess"; -static const char __pyx_k_Ellipsis[] = "Ellipsis"; -static const char __pyx_k_Sequence[] = "Sequence"; -static const char __pyx_k_at_stage[] = "\" at stage "; -static const char __pyx_k_cost_set[] = "cost_set"; -static const char __pyx_k_data_len[] = "data_len"; -static const char __pyx_k_datetime[] = "datetime"; -static const char __pyx_k_filename[] = "filename"; -static const char __pyx_k_get_cost[] = "get_cost"; -static const char __pyx_k_getstate[] = "__getstate__"; -static const char __pyx_k_i_string[] = "i_string"; -static const char __pyx_k_itemsize[] = "itemsize"; -static const char __pyx_k_min_size[] = "min_size"; -static const char __pyx_k_n_update[] = "n_update"; -static const char __pyx_k_pyx_type[] = "__pyx_type"; -static const char __pyx_k_register[] = "register"; -static const char __pyx_k_res_comp[] = "res_comp"; -static const char __pyx_k_res_ineq[] = "res_ineq"; -static const char __pyx_k_res_stat[] = "res_stat"; -static const char __pyx_k_setstate[] = "__setstate__"; -static const char __pyx_k_solution[] = "solution"; -static const char __pyx_k_sqp_iter[] = "sqp_iter"; -static const char __pyx_k_strftime[] = "strftime"; -static const char __pyx_k_time_lin[] = "time_lin"; -static const char __pyx_k_time_reg[] = "time_reg"; -static const char __pyx_k_time_sim[] = "time_sim"; -static const char __pyx_k_time_tot[] = "time_tot"; -static const char __pyx_k_tol_comp[] = "tol_comp"; -static const char __pyx_k_tol_ineq[] = "tol_ineq"; -static const char __pyx_k_tol_stat[] = "tol_stat"; -static const char __pyx_k_you_have[] = " (you have "; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_alpha_min[] = "alpha_min"; -static const char __pyx_k_enumerate[] = "enumerate"; -static const char __pyx_k_for_field[] = " for field \""; -static const char __pyx_k_get_stats[] = "get_stats"; -static const char __pyx_k_int_value[] = "int_value"; -static const char __pyx_k_isenabled[] = "isenabled"; -static const char __pyx_k_overwrite[] = "overwrite"; -static const char __pyx_k_pyx_state[] = "__pyx_state"; -static const char __pyx_k_qp_tol_eq[] = "qp_tol_eq"; -static const char __pyx_k_recompute[] = "recompute"; -static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; -static const char __pyx_k_residuals[] = "residuals"; -static const char __pyx_k_rti_phase[] = "rti_phase"; -static const char __pyx_k_sort_keys[] = "sort_keys"; -static const char __pyx_k_time_glob[] = "time_glob"; -static const char __pyx_k_IndexError[] = "IndexError"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_full_stats[] = "full_stats"; -static const char __pyx_k_idx_values[] = "idx_values_"; -static const char __pyx_k_int_fields[] = "int_fields"; -static const char __pyx_k_mem_fields[] = "mem_fields"; -static const char __pyx_k_model_name[] = "model_name"; -static const char __pyx_k_out_fields[] = "out_fields"; -static const char __pyx_k_pyx_result[] = "__pyx_result"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_qp_tau_min[] = "qp_tau_min"; -static const char __pyx_k_statistics[] = "statistics"; -static const char __pyx_k_xdot_guess[] = "xdot_guess"; -static const char __pyx_k_ImportError[] = "ImportError"; -static const char __pyx_k_MemoryError[] = "MemoryError"; -static const char __pyx_k_PickleError[] = "PickleError"; -static const char __pyx_k_collections[] = "collections"; -static const char __pyx_k_cost_fields[] = "cost_fields"; -static const char __pyx_k_options_set[] = "options_set"; -static const char __pyx_k_print_level[] = "print_level"; -static const char __pyx_k_qp_tol_comp[] = "qp_tol_comp"; -static const char __pyx_k_qp_tol_ineq[] = "qp_tol_ineq"; -static const char __pyx_k_qp_tol_stat[] = "qp_tol_stat"; -static const char __pyx_k_step_length[] = "step_length"; -static const char __pyx_k_time_sim_ad[] = "time_sim_ad"; -static const char __pyx_k_time_sim_la[] = "time_sim_la"; -static const char __pyx_k_value_shape[] = "value_shape"; -static const char __pyx_k_double_value[] = "double_value"; -static const char __pyx_k_get_stat_int[] = "__get_stat_int"; -static const char __pyx_k_initializing[] = "_initializing"; -static const char __pyx_k_is_coroutine[] = "_is_coroutine"; -static const char __pyx_k_load_iterate[] = "load_iterate"; -static const char __pyx_k_param_values[] = "param_values_"; -static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; -static const char __pyx_k_solve_for_x0[] = "solve_for_x0"; -static const char __pyx_k_string_value[] = "string_value"; -static const char __pyx_k_stringsource[] = ""; -static const char __pyx_k_version_info[] = "version_info"; -static const char __pyx_k_Got_sizes_idx[] = " Got sizes idx "; -static const char __pyx_k_Y_m_d_H_M_S_f[] = "%Y-%m-%d-%H:%M:%S.%f"; -static const char __pyx_k_class_getitem[] = "__class_getitem__"; -static const char __pyx_k_custom_update[] = "custom_update"; -static const char __pyx_k_double_fields[] = "double_fields"; -static const char __pyx_k_get_residuals[] = "get_residuals"; -static const char __pyx_k_globalization[] = "globalization"; -static const char __pyx_k_qp_warm_start[] = "qp_warm_start"; -static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; -static const char __pyx_k_store_iterate[] = "store_iterate"; -static const char __pyx_k_string_fields[] = "string_fields"; -static const char __pyx_k_time_qp_xcond[] = "time_qp_xcond"; -static const char __pyx_k_AssertionError[] = "AssertionError"; -static const char __pyx_k_asfortranarray[] = "asfortranarray"; -static const char __pyx_k_full_step_dual[] = "full_step_dual"; -static const char __pyx_k_get_from_qp_in[] = "get_from_qp_in"; -static const char __pyx_k_new_time_steps[] = "new_time_steps"; -static const char __pyx_k_param_values_2[] = ", param_values "; -static const char __pyx_k_with_dimension[] = " with dimension "; -static const char __pyx_k_View_MemoryView[] = "View.MemoryView"; -static const char __pyx_k_allocate_buffer[] = "allocate_buffer"; -static const char __pyx_k_alpha_reduction[] = "alpha_reduction"; -static const char __pyx_k_collections_abc[] = "collections.abc"; -static const char __pyx_k_constraints_set[] = "constraints_set"; -static const char __pyx_k_dtype_is_object[] = "dtype_is_object"; -static const char __pyx_k_eval_param_sens[] = "eval_param_sens"; -static const char __pyx_k_get_stat_double[] = "__get_stat_double"; -static const char __pyx_k_get_stat_matrix[] = "__get_stat_matrix"; -static const char __pyx_k_nlp_solver_type[] = "nlp_solver_type"; -static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; -static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; -static const char __pyx_k_print_statistics[] = "print_statistics"; -static const char __pyx_k_qp_solver_cond_N[] = "qp_solver_cond_N"; -static const char __pyx_k_ascontiguousarray[] = "ascontiguousarray"; -static const char __pyx_k_pyx_unpickle_Enum[] = "__pyx_unpickle_Enum"; -static const char __pyx_k_set_params_sparse[] = "set_params_sparse"; -static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_constraints_fields[] = "constraints_fields"; -static const char __pyx_k_set_new_time_steps[] = "set_new_time_steps"; -static const char __pyx_k_strided_and_direct[] = ""; -static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; -static const char __pyx_k_get_pointers_solver[] = "__get_pointers_solver"; -static const char __pyx_k_initialize_t_slacks[] = "initialize_t_slacks"; -static const char __pyx_k_reset_qp_solver_mem[] = "reset_qp_solver_mem"; -static const char __pyx_k_time_qp_solver_call[] = "time_qp_solver_call"; -static const char __pyx_k_warm_start_first_qp[] = "warm_start_first_qp"; -static const char __pyx_k_strided_and_indirect[] = ""; -static const char __pyx_k_AcadosOcpSolverCython[] = "AcadosOcpSolverCython"; -static const char __pyx_k_Invalid_shape_in_axis[] = "Invalid shape in axis "; -static const char __pyx_k_contiguous_and_direct[] = ""; -static const char __pyx_k_globalization_use_SOC[] = "globalization_use_SOC"; -static const char __pyx_k_Cannot_index_with_type[] = "Cannot index with type '"; -static const char __pyx_k_MemoryView_of_r_object[] = ""; -static const char __pyx_k_eps_sufficient_descent[] = "eps_sufficient_descent"; -static const char __pyx_k_MemoryView_of_r_at_0x_x[] = ""; -static const char __pyx_k_contiguous_and_indirect[] = ""; -static const char __pyx_k_update_qp_solver_cond_N[] = "update_qp_solver_cond_N"; -static const char __pyx_k_with_dimension_you_have[] = "with dimension {} (you have {})"; -static const char __pyx_k_AcadosOcpSolverCython_get[] = "AcadosOcpSolverCython.get"; -static const char __pyx_k_AcadosOcpSolverCython_set[] = "AcadosOcpSolverCython.set"; -static const char __pyx_k_Dimension_d_is_not_direct[] = "Dimension %d is not direct"; -static const char __pyx_k_stored_current_iterate_in[] = "stored current iterate in "; -static const char __pyx_k_Index_out_of_bounds_axis_d[] = "Index out of bounds (axis %d)"; -static const char __pyx_k_AcadosOcpSolverCython_reset[] = "AcadosOcpSolverCython.reset"; -static const char __pyx_k_AcadosOcpSolverCython_solve[] = "AcadosOcpSolverCython.solve"; -static const char __pyx_k_Step_may_not_be_zero_axis_d[] = "Step may not be zero (axis %d)"; -static const char __pyx_k_itemsize_0_for_cython_array[] = "itemsize <= 0 for cython.array"; -static const char __pyx_k_store_iterate_locals_lambda[] = "store_iterate.."; -static const char __pyx_k_time_solution_sensitivities[] = "time_solution_sensitivities"; -static const char __pyx_k_unable_to_allocate_array_data[] = "unable to allocate array data."; -static const char __pyx_k_AcadosOcpSolverCython_cost_set[] = "AcadosOcpSolverCython.cost_set"; -static const char __pyx_k_AcadosOcpSolverCython_get_cost[] = "AcadosOcpSolverCython.get_cost"; -static const char __pyx_k_param_values__must_be_np_array[] = "param_values_ must be np.array."; -static const char __pyx_k_strided_and_direct_or_indirect[] = ""; -static const char __pyx_k_AcadosOcpSolverCython__get_poin[] = "_AcadosOcpSolverCython__get_pointers_solver"; -static const char __pyx_k_AcadosOcpSolverCython__get_stat[] = "_AcadosOcpSolverCython__get_stat_int"; -static const char __pyx_k_AcadosOcpSolverCython_get_field[] = "AcadosOcpSolverCython.get(): field {} does not exist at final stage {}."; -static const char __pyx_k_AcadosOcpSolverCython_get_is_an[] = "AcadosOcpSolverCython.get(): {} is an invalid argument. \n Possible values are {}."; -static const char __pyx_k_AcadosOcpSolverCython_get_stage[] = "AcadosOcpSolverCython.get(): stage index must be in [0, N], got: {}."; -static const char __pyx_k_AcadosOcpSolverCython_get_stats[] = "AcadosOcpSolverCython.get_stats"; -static const char __pyx_k_AcadosOcpSolverCython_solve_for[] = "AcadosOcpSolverCython.solve_for_x0"; -static const char __pyx_k_AcadosOcpSolverCython_update_qp[] = "AcadosOcpSolverCython.update_qp_solver_cond_N"; -static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; -static const char __pyx_k_AcadosOcpSolverCython___get_poin[] = "AcadosOcpSolverCython.__get_pointers_solver"; -static const char __pyx_k_AcadosOcpSolverCython___get_stat[] = "AcadosOcpSolverCython.__get_stat_int"; -static const char __pyx_k_AcadosOcpSolverCython___reduce_c[] = "AcadosOcpSolverCython.__reduce_cython__"; -static const char __pyx_k_AcadosOcpSolverCython___setstate[] = "AcadosOcpSolverCython.__setstate_cython__"; -static const char __pyx_k_AcadosOcpSolverCython_constraint[] = "AcadosOcpSolverCython.constraints_set(): mismatching dimension"; -static const char __pyx_k_AcadosOcpSolverCython_cost_set_m[] = "AcadosOcpSolverCython.cost_set(): mismatching dimension"; -static const char __pyx_k_AcadosOcpSolverCython_custom_upd[] = "AcadosOcpSolverCython.custom_update"; -static const char __pyx_k_AcadosOcpSolverCython_does_not_s[] = "AcadosOcpSolverCython: does not support set_new_time_steps() since it is only a prototyping feature"; -static const char __pyx_k_AcadosOcpSolverCython_eval_param[] = "AcadosOcpSolverCython.eval_param_sens(): index must be Integer."; -static const char __pyx_k_AcadosOcpSolverCython_get_from_q[] = "AcadosOcpSolverCython.get_from_qp_in"; -static const char __pyx_k_AcadosOcpSolverCython_get_residu[] = "AcadosOcpSolverCython.get_residuals"; -static const char __pyx_k_AcadosOcpSolverCython_load_itera[] = "AcadosOcpSolverCython.load_iterate"; -static const char __pyx_k_AcadosOcpSolverCython_options_se[] = "AcadosOcpSolverCython.options_set() does not support field {}.\n Possible values are {}."; -static const char __pyx_k_AcadosOcpSolverCython_print_stat[] = "AcadosOcpSolverCython.print_statistics"; -static const char __pyx_k_AcadosOcpSolverCython_set_is_not[] = "AcadosOcpSolverCython.set(): {} is not a valid argument. \nPossible values are {}."; -static const char __pyx_k_AcadosOcpSolverCython_set_mismat[] = "AcadosOcpSolverCython.set(): mismatching dimension for field \"{}\" "; -static const char __pyx_k_AcadosOcpSolverCython_set_new_ti[] = "AcadosOcpSolverCython.set_new_time_steps"; -static const char __pyx_k_AcadosOcpSolverCython_set_params[] = "AcadosOcpSolverCython.set_params_sparse"; -static const char __pyx_k_AcadosOcpSolverCython_solve_argu[] = "AcadosOcpSolverCython.solve(): argument 'rti_phase' can take only values 0, 1, 2 for SQP-RTI-type solvers"; -static const char __pyx_k_AcadosOcpSolverCython_store_iter[] = "AcadosOcpSolverCython.store_iterate"; -static const char __pyx_k_All_dimensions_preceding_dimensi[] = "All dimensions preceding dimension %d must be indexed and not sliced"; -static const char __pyx_k_Buffer_view_does_not_expose_stri[] = "Buffer view does not expose strides"; -static const char __pyx_k_Can_only_create_a_buffer_that_is[] = "Can only create a buffer that is contiguous in memory."; -static const char __pyx_k_Cannot_assign_to_read_only_memor[] = "Cannot assign to read-only memoryview"; -static const char __pyx_k_Cannot_create_writable_memory_vi[] = "Cannot create writable memory view from read-only memoryview"; -static const char __pyx_k_Cannot_transpose_memoryview_with[] = "Cannot transpose memoryview with indirect dimensions"; -static const char __pyx_k_Empty_shape_tuple_for_cython_arr[] = "Empty shape tuple for cython.array"; -static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))"; -static const char __pyx_k_Indirect_dimensions_not_supporte[] = "Indirect dimensions not supported"; -static const char __pyx_k_Invalid_mode_expected_c_or_fortr[] = "Invalid mode, expected 'c' or 'fortran', got "; -static const char __pyx_k_Out_of_bounds_on_buffer_access_a[] = "Out of bounds on buffer access (axis "; -static const char __pyx_k_Unable_to_convert_item_to_object[] = "Unable to convert item to object"; -static const char __pyx_k_Warning_acados_ocp_solver_reache[] = "Warning: acados_ocp_solver reached maximum iterations."; -static const char __pyx_k_acados_acados_ocp_solver_returne[] = "acados acados_ocp_solver returned status "; -static const char __pyx_k_acados_template_acados_ocp_solve[] = "acados_template.acados_ocp_solver_pyx"; -static const char __pyx_k_alpha_values_are_not_available_f[] = "alpha values are not available for SQP_RTI"; -static const char __pyx_k_constraints_set_value_must_be_nu[] = "constraints_set: value must be numpy array, got "; -static const char __pyx_k_cost_set_value_must_be_numpy_arr[] = "cost_set: value must be numpy array, got "; -static const char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents in dimension "; -static const char __pyx_k_line_search_use_sufficient_desce[] = "line_search_use_sufficient_descent"; -static const char __pyx_k_load_iterate_failed_file_does_no[] = "load_iterate: failed, file does not exist: "; -static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; -static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; -static const char __pyx_k_param_values__and_idx_values__mu[] = "param_values_ and idx_values_ must be of the same size."; -static const char __pyx_k_set_value_must_be_numpy_array_go[] = "set: value must be numpy array, got "; -static const char __pyx_k_solver_option_must_be_of_type_fl[] = "solver option {} must be of type float. You have {}."; -static const char __pyx_k_solver_option_must_be_of_type_in[] = "solver option {} must be of type int. You have {}."; -static const char __pyx_k_solver_option_must_be_of_type_st[] = "solver option {} must be of type str. You have {}."; -static const char __pyx_k_third_party_acados_acados_templa[] = "third_party/acados/acados_template/acados_ocp_solver_pyx.pyx"; -static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides."; -static const char __pyx_k_AcadosOcpSolverCython__get_stat_2[] = "_AcadosOcpSolverCython__get_stat_double"; -static const char __pyx_k_AcadosOcpSolverCython__get_stat_3[] = "_AcadosOcpSolverCython__get_stat_matrix"; -static const char __pyx_k_AcadosOcpSolverCython___get_stat_2[] = "AcadosOcpSolverCython.__get_stat_double"; -static const char __pyx_k_AcadosOcpSolverCython___get_stat_3[] = "AcadosOcpSolverCython.__get_stat_matrix"; -static const char __pyx_k_AcadosOcpSolverCython_constraint_2[] = "AcadosOcpSolverCython.constraints_set"; -static const char __pyx_k_AcadosOcpSolverCython_does_not_s_2[] = "AcadosOcpSolverCython: does not support update_qp_solver_cond_N() since it is only a prototyping feature"; -static const char __pyx_k_AcadosOcpSolverCython_eval_param_2[] = "AcadosOcpSolverCython.eval_param_sens(): index must be in [0, nx-1], got: "; -static const char __pyx_k_AcadosOcpSolverCython_eval_param_3[] = "AcadosOcpSolverCython.eval_param_sens"; -static const char __pyx_k_AcadosOcpSolverCython_options_se_2[] = "AcadosOcpSolverCython.options_set"; -static const char __pyx_k_AcadosOcpSolverCython_solve_argu_2[] = "AcadosOcpSolverCython.solve(): argument 'rti_phase' can take only value 0 for SQP-type solvers"; -/* #### Code section: decls ### */ -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */ -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ -static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self); /* proto */ -static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr); /* proto */ -static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item); /* proto */ -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ -static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object); /* proto */ -static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto */ -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */ -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython___cinit__(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_model_name, PyObject *__pyx_v_nlp_solver_type, PyObject *__pyx_v_N); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_2__get_pointers_solver(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_4solve_for_x0(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_x0_bar); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_6solve(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_8reset(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_reset_qp_solver_mem); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_10custom_update(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_data_); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_12set_new_time_steps(CYTHON_UNUSED struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_new_time_steps); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_14update_qp_solver_cond_N(CYTHON_UNUSED struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_qp_solver_cond_N); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_16eval_param_sens(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_stage, PyObject *__pyx_v_field); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_18get(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_20print_statistics(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self); /* proto */ -static PyObject *__pyx_lambda_funcdef_lambda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_22store_iterate(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_overwrite); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_24load_iterate(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_filename); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_26get_stats(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field_); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_28__get_stat_int(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_30__get_stat_double(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_32__get_stat_matrix(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field, PyObject *__pyx_v_n, PyObject *__pyx_v_m); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_34get_cost(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_36get_residuals(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_recompute); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_38set(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_, PyObject *__pyx_v_value_); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_40cost_set(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_, PyObject *__pyx_v_value_); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_42constraints_set(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_, PyObject *__pyx_v_value_); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_44get_from_qp_in(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_46options_set(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field_, PyObject *__pyx_v_value_); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_48set_params_sparse(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_idx_values_, PyObject *__pyx_v_param_values_); /* proto */ -static void __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_50__del__(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_52__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_54__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_tp_new_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_keys = {0, 0, 0, 0, 0}; -/* #### Code section: late_includes ### */ -/* #### Code section: module_state ### */ -typedef struct { - PyObject *__pyx_d; - PyObject *__pyx_b; - PyObject *__pyx_cython_runtime; - PyObject *__pyx_empty_tuple; - PyObject *__pyx_empty_bytes; - PyObject *__pyx_empty_unicode; - #ifdef __Pyx_CyFunction_USED - PyTypeObject *__pyx_CyFunctionType; - #endif - #ifdef __Pyx_FusedFunction_USED - PyTypeObject *__pyx_FusedFunctionType; - #endif - #ifdef __Pyx_Generator_USED - PyTypeObject *__pyx_GeneratorType; - #endif - #ifdef __Pyx_IterableCoroutine_USED - PyTypeObject *__pyx_IterableCoroutineType; - #endif - #ifdef __Pyx_Coroutine_USED - PyTypeObject *__pyx_CoroutineAwaitType; - #endif - #ifdef __Pyx_Coroutine_USED - PyTypeObject *__pyx_CoroutineType; - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - PyTypeObject *__pyx_ptype_7cpython_4type_type; - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - #if CYTHON_USE_MODULE_STATE - #endif - PyTypeObject *__pyx_ptype_5numpy_dtype; - PyTypeObject *__pyx_ptype_5numpy_flatiter; - PyTypeObject *__pyx_ptype_5numpy_broadcast; - PyTypeObject *__pyx_ptype_5numpy_ndarray; - PyTypeObject *__pyx_ptype_5numpy_generic; - PyTypeObject *__pyx_ptype_5numpy_number; - PyTypeObject *__pyx_ptype_5numpy_integer; - PyTypeObject *__pyx_ptype_5numpy_signedinteger; - PyTypeObject *__pyx_ptype_5numpy_unsignedinteger; - PyTypeObject *__pyx_ptype_5numpy_inexact; - PyTypeObject *__pyx_ptype_5numpy_floating; - PyTypeObject *__pyx_ptype_5numpy_complexfloating; - PyTypeObject *__pyx_ptype_5numpy_flexible; - PyTypeObject *__pyx_ptype_5numpy_character; - PyTypeObject *__pyx_ptype_5numpy_ufunc; - #if CYTHON_USE_MODULE_STATE - PyObject *__pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython; - PyObject *__pyx_type___pyx_array; - PyObject *__pyx_type___pyx_MemviewEnum; - PyObject *__pyx_type___pyx_memoryview; - PyObject *__pyx_type___pyx_memoryviewslice; - #endif - PyTypeObject *__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython; - PyTypeObject *__pyx_array_type; - PyTypeObject *__pyx_MemviewEnum_type; - PyTypeObject *__pyx_memoryview_type; - PyTypeObject *__pyx_memoryviewslice_type; - PyObject *__pyx_kp_u_; - PyObject *__pyx_kp_u_0; - PyObject *__pyx_n_s_ASCII; - PyObject *__pyx_n_s_AcadosOcpSolverCython; - PyObject *__pyx_n_s_AcadosOcpSolverCython___get_poin; - PyObject *__pyx_n_s_AcadosOcpSolverCython___get_stat; - PyObject *__pyx_n_s_AcadosOcpSolverCython___get_stat_2; - PyObject *__pyx_n_s_AcadosOcpSolverCython___get_stat_3; - PyObject *__pyx_n_s_AcadosOcpSolverCython___reduce_c; - PyObject *__pyx_n_s_AcadosOcpSolverCython___setstate; - PyObject *__pyx_n_s_AcadosOcpSolverCython__get_poin; - PyObject *__pyx_n_s_AcadosOcpSolverCython__get_stat; - PyObject *__pyx_n_s_AcadosOcpSolverCython__get_stat_2; - PyObject *__pyx_n_s_AcadosOcpSolverCython__get_stat_3; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_constraint; - PyObject *__pyx_n_s_AcadosOcpSolverCython_constraint_2; - PyObject *__pyx_n_s_AcadosOcpSolverCython_cost_set; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_cost_set_m; - PyObject *__pyx_n_s_AcadosOcpSolverCython_custom_upd; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_does_not_s; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_does_not_s_2; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_eval_param; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_eval_param_2; - PyObject *__pyx_n_s_AcadosOcpSolverCython_eval_param_3; - PyObject *__pyx_n_s_AcadosOcpSolverCython_get; - PyObject *__pyx_n_s_AcadosOcpSolverCython_get_cost; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_get_field; - PyObject *__pyx_n_s_AcadosOcpSolverCython_get_from_q; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_get_is_an; - PyObject *__pyx_n_s_AcadosOcpSolverCython_get_residu; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_get_stage; - PyObject *__pyx_n_s_AcadosOcpSolverCython_get_stats; - PyObject *__pyx_n_s_AcadosOcpSolverCython_load_itera; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_options_se; - PyObject *__pyx_n_s_AcadosOcpSolverCython_options_se_2; - PyObject *__pyx_n_s_AcadosOcpSolverCython_print_stat; - PyObject *__pyx_n_s_AcadosOcpSolverCython_reset; - PyObject *__pyx_n_s_AcadosOcpSolverCython_set; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_set_is_not; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_set_mismat; - PyObject *__pyx_n_s_AcadosOcpSolverCython_set_new_ti; - PyObject *__pyx_n_s_AcadosOcpSolverCython_set_params; - PyObject *__pyx_n_s_AcadosOcpSolverCython_solve; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_solve_argu; - PyObject *__pyx_kp_u_AcadosOcpSolverCython_solve_argu_2; - PyObject *__pyx_n_s_AcadosOcpSolverCython_solve_for; - PyObject *__pyx_n_s_AcadosOcpSolverCython_store_iter; - PyObject *__pyx_n_s_AcadosOcpSolverCython_update_qp; - PyObject *__pyx_kp_s_All_dimensions_preceding_dimensi; - PyObject *__pyx_n_s_AssertionError; - PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri; - PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is; - PyObject *__pyx_kp_s_Cannot_assign_to_read_only_memor; - PyObject *__pyx_kp_s_Cannot_create_writable_memory_vi; - PyObject *__pyx_kp_u_Cannot_index_with_type; - PyObject *__pyx_kp_s_Cannot_transpose_memoryview_with; - PyObject *__pyx_kp_s_Dimension_d_is_not_direct; - PyObject *__pyx_n_s_Ellipsis; - PyObject *__pyx_kp_s_Empty_shape_tuple_for_cython_arr; - PyObject *__pyx_n_u_F; - PyObject *__pyx_kp_u_Got_sizes_idx; - PyObject *__pyx_n_s_ImportError; - PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0; - PyObject *__pyx_n_s_IndexError; - PyObject *__pyx_kp_s_Index_out_of_bounds_axis_d; - PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte; - PyObject *__pyx_kp_u_Invalid_mode_expected_c_or_fortr; - PyObject *__pyx_kp_u_Invalid_shape_in_axis; - PyObject *__pyx_n_s_MemoryError; - PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x; - PyObject *__pyx_kp_s_MemoryView_of_r_object; - PyObject *__pyx_n_s_N; - PyObject *__pyx_kp_u_None; - PyObject *__pyx_n_s_NotImplementedError; - PyObject *__pyx_n_b_O; - PyObject *__pyx_kp_u_Out_of_bounds_on_buffer_access_a; - PyObject *__pyx_n_s_PickleError; - PyObject *__pyx_n_u_SQP; - PyObject *__pyx_n_u_SQP_RTI; - PyObject *__pyx_n_s_Sequence; - PyObject *__pyx_kp_s_Step_may_not_be_zero_axis_d; - PyObject *__pyx_kp_u_TODO; - PyObject *__pyx_n_s_TypeError; - PyObject *__pyx_kp_s_Unable_to_convert_item_to_object; - PyObject *__pyx_n_s_ValueError; - PyObject *__pyx_n_s_View_MemoryView; - PyObject *__pyx_kp_u_Warning_acados_ocp_solver_reache; - PyObject *__pyx_kp_u_Y_m_d_H_M_S_f; - PyObject *__pyx_kp_u__16; - PyObject *__pyx_n_u__17; - PyObject *__pyx_kp_u__2; - PyObject *__pyx_n_s__3; - PyObject *__pyx_kp_u__31; - PyObject *__pyx_kp_u__6; - PyObject *__pyx_kp_u__7; - PyObject *__pyx_n_s__94; - PyObject *__pyx_n_s_abc; - PyObject *__pyx_kp_u_acados_acados_ocp_solver_returne; - PyObject *__pyx_n_s_acados_template_acados_ocp_solve; - PyObject *__pyx_n_s_allocate_buffer; - PyObject *__pyx_n_u_alpha; - PyObject *__pyx_n_u_alpha_min; - PyObject *__pyx_n_u_alpha_reduction; - PyObject *__pyx_kp_u_alpha_values_are_not_available_f; - PyObject *__pyx_kp_u_and; - PyObject *__pyx_n_s_array; - PyObject *__pyx_n_s_ascontiguousarray; - PyObject *__pyx_n_s_asfortranarray; - PyObject *__pyx_n_s_asyncio_coroutines; - PyObject *__pyx_kp_u_at_stage; - PyObject *__pyx_n_s_base; - PyObject *__pyx_n_s_c; - PyObject *__pyx_n_u_c; - PyObject *__pyx_n_s_class; - PyObject *__pyx_n_s_class_getitem; - PyObject *__pyx_n_s_cline_in_traceback; - PyObject *__pyx_n_s_collections; - PyObject *__pyx_kp_s_collections_abc; - PyObject *__pyx_n_s_constraints_fields; - PyObject *__pyx_n_s_constraints_set; - PyObject *__pyx_kp_u_constraints_set_value_must_be_nu; - PyObject *__pyx_kp_s_contiguous_and_direct; - PyObject *__pyx_kp_s_contiguous_and_indirect; - PyObject *__pyx_n_s_cost_fields; - PyObject *__pyx_n_s_cost_set; - PyObject *__pyx_kp_u_cost_set_value_must_be_numpy_arr; - PyObject *__pyx_n_s_count; - PyObject *__pyx_n_s_custom_update; - PyObject *__pyx_n_u_d; - PyObject *__pyx_n_s_data; - PyObject *__pyx_n_s_data_2; - PyObject *__pyx_n_s_data_len; - PyObject *__pyx_n_s_datetime; - PyObject *__pyx_n_s_default; - PyObject *__pyx_n_s_dict; - PyObject *__pyx_n_s_dims; - PyObject *__pyx_kp_u_disable; - PyObject *__pyx_n_s_double_fields; - PyObject *__pyx_n_s_double_value; - PyObject *__pyx_n_s_dtype; - PyObject *__pyx_n_s_dtype_is_object; - PyObject *__pyx_n_s_dump; - PyObject *__pyx_kp_u_enable; - PyObject *__pyx_n_s_encode; - PyObject *__pyx_n_s_enter; - PyObject *__pyx_n_s_enumerate; - PyObject *__pyx_n_u_eps_sufficient_descent; - PyObject *__pyx_n_s_error; - PyObject *__pyx_n_s_eval_param_sens; - PyObject *__pyx_n_u_ex; - PyObject *__pyx_n_s_exit; - PyObject *__pyx_n_s_f; - PyObject *__pyx_n_s_field; - PyObject *__pyx_n_s_field_2; - PyObject *__pyx_n_s_fields; - PyObject *__pyx_n_s_filename; - PyObject *__pyx_n_s_flags; - PyObject *__pyx_n_s_float64; - PyObject *__pyx_kp_u_for_field; - PyObject *__pyx_n_s_format; - PyObject *__pyx_n_s_fortran; - PyObject *__pyx_n_u_fortran; - PyObject *__pyx_n_s_full_stats; - PyObject *__pyx_n_u_full_step_dual; - PyObject *__pyx_kp_u_gc; - PyObject *__pyx_n_s_get; - PyObject *__pyx_n_s_get_cost; - PyObject *__pyx_n_s_get_from_qp_in; - PyObject *__pyx_n_s_get_pointers_solver; - PyObject *__pyx_n_s_get_residuals; - PyObject *__pyx_n_s_get_stat_double; - PyObject *__pyx_n_s_get_stat_int; - PyObject *__pyx_n_s_get_stat_matrix; - PyObject *__pyx_n_s_get_stats; - PyObject *__pyx_n_s_getcwd; - PyObject *__pyx_n_s_getstate; - PyObject *__pyx_n_u_globalization; - PyObject *__pyx_n_u_globalization_use_SOC; - PyObject *__pyx_kp_u_got; - PyObject *__pyx_kp_u_got_differing_extents_in_dimensi; - PyObject *__pyx_n_s_i; - PyObject *__pyx_n_s_i_string; - PyObject *__pyx_n_s_id; - PyObject *__pyx_n_s_idx; - PyObject *__pyx_n_s_idx_values; - PyObject *__pyx_n_s_import; - PyObject *__pyx_n_s_indent; - PyObject *__pyx_n_s_index; - PyObject *__pyx_n_u_initialize_t_slacks; - PyObject *__pyx_n_s_initializing; - PyObject *__pyx_n_s_int; - PyObject *__pyx_n_s_int32; - PyObject *__pyx_n_s_int_fields; - PyObject *__pyx_n_s_int_value; - PyObject *__pyx_n_s_is_coroutine; - PyObject *__pyx_kp_u_isenabled; - PyObject *__pyx_n_s_isfile; - PyObject *__pyx_n_s_itemsize; - PyObject *__pyx_kp_s_itemsize_0_for_cython_array; - PyObject *__pyx_n_u_iterate; - PyObject *__pyx_n_s_join; - PyObject *__pyx_n_s_json; - PyObject *__pyx_kp_u_json_2; - PyObject *__pyx_n_s_k; - PyObject *__pyx_n_s_key; - PyObject *__pyx_n_s_keys; - PyObject *__pyx_n_s_lN; - PyObject *__pyx_n_u_lam; - PyObject *__pyx_n_u_lam_2; - PyObject *__pyx_n_u_lbu; - PyObject *__pyx_n_u_lbx; - PyObject *__pyx_n_u_line_search_use_sufficient_desce; - PyObject *__pyx_n_s_load; - PyObject *__pyx_n_s_load_iterate; - PyObject *__pyx_kp_u_load_iterate_failed_file_does_no; - PyObject *__pyx_n_s_m; - PyObject *__pyx_n_s_main; - PyObject *__pyx_n_s_mem_fields; - PyObject *__pyx_n_s_memview; - PyObject *__pyx_n_s_min_size; - PyObject *__pyx_n_s_mode; - PyObject *__pyx_n_s_model_name; - PyObject *__pyx_n_s_msg; - PyObject *__pyx_n_s_n; - PyObject *__pyx_n_s_n_update; - PyObject *__pyx_n_s_name; - PyObject *__pyx_n_s_name_2; - PyObject *__pyx_n_s_ndarray; - PyObject *__pyx_n_s_ndim; - PyObject *__pyx_n_s_new; - PyObject *__pyx_n_s_new_time_steps; - PyObject *__pyx_n_s_nlp_solver_type; - PyObject *__pyx_kp_s_no_default___reduce___due_to_non; - PyObject *__pyx_n_s_np; - PyObject *__pyx_n_s_numpy; - PyObject *__pyx_kp_u_numpy_core_multiarray_failed_to; - PyObject *__pyx_kp_u_numpy_core_umath_failed_to_impor; - PyObject *__pyx_n_s_nx; - PyObject *__pyx_n_s_obj; - PyObject *__pyx_n_s_open; - PyObject *__pyx_n_s_options_set; - PyObject *__pyx_n_s_order; - PyObject *__pyx_n_s_os; - PyObject *__pyx_n_s_out; - PyObject *__pyx_n_s_out_fields; - PyObject *__pyx_n_s_out_mat; - PyObject *__pyx_n_s_overwrite; - PyObject *__pyx_n_u_p; - PyObject *__pyx_n_s_pack; - PyObject *__pyx_n_s_param_values; - PyObject *__pyx_kp_u_param_values_2; - PyObject *__pyx_kp_u_param_values__and_idx_values__mu; - PyObject *__pyx_kp_u_param_values__must_be_np_array; - PyObject *__pyx_n_s_path; - PyObject *__pyx_n_u_pi; - PyObject *__pyx_n_u_pi_2; - PyObject *__pyx_n_s_pickle; - PyObject *__pyx_n_s_print; - PyObject *__pyx_n_u_print_level; - PyObject *__pyx_n_s_print_statistics; - PyObject *__pyx_n_s_pyx_PickleError; - PyObject *__pyx_n_s_pyx_checksum; - PyObject *__pyx_n_s_pyx_result; - PyObject *__pyx_n_s_pyx_state; - PyObject *__pyx_n_s_pyx_type; - PyObject *__pyx_n_s_pyx_unpickle_Enum; - PyObject *__pyx_n_s_pyx_vtable; - PyObject *__pyx_n_u_qp_iter; - PyObject *__pyx_n_u_qp_mu0; - PyObject *__pyx_n_s_qp_solver_cond_N; - PyObject *__pyx_n_u_qp_tau_min; - PyObject *__pyx_n_u_qp_tol_comp; - PyObject *__pyx_n_u_qp_tol_eq; - PyObject *__pyx_n_u_qp_tol_ineq; - PyObject *__pyx_n_u_qp_tol_stat; - PyObject *__pyx_n_u_qp_warm_start; - PyObject *__pyx_n_u_r; - PyObject *__pyx_n_s_range; - PyObject *__pyx_n_s_recompute; - PyObject *__pyx_n_s_reduce; - PyObject *__pyx_n_s_reduce_cython; - PyObject *__pyx_n_s_reduce_ex; - PyObject *__pyx_n_s_register; - PyObject *__pyx_n_b_res_comp; - PyObject *__pyx_n_b_res_eq; - PyObject *__pyx_n_b_res_ineq; - PyObject *__pyx_n_b_res_stat; - PyObject *__pyx_n_s_reset; - PyObject *__pyx_n_s_reset_qp_solver_mem; - PyObject *__pyx_n_u_residuals; - PyObject *__pyx_n_u_rti_phase; - PyObject *__pyx_n_s_self; - PyObject *__pyx_n_s_set; - PyObject *__pyx_n_s_set_new_time_steps; - PyObject *__pyx_n_s_set_params_sparse; - PyObject *__pyx_kp_u_set_value_must_be_numpy_array_go; - PyObject *__pyx_n_s_setstate; - PyObject *__pyx_n_s_setstate_cython; - PyObject *__pyx_n_s_shape; - PyObject *__pyx_n_s_size; - PyObject *__pyx_n_u_sl; - PyObject *__pyx_n_u_sl_2; - PyObject *__pyx_n_s_solution; - PyObject *__pyx_n_s_solve; - PyObject *__pyx_n_s_solve_for_x0; - PyObject *__pyx_kp_u_solver_option_must_be_of_type_fl; - PyObject *__pyx_kp_u_solver_option_must_be_of_type_in; - PyObject *__pyx_kp_u_solver_option_must_be_of_type_st; - PyObject *__pyx_n_s_sort_keys; - PyObject *__pyx_n_s_spec; - PyObject *__pyx_n_s_split; - PyObject *__pyx_n_s_sqp_iter; - PyObject *__pyx_n_u_sqp_iter; - PyObject *__pyx_n_s_stage; - PyObject *__pyx_n_s_start; - PyObject *__pyx_n_s_stat_m; - PyObject *__pyx_n_u_stat_m; - PyObject *__pyx_n_s_stat_n; - PyObject *__pyx_n_u_stat_n; - PyObject *__pyx_n_u_statistics; - PyObject *__pyx_n_s_status; - PyObject *__pyx_n_s_step; - PyObject *__pyx_n_u_step_length; - PyObject *__pyx_n_s_stop; - PyObject *__pyx_n_s_store_iterate; - PyObject *__pyx_n_s_store_iterate_locals_lambda; - PyObject *__pyx_kp_u_stored_current_iterate_in; - PyObject *__pyx_n_s_strftime; - PyObject *__pyx_kp_s_strided_and_direct; - PyObject *__pyx_kp_s_strided_and_direct_or_indirect; - PyObject *__pyx_kp_s_strided_and_indirect; - PyObject *__pyx_n_s_string_fields; - PyObject *__pyx_n_s_string_value; - PyObject *__pyx_kp_s_stringsource; - PyObject *__pyx_n_s_struct; - PyObject *__pyx_n_u_su; - PyObject *__pyx_n_u_su_2; - PyObject *__pyx_n_s_sys; - PyObject *__pyx_n_u_t; - PyObject *__pyx_n_u_t_2; - PyObject *__pyx_n_s_test; - PyObject *__pyx_kp_s_third_party_acados_acados_templa; - PyObject *__pyx_n_u_time_glob; - PyObject *__pyx_n_u_time_lin; - PyObject *__pyx_n_u_time_qp; - PyObject *__pyx_n_u_time_qp_solver_call; - PyObject *__pyx_n_u_time_qp_xcond; - PyObject *__pyx_n_u_time_reg; - PyObject *__pyx_n_u_time_sim; - PyObject *__pyx_n_u_time_sim_ad; - PyObject *__pyx_n_u_time_sim_la; - PyObject *__pyx_n_u_time_solution_sensitivities; - PyObject *__pyx_n_u_time_tot; - PyObject *__pyx_n_u_tol_comp; - PyObject *__pyx_n_u_tol_eq; - PyObject *__pyx_n_u_tol_ineq; - PyObject *__pyx_n_u_tol_stat; - PyObject *__pyx_n_s_tolist; - PyObject *__pyx_n_u_u; - PyObject *__pyx_n_s_u0; - PyObject *__pyx_n_u_u_2; - PyObject *__pyx_n_u_ubu; - PyObject *__pyx_n_u_ubx; - PyObject *__pyx_kp_s_unable_to_allocate_array_data; - PyObject *__pyx_kp_s_unable_to_allocate_shape_and_str; - PyObject *__pyx_n_s_unpack; - PyObject *__pyx_n_s_update; - PyObject *__pyx_n_s_update_qp_solver_cond_N; - PyObject *__pyx_n_s_utcnow; - PyObject *__pyx_kp_u_utf_8; - PyObject *__pyx_n_s_value; - PyObject *__pyx_n_s_value_2; - PyObject *__pyx_n_s_value_shape; - PyObject *__pyx_n_s_version_info; - PyObject *__pyx_n_u_w; - PyObject *__pyx_n_u_warm_start_first_qp; - PyObject *__pyx_kp_u_with_dimension; - PyObject *__pyx_kp_u_with_dimension_you_have; - PyObject *__pyx_n_b_x; - PyObject *__pyx_n_s_x; - PyObject *__pyx_n_u_x; - PyObject *__pyx_n_s_x0_bar; - PyObject *__pyx_n_u_x_2; - PyObject *__pyx_n_u_xdot_guess; - PyObject *__pyx_n_u_y_ref; - PyObject *__pyx_kp_u_you_have; - PyObject *__pyx_n_u_yref; - PyObject *__pyx_n_u_z; - PyObject *__pyx_n_u_z_2; - PyObject *__pyx_n_b_z_guess; - PyObject *__pyx_n_u_z_guess; - PyObject *__pyx_n_s_zeros; - PyObject *__pyx_int_0; - PyObject *__pyx_int_1; - PyObject *__pyx_int_2; - PyObject *__pyx_int_3; - PyObject *__pyx_int_4; - PyObject *__pyx_int_6; - PyObject *__pyx_int_7; - PyObject *__pyx_int_112105877; - PyObject *__pyx_int_136983863; - PyObject *__pyx_int_184977713; - PyObject *__pyx_int_neg_1; - PyObject *__pyx_int_neg_5; - PyObject *__pyx_slice__5; - PyObject *__pyx_tuple__4; - PyObject *__pyx_tuple__8; - PyObject *__pyx_tuple__9; - PyObject *__pyx_slice__18; - PyObject *__pyx_tuple__10; - PyObject *__pyx_tuple__11; - PyObject *__pyx_tuple__12; - PyObject *__pyx_tuple__13; - PyObject *__pyx_tuple__14; - PyObject *__pyx_tuple__15; - PyObject *__pyx_tuple__19; - PyObject *__pyx_tuple__20; - PyObject *__pyx_tuple__21; - PyObject *__pyx_tuple__22; - PyObject *__pyx_tuple__23; - PyObject *__pyx_tuple__24; - PyObject *__pyx_tuple__25; - PyObject *__pyx_tuple__26; - PyObject *__pyx_tuple__27; - PyObject *__pyx_tuple__28; - PyObject *__pyx_tuple__29; - PyObject *__pyx_tuple__30; - PyObject *__pyx_tuple__32; - PyObject *__pyx_tuple__33; - PyObject *__pyx_tuple__34; - PyObject *__pyx_tuple__35; - PyObject *__pyx_tuple__36; - PyObject *__pyx_tuple__37; - PyObject *__pyx_tuple__38; - PyObject *__pyx_tuple__39; - PyObject *__pyx_tuple__40; - PyObject *__pyx_tuple__41; - PyObject *__pyx_tuple__42; - PyObject *__pyx_tuple__44; - PyObject *__pyx_tuple__46; - PyObject *__pyx_tuple__49; - PyObject *__pyx_tuple__51; - PyObject *__pyx_tuple__53; - PyObject *__pyx_tuple__55; - PyObject *__pyx_tuple__57; - PyObject *__pyx_tuple__59; - PyObject *__pyx_tuple__60; - PyObject *__pyx_tuple__63; - PyObject *__pyx_tuple__65; - PyObject *__pyx_tuple__66; - PyObject *__pyx_tuple__68; - PyObject *__pyx_tuple__70; - PyObject *__pyx_tuple__73; - PyObject *__pyx_tuple__75; - PyObject *__pyx_tuple__77; - PyObject *__pyx_tuple__79; - PyObject *__pyx_tuple__80; - PyObject *__pyx_tuple__82; - PyObject *__pyx_tuple__85; - PyObject *__pyx_tuple__87; - PyObject *__pyx_tuple__89; - PyObject *__pyx_tuple__92; - PyObject *__pyx_codeobj__43; - PyObject *__pyx_codeobj__45; - PyObject *__pyx_codeobj__47; - PyObject *__pyx_codeobj__48; - PyObject *__pyx_codeobj__50; - PyObject *__pyx_codeobj__52; - PyObject *__pyx_codeobj__54; - PyObject *__pyx_codeobj__56; - PyObject *__pyx_codeobj__58; - PyObject *__pyx_codeobj__61; - PyObject *__pyx_codeobj__62; - PyObject *__pyx_codeobj__64; - PyObject *__pyx_codeobj__67; - PyObject *__pyx_codeobj__69; - PyObject *__pyx_codeobj__71; - PyObject *__pyx_codeobj__72; - PyObject *__pyx_codeobj__74; - PyObject *__pyx_codeobj__76; - PyObject *__pyx_codeobj__78; - PyObject *__pyx_codeobj__81; - PyObject *__pyx_codeobj__83; - PyObject *__pyx_codeobj__84; - PyObject *__pyx_codeobj__86; - PyObject *__pyx_codeobj__88; - PyObject *__pyx_codeobj__90; - PyObject *__pyx_codeobj__91; - PyObject *__pyx_codeobj__93; -} __pyx_mstate; - -#if CYTHON_USE_MODULE_STATE -#ifdef __cplusplus -namespace { - extern struct PyModuleDef __pyx_moduledef; -} /* anonymous namespace */ -#else -static struct PyModuleDef __pyx_moduledef; -#endif - -#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) - -#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) - -#define __pyx_m (PyState_FindModule(&__pyx_moduledef)) -#else -static __pyx_mstate __pyx_mstate_global_static = -#ifdef __cplusplus - {}; -#else - {0}; -#endif -static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; -#endif -/* #### Code section: module_state_clear ### */ -#if CYTHON_USE_MODULE_STATE -static int __pyx_m_clear(PyObject *m) { - __pyx_mstate *clear_module_state = __pyx_mstate(m); - if (!clear_module_state) return 0; - Py_CLEAR(clear_module_state->__pyx_d); - Py_CLEAR(clear_module_state->__pyx_b); - Py_CLEAR(clear_module_state->__pyx_cython_runtime); - Py_CLEAR(clear_module_state->__pyx_empty_tuple); - Py_CLEAR(clear_module_state->__pyx_empty_bytes); - Py_CLEAR(clear_module_state->__pyx_empty_unicode); - #ifdef __Pyx_CyFunction_USED - Py_CLEAR(clear_module_state->__pyx_CyFunctionType); - #endif - #ifdef __Pyx_FusedFunction_USED - Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); - #endif - Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_dtype); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flatiter); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_broadcast); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ndarray); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_generic); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_number); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_integer); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_signedinteger); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_unsignedinteger); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_inexact); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_floating); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_complexfloating); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flexible); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_character); - Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ufunc); - Py_CLEAR(clear_module_state->__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - Py_CLEAR(clear_module_state->__pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - Py_CLEAR(clear_module_state->__pyx_array_type); - Py_CLEAR(clear_module_state->__pyx_type___pyx_array); - Py_CLEAR(clear_module_state->__pyx_MemviewEnum_type); - Py_CLEAR(clear_module_state->__pyx_type___pyx_MemviewEnum); - Py_CLEAR(clear_module_state->__pyx_memoryview_type); - Py_CLEAR(clear_module_state->__pyx_type___pyx_memoryview); - Py_CLEAR(clear_module_state->__pyx_memoryviewslice_type); - Py_CLEAR(clear_module_state->__pyx_type___pyx_memoryviewslice); - Py_CLEAR(clear_module_state->__pyx_kp_u_); - Py_CLEAR(clear_module_state->__pyx_kp_u_0); - Py_CLEAR(clear_module_state->__pyx_n_s_ASCII); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython___get_poin); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython___get_stat); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython___get_stat_2); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython___get_stat_3); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython___reduce_c); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython___setstate); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython__get_poin); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython__get_stat); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython__get_stat_2); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython__get_stat_3); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_constraint); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_constraint_2); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_cost_set); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_cost_set_m); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_custom_upd); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_does_not_s); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_does_not_s_2); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_eval_param); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_eval_param_2); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_eval_param_3); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_get); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_get_cost); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_get_field); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_get_from_q); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_get_is_an); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_get_residu); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_get_stage); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_get_stats); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_load_itera); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_options_se); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_options_se_2); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_print_stat); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_reset); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_set); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_set_is_not); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_set_mismat); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_set_new_ti); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_set_params); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_solve); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_solve_argu); - Py_CLEAR(clear_module_state->__pyx_kp_u_AcadosOcpSolverCython_solve_argu_2); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_solve_for); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_store_iter); - Py_CLEAR(clear_module_state->__pyx_n_s_AcadosOcpSolverCython_update_qp); - Py_CLEAR(clear_module_state->__pyx_kp_s_All_dimensions_preceding_dimensi); - Py_CLEAR(clear_module_state->__pyx_n_s_AssertionError); - Py_CLEAR(clear_module_state->__pyx_kp_s_Buffer_view_does_not_expose_stri); - Py_CLEAR(clear_module_state->__pyx_kp_s_Can_only_create_a_buffer_that_is); - Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_assign_to_read_only_memor); - Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_create_writable_memory_vi); - Py_CLEAR(clear_module_state->__pyx_kp_u_Cannot_index_with_type); - Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_transpose_memoryview_with); - Py_CLEAR(clear_module_state->__pyx_kp_s_Dimension_d_is_not_direct); - Py_CLEAR(clear_module_state->__pyx_n_s_Ellipsis); - Py_CLEAR(clear_module_state->__pyx_kp_s_Empty_shape_tuple_for_cython_arr); - Py_CLEAR(clear_module_state->__pyx_n_u_F); - Py_CLEAR(clear_module_state->__pyx_kp_u_Got_sizes_idx); - Py_CLEAR(clear_module_state->__pyx_n_s_ImportError); - Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); - Py_CLEAR(clear_module_state->__pyx_n_s_IndexError); - Py_CLEAR(clear_module_state->__pyx_kp_s_Index_out_of_bounds_axis_d); - Py_CLEAR(clear_module_state->__pyx_kp_s_Indirect_dimensions_not_supporte); - Py_CLEAR(clear_module_state->__pyx_kp_u_Invalid_mode_expected_c_or_fortr); - Py_CLEAR(clear_module_state->__pyx_kp_u_Invalid_shape_in_axis); - Py_CLEAR(clear_module_state->__pyx_n_s_MemoryError); - Py_CLEAR(clear_module_state->__pyx_kp_s_MemoryView_of_r_at_0x_x); - Py_CLEAR(clear_module_state->__pyx_kp_s_MemoryView_of_r_object); - Py_CLEAR(clear_module_state->__pyx_n_s_N); - Py_CLEAR(clear_module_state->__pyx_kp_u_None); - Py_CLEAR(clear_module_state->__pyx_n_s_NotImplementedError); - Py_CLEAR(clear_module_state->__pyx_n_b_O); - Py_CLEAR(clear_module_state->__pyx_kp_u_Out_of_bounds_on_buffer_access_a); - Py_CLEAR(clear_module_state->__pyx_n_s_PickleError); - Py_CLEAR(clear_module_state->__pyx_n_u_SQP); - Py_CLEAR(clear_module_state->__pyx_n_u_SQP_RTI); - Py_CLEAR(clear_module_state->__pyx_n_s_Sequence); - Py_CLEAR(clear_module_state->__pyx_kp_s_Step_may_not_be_zero_axis_d); - Py_CLEAR(clear_module_state->__pyx_kp_u_TODO); - Py_CLEAR(clear_module_state->__pyx_n_s_TypeError); - Py_CLEAR(clear_module_state->__pyx_kp_s_Unable_to_convert_item_to_object); - Py_CLEAR(clear_module_state->__pyx_n_s_ValueError); - Py_CLEAR(clear_module_state->__pyx_n_s_View_MemoryView); - Py_CLEAR(clear_module_state->__pyx_kp_u_Warning_acados_ocp_solver_reache); - Py_CLEAR(clear_module_state->__pyx_kp_u_Y_m_d_H_M_S_f); - Py_CLEAR(clear_module_state->__pyx_kp_u__16); - Py_CLEAR(clear_module_state->__pyx_n_u__17); - Py_CLEAR(clear_module_state->__pyx_kp_u__2); - Py_CLEAR(clear_module_state->__pyx_n_s__3); - Py_CLEAR(clear_module_state->__pyx_kp_u__31); - Py_CLEAR(clear_module_state->__pyx_kp_u__6); - Py_CLEAR(clear_module_state->__pyx_kp_u__7); - Py_CLEAR(clear_module_state->__pyx_n_s__94); - Py_CLEAR(clear_module_state->__pyx_n_s_abc); - Py_CLEAR(clear_module_state->__pyx_kp_u_acados_acados_ocp_solver_returne); - Py_CLEAR(clear_module_state->__pyx_n_s_acados_template_acados_ocp_solve); - Py_CLEAR(clear_module_state->__pyx_n_s_allocate_buffer); - Py_CLEAR(clear_module_state->__pyx_n_u_alpha); - Py_CLEAR(clear_module_state->__pyx_n_u_alpha_min); - Py_CLEAR(clear_module_state->__pyx_n_u_alpha_reduction); - Py_CLEAR(clear_module_state->__pyx_kp_u_alpha_values_are_not_available_f); - Py_CLEAR(clear_module_state->__pyx_kp_u_and); - Py_CLEAR(clear_module_state->__pyx_n_s_array); - Py_CLEAR(clear_module_state->__pyx_n_s_ascontiguousarray); - Py_CLEAR(clear_module_state->__pyx_n_s_asfortranarray); - Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); - Py_CLEAR(clear_module_state->__pyx_kp_u_at_stage); - Py_CLEAR(clear_module_state->__pyx_n_s_base); - Py_CLEAR(clear_module_state->__pyx_n_s_c); - Py_CLEAR(clear_module_state->__pyx_n_u_c); - Py_CLEAR(clear_module_state->__pyx_n_s_class); - Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem); - Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); - Py_CLEAR(clear_module_state->__pyx_n_s_collections); - Py_CLEAR(clear_module_state->__pyx_kp_s_collections_abc); - Py_CLEAR(clear_module_state->__pyx_n_s_constraints_fields); - Py_CLEAR(clear_module_state->__pyx_n_s_constraints_set); - Py_CLEAR(clear_module_state->__pyx_kp_u_constraints_set_value_must_be_nu); - Py_CLEAR(clear_module_state->__pyx_kp_s_contiguous_and_direct); - Py_CLEAR(clear_module_state->__pyx_kp_s_contiguous_and_indirect); - Py_CLEAR(clear_module_state->__pyx_n_s_cost_fields); - Py_CLEAR(clear_module_state->__pyx_n_s_cost_set); - Py_CLEAR(clear_module_state->__pyx_kp_u_cost_set_value_must_be_numpy_arr); - Py_CLEAR(clear_module_state->__pyx_n_s_count); - Py_CLEAR(clear_module_state->__pyx_n_s_custom_update); - Py_CLEAR(clear_module_state->__pyx_n_u_d); - Py_CLEAR(clear_module_state->__pyx_n_s_data); - Py_CLEAR(clear_module_state->__pyx_n_s_data_2); - Py_CLEAR(clear_module_state->__pyx_n_s_data_len); - Py_CLEAR(clear_module_state->__pyx_n_s_datetime); - Py_CLEAR(clear_module_state->__pyx_n_s_default); - Py_CLEAR(clear_module_state->__pyx_n_s_dict); - Py_CLEAR(clear_module_state->__pyx_n_s_dims); - Py_CLEAR(clear_module_state->__pyx_kp_u_disable); - Py_CLEAR(clear_module_state->__pyx_n_s_double_fields); - Py_CLEAR(clear_module_state->__pyx_n_s_double_value); - Py_CLEAR(clear_module_state->__pyx_n_s_dtype); - Py_CLEAR(clear_module_state->__pyx_n_s_dtype_is_object); - Py_CLEAR(clear_module_state->__pyx_n_s_dump); - Py_CLEAR(clear_module_state->__pyx_kp_u_enable); - Py_CLEAR(clear_module_state->__pyx_n_s_encode); - Py_CLEAR(clear_module_state->__pyx_n_s_enter); - Py_CLEAR(clear_module_state->__pyx_n_s_enumerate); - Py_CLEAR(clear_module_state->__pyx_n_u_eps_sufficient_descent); - Py_CLEAR(clear_module_state->__pyx_n_s_error); - Py_CLEAR(clear_module_state->__pyx_n_s_eval_param_sens); - Py_CLEAR(clear_module_state->__pyx_n_u_ex); - Py_CLEAR(clear_module_state->__pyx_n_s_exit); - Py_CLEAR(clear_module_state->__pyx_n_s_f); - Py_CLEAR(clear_module_state->__pyx_n_s_field); - Py_CLEAR(clear_module_state->__pyx_n_s_field_2); - Py_CLEAR(clear_module_state->__pyx_n_s_fields); - Py_CLEAR(clear_module_state->__pyx_n_s_filename); - Py_CLEAR(clear_module_state->__pyx_n_s_flags); - Py_CLEAR(clear_module_state->__pyx_n_s_float64); - Py_CLEAR(clear_module_state->__pyx_kp_u_for_field); - Py_CLEAR(clear_module_state->__pyx_n_s_format); - Py_CLEAR(clear_module_state->__pyx_n_s_fortran); - Py_CLEAR(clear_module_state->__pyx_n_u_fortran); - Py_CLEAR(clear_module_state->__pyx_n_s_full_stats); - Py_CLEAR(clear_module_state->__pyx_n_u_full_step_dual); - Py_CLEAR(clear_module_state->__pyx_kp_u_gc); - Py_CLEAR(clear_module_state->__pyx_n_s_get); - Py_CLEAR(clear_module_state->__pyx_n_s_get_cost); - Py_CLEAR(clear_module_state->__pyx_n_s_get_from_qp_in); - Py_CLEAR(clear_module_state->__pyx_n_s_get_pointers_solver); - Py_CLEAR(clear_module_state->__pyx_n_s_get_residuals); - Py_CLEAR(clear_module_state->__pyx_n_s_get_stat_double); - Py_CLEAR(clear_module_state->__pyx_n_s_get_stat_int); - Py_CLEAR(clear_module_state->__pyx_n_s_get_stat_matrix); - Py_CLEAR(clear_module_state->__pyx_n_s_get_stats); - Py_CLEAR(clear_module_state->__pyx_n_s_getcwd); - Py_CLEAR(clear_module_state->__pyx_n_s_getstate); - Py_CLEAR(clear_module_state->__pyx_n_u_globalization); - Py_CLEAR(clear_module_state->__pyx_n_u_globalization_use_SOC); - Py_CLEAR(clear_module_state->__pyx_kp_u_got); - Py_CLEAR(clear_module_state->__pyx_kp_u_got_differing_extents_in_dimensi); - Py_CLEAR(clear_module_state->__pyx_n_s_i); - Py_CLEAR(clear_module_state->__pyx_n_s_i_string); - Py_CLEAR(clear_module_state->__pyx_n_s_id); - Py_CLEAR(clear_module_state->__pyx_n_s_idx); - Py_CLEAR(clear_module_state->__pyx_n_s_idx_values); - Py_CLEAR(clear_module_state->__pyx_n_s_import); - Py_CLEAR(clear_module_state->__pyx_n_s_indent); - Py_CLEAR(clear_module_state->__pyx_n_s_index); - Py_CLEAR(clear_module_state->__pyx_n_u_initialize_t_slacks); - Py_CLEAR(clear_module_state->__pyx_n_s_initializing); - Py_CLEAR(clear_module_state->__pyx_n_s_int); - Py_CLEAR(clear_module_state->__pyx_n_s_int32); - Py_CLEAR(clear_module_state->__pyx_n_s_int_fields); - Py_CLEAR(clear_module_state->__pyx_n_s_int_value); - Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); - Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); - Py_CLEAR(clear_module_state->__pyx_n_s_isfile); - Py_CLEAR(clear_module_state->__pyx_n_s_itemsize); - Py_CLEAR(clear_module_state->__pyx_kp_s_itemsize_0_for_cython_array); - Py_CLEAR(clear_module_state->__pyx_n_u_iterate); - Py_CLEAR(clear_module_state->__pyx_n_s_join); - Py_CLEAR(clear_module_state->__pyx_n_s_json); - Py_CLEAR(clear_module_state->__pyx_kp_u_json_2); - Py_CLEAR(clear_module_state->__pyx_n_s_k); - Py_CLEAR(clear_module_state->__pyx_n_s_key); - Py_CLEAR(clear_module_state->__pyx_n_s_keys); - Py_CLEAR(clear_module_state->__pyx_n_s_lN); - Py_CLEAR(clear_module_state->__pyx_n_u_lam); - Py_CLEAR(clear_module_state->__pyx_n_u_lam_2); - Py_CLEAR(clear_module_state->__pyx_n_u_lbu); - Py_CLEAR(clear_module_state->__pyx_n_u_lbx); - Py_CLEAR(clear_module_state->__pyx_n_u_line_search_use_sufficient_desce); - Py_CLEAR(clear_module_state->__pyx_n_s_load); - Py_CLEAR(clear_module_state->__pyx_n_s_load_iterate); - Py_CLEAR(clear_module_state->__pyx_kp_u_load_iterate_failed_file_does_no); - Py_CLEAR(clear_module_state->__pyx_n_s_m); - Py_CLEAR(clear_module_state->__pyx_n_s_main); - Py_CLEAR(clear_module_state->__pyx_n_s_mem_fields); - Py_CLEAR(clear_module_state->__pyx_n_s_memview); - Py_CLEAR(clear_module_state->__pyx_n_s_min_size); - Py_CLEAR(clear_module_state->__pyx_n_s_mode); - Py_CLEAR(clear_module_state->__pyx_n_s_model_name); - Py_CLEAR(clear_module_state->__pyx_n_s_msg); - Py_CLEAR(clear_module_state->__pyx_n_s_n); - Py_CLEAR(clear_module_state->__pyx_n_s_n_update); - Py_CLEAR(clear_module_state->__pyx_n_s_name); - Py_CLEAR(clear_module_state->__pyx_n_s_name_2); - Py_CLEAR(clear_module_state->__pyx_n_s_ndarray); - Py_CLEAR(clear_module_state->__pyx_n_s_ndim); - Py_CLEAR(clear_module_state->__pyx_n_s_new); - Py_CLEAR(clear_module_state->__pyx_n_s_new_time_steps); - Py_CLEAR(clear_module_state->__pyx_n_s_nlp_solver_type); - Py_CLEAR(clear_module_state->__pyx_kp_s_no_default___reduce___due_to_non); - Py_CLEAR(clear_module_state->__pyx_n_s_np); - Py_CLEAR(clear_module_state->__pyx_n_s_numpy); - Py_CLEAR(clear_module_state->__pyx_kp_u_numpy_core_multiarray_failed_to); - Py_CLEAR(clear_module_state->__pyx_kp_u_numpy_core_umath_failed_to_impor); - Py_CLEAR(clear_module_state->__pyx_n_s_nx); - Py_CLEAR(clear_module_state->__pyx_n_s_obj); - Py_CLEAR(clear_module_state->__pyx_n_s_open); - Py_CLEAR(clear_module_state->__pyx_n_s_options_set); - Py_CLEAR(clear_module_state->__pyx_n_s_order); - Py_CLEAR(clear_module_state->__pyx_n_s_os); - Py_CLEAR(clear_module_state->__pyx_n_s_out); - Py_CLEAR(clear_module_state->__pyx_n_s_out_fields); - Py_CLEAR(clear_module_state->__pyx_n_s_out_mat); - Py_CLEAR(clear_module_state->__pyx_n_s_overwrite); - Py_CLEAR(clear_module_state->__pyx_n_u_p); - Py_CLEAR(clear_module_state->__pyx_n_s_pack); - Py_CLEAR(clear_module_state->__pyx_n_s_param_values); - Py_CLEAR(clear_module_state->__pyx_kp_u_param_values_2); - Py_CLEAR(clear_module_state->__pyx_kp_u_param_values__and_idx_values__mu); - Py_CLEAR(clear_module_state->__pyx_kp_u_param_values__must_be_np_array); - Py_CLEAR(clear_module_state->__pyx_n_s_path); - Py_CLEAR(clear_module_state->__pyx_n_u_pi); - Py_CLEAR(clear_module_state->__pyx_n_u_pi_2); - Py_CLEAR(clear_module_state->__pyx_n_s_pickle); - Py_CLEAR(clear_module_state->__pyx_n_s_print); - Py_CLEAR(clear_module_state->__pyx_n_u_print_level); - Py_CLEAR(clear_module_state->__pyx_n_s_print_statistics); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_Enum); - Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable); - Py_CLEAR(clear_module_state->__pyx_n_u_qp_iter); - Py_CLEAR(clear_module_state->__pyx_n_u_qp_mu0); - Py_CLEAR(clear_module_state->__pyx_n_s_qp_solver_cond_N); - Py_CLEAR(clear_module_state->__pyx_n_u_qp_tau_min); - Py_CLEAR(clear_module_state->__pyx_n_u_qp_tol_comp); - Py_CLEAR(clear_module_state->__pyx_n_u_qp_tol_eq); - Py_CLEAR(clear_module_state->__pyx_n_u_qp_tol_ineq); - Py_CLEAR(clear_module_state->__pyx_n_u_qp_tol_stat); - Py_CLEAR(clear_module_state->__pyx_n_u_qp_warm_start); - Py_CLEAR(clear_module_state->__pyx_n_u_r); - Py_CLEAR(clear_module_state->__pyx_n_s_range); - Py_CLEAR(clear_module_state->__pyx_n_s_recompute); - Py_CLEAR(clear_module_state->__pyx_n_s_reduce); - Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex); - Py_CLEAR(clear_module_state->__pyx_n_s_register); - Py_CLEAR(clear_module_state->__pyx_n_b_res_comp); - Py_CLEAR(clear_module_state->__pyx_n_b_res_eq); - Py_CLEAR(clear_module_state->__pyx_n_b_res_ineq); - Py_CLEAR(clear_module_state->__pyx_n_b_res_stat); - Py_CLEAR(clear_module_state->__pyx_n_s_reset); - Py_CLEAR(clear_module_state->__pyx_n_s_reset_qp_solver_mem); - Py_CLEAR(clear_module_state->__pyx_n_u_residuals); - Py_CLEAR(clear_module_state->__pyx_n_u_rti_phase); - Py_CLEAR(clear_module_state->__pyx_n_s_self); - Py_CLEAR(clear_module_state->__pyx_n_s_set); - Py_CLEAR(clear_module_state->__pyx_n_s_set_new_time_steps); - Py_CLEAR(clear_module_state->__pyx_n_s_set_params_sparse); - Py_CLEAR(clear_module_state->__pyx_kp_u_set_value_must_be_numpy_array_go); - Py_CLEAR(clear_module_state->__pyx_n_s_setstate); - Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython); - Py_CLEAR(clear_module_state->__pyx_n_s_shape); - Py_CLEAR(clear_module_state->__pyx_n_s_size); - Py_CLEAR(clear_module_state->__pyx_n_u_sl); - Py_CLEAR(clear_module_state->__pyx_n_u_sl_2); - Py_CLEAR(clear_module_state->__pyx_n_s_solution); - Py_CLEAR(clear_module_state->__pyx_n_s_solve); - Py_CLEAR(clear_module_state->__pyx_n_s_solve_for_x0); - Py_CLEAR(clear_module_state->__pyx_kp_u_solver_option_must_be_of_type_fl); - Py_CLEAR(clear_module_state->__pyx_kp_u_solver_option_must_be_of_type_in); - Py_CLEAR(clear_module_state->__pyx_kp_u_solver_option_must_be_of_type_st); - Py_CLEAR(clear_module_state->__pyx_n_s_sort_keys); - Py_CLEAR(clear_module_state->__pyx_n_s_spec); - Py_CLEAR(clear_module_state->__pyx_n_s_split); - Py_CLEAR(clear_module_state->__pyx_n_s_sqp_iter); - Py_CLEAR(clear_module_state->__pyx_n_u_sqp_iter); - Py_CLEAR(clear_module_state->__pyx_n_s_stage); - Py_CLEAR(clear_module_state->__pyx_n_s_start); - Py_CLEAR(clear_module_state->__pyx_n_s_stat_m); - Py_CLEAR(clear_module_state->__pyx_n_u_stat_m); - Py_CLEAR(clear_module_state->__pyx_n_s_stat_n); - Py_CLEAR(clear_module_state->__pyx_n_u_stat_n); - Py_CLEAR(clear_module_state->__pyx_n_u_statistics); - Py_CLEAR(clear_module_state->__pyx_n_s_status); - Py_CLEAR(clear_module_state->__pyx_n_s_step); - Py_CLEAR(clear_module_state->__pyx_n_u_step_length); - Py_CLEAR(clear_module_state->__pyx_n_s_stop); - Py_CLEAR(clear_module_state->__pyx_n_s_store_iterate); - Py_CLEAR(clear_module_state->__pyx_n_s_store_iterate_locals_lambda); - Py_CLEAR(clear_module_state->__pyx_kp_u_stored_current_iterate_in); - Py_CLEAR(clear_module_state->__pyx_n_s_strftime); - Py_CLEAR(clear_module_state->__pyx_kp_s_strided_and_direct); - Py_CLEAR(clear_module_state->__pyx_kp_s_strided_and_direct_or_indirect); - Py_CLEAR(clear_module_state->__pyx_kp_s_strided_and_indirect); - Py_CLEAR(clear_module_state->__pyx_n_s_string_fields); - Py_CLEAR(clear_module_state->__pyx_n_s_string_value); - Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource); - Py_CLEAR(clear_module_state->__pyx_n_s_struct); - Py_CLEAR(clear_module_state->__pyx_n_u_su); - Py_CLEAR(clear_module_state->__pyx_n_u_su_2); - Py_CLEAR(clear_module_state->__pyx_n_s_sys); - Py_CLEAR(clear_module_state->__pyx_n_u_t); - Py_CLEAR(clear_module_state->__pyx_n_u_t_2); - Py_CLEAR(clear_module_state->__pyx_n_s_test); - Py_CLEAR(clear_module_state->__pyx_kp_s_third_party_acados_acados_templa); - Py_CLEAR(clear_module_state->__pyx_n_u_time_glob); - Py_CLEAR(clear_module_state->__pyx_n_u_time_lin); - Py_CLEAR(clear_module_state->__pyx_n_u_time_qp); - Py_CLEAR(clear_module_state->__pyx_n_u_time_qp_solver_call); - Py_CLEAR(clear_module_state->__pyx_n_u_time_qp_xcond); - Py_CLEAR(clear_module_state->__pyx_n_u_time_reg); - Py_CLEAR(clear_module_state->__pyx_n_u_time_sim); - Py_CLEAR(clear_module_state->__pyx_n_u_time_sim_ad); - Py_CLEAR(clear_module_state->__pyx_n_u_time_sim_la); - Py_CLEAR(clear_module_state->__pyx_n_u_time_solution_sensitivities); - Py_CLEAR(clear_module_state->__pyx_n_u_time_tot); - Py_CLEAR(clear_module_state->__pyx_n_u_tol_comp); - Py_CLEAR(clear_module_state->__pyx_n_u_tol_eq); - Py_CLEAR(clear_module_state->__pyx_n_u_tol_ineq); - Py_CLEAR(clear_module_state->__pyx_n_u_tol_stat); - Py_CLEAR(clear_module_state->__pyx_n_s_tolist); - Py_CLEAR(clear_module_state->__pyx_n_u_u); - Py_CLEAR(clear_module_state->__pyx_n_s_u0); - Py_CLEAR(clear_module_state->__pyx_n_u_u_2); - Py_CLEAR(clear_module_state->__pyx_n_u_ubu); - Py_CLEAR(clear_module_state->__pyx_n_u_ubx); - Py_CLEAR(clear_module_state->__pyx_kp_s_unable_to_allocate_array_data); - Py_CLEAR(clear_module_state->__pyx_kp_s_unable_to_allocate_shape_and_str); - Py_CLEAR(clear_module_state->__pyx_n_s_unpack); - Py_CLEAR(clear_module_state->__pyx_n_s_update); - Py_CLEAR(clear_module_state->__pyx_n_s_update_qp_solver_cond_N); - Py_CLEAR(clear_module_state->__pyx_n_s_utcnow); - Py_CLEAR(clear_module_state->__pyx_kp_u_utf_8); - Py_CLEAR(clear_module_state->__pyx_n_s_value); - Py_CLEAR(clear_module_state->__pyx_n_s_value_2); - Py_CLEAR(clear_module_state->__pyx_n_s_value_shape); - Py_CLEAR(clear_module_state->__pyx_n_s_version_info); - Py_CLEAR(clear_module_state->__pyx_n_u_w); - Py_CLEAR(clear_module_state->__pyx_n_u_warm_start_first_qp); - Py_CLEAR(clear_module_state->__pyx_kp_u_with_dimension); - Py_CLEAR(clear_module_state->__pyx_kp_u_with_dimension_you_have); - Py_CLEAR(clear_module_state->__pyx_n_b_x); - Py_CLEAR(clear_module_state->__pyx_n_s_x); - Py_CLEAR(clear_module_state->__pyx_n_u_x); - Py_CLEAR(clear_module_state->__pyx_n_s_x0_bar); - Py_CLEAR(clear_module_state->__pyx_n_u_x_2); - Py_CLEAR(clear_module_state->__pyx_n_u_xdot_guess); - Py_CLEAR(clear_module_state->__pyx_n_u_y_ref); - Py_CLEAR(clear_module_state->__pyx_kp_u_you_have); - Py_CLEAR(clear_module_state->__pyx_n_u_yref); - Py_CLEAR(clear_module_state->__pyx_n_u_z); - Py_CLEAR(clear_module_state->__pyx_n_u_z_2); - Py_CLEAR(clear_module_state->__pyx_n_b_z_guess); - Py_CLEAR(clear_module_state->__pyx_n_u_z_guess); - Py_CLEAR(clear_module_state->__pyx_n_s_zeros); - Py_CLEAR(clear_module_state->__pyx_int_0); - Py_CLEAR(clear_module_state->__pyx_int_1); - Py_CLEAR(clear_module_state->__pyx_int_2); - Py_CLEAR(clear_module_state->__pyx_int_3); - Py_CLEAR(clear_module_state->__pyx_int_4); - Py_CLEAR(clear_module_state->__pyx_int_6); - Py_CLEAR(clear_module_state->__pyx_int_7); - Py_CLEAR(clear_module_state->__pyx_int_112105877); - Py_CLEAR(clear_module_state->__pyx_int_136983863); - Py_CLEAR(clear_module_state->__pyx_int_184977713); - Py_CLEAR(clear_module_state->__pyx_int_neg_1); - Py_CLEAR(clear_module_state->__pyx_int_neg_5); - Py_CLEAR(clear_module_state->__pyx_slice__5); - Py_CLEAR(clear_module_state->__pyx_tuple__4); - Py_CLEAR(clear_module_state->__pyx_tuple__8); - Py_CLEAR(clear_module_state->__pyx_tuple__9); - Py_CLEAR(clear_module_state->__pyx_slice__18); - Py_CLEAR(clear_module_state->__pyx_tuple__10); - Py_CLEAR(clear_module_state->__pyx_tuple__11); - Py_CLEAR(clear_module_state->__pyx_tuple__12); - Py_CLEAR(clear_module_state->__pyx_tuple__13); - Py_CLEAR(clear_module_state->__pyx_tuple__14); - Py_CLEAR(clear_module_state->__pyx_tuple__15); - Py_CLEAR(clear_module_state->__pyx_tuple__19); - Py_CLEAR(clear_module_state->__pyx_tuple__20); - Py_CLEAR(clear_module_state->__pyx_tuple__21); - Py_CLEAR(clear_module_state->__pyx_tuple__22); - Py_CLEAR(clear_module_state->__pyx_tuple__23); - Py_CLEAR(clear_module_state->__pyx_tuple__24); - Py_CLEAR(clear_module_state->__pyx_tuple__25); - Py_CLEAR(clear_module_state->__pyx_tuple__26); - Py_CLEAR(clear_module_state->__pyx_tuple__27); - Py_CLEAR(clear_module_state->__pyx_tuple__28); - Py_CLEAR(clear_module_state->__pyx_tuple__29); - Py_CLEAR(clear_module_state->__pyx_tuple__30); - Py_CLEAR(clear_module_state->__pyx_tuple__32); - Py_CLEAR(clear_module_state->__pyx_tuple__33); - Py_CLEAR(clear_module_state->__pyx_tuple__34); - Py_CLEAR(clear_module_state->__pyx_tuple__35); - Py_CLEAR(clear_module_state->__pyx_tuple__36); - Py_CLEAR(clear_module_state->__pyx_tuple__37); - Py_CLEAR(clear_module_state->__pyx_tuple__38); - Py_CLEAR(clear_module_state->__pyx_tuple__39); - Py_CLEAR(clear_module_state->__pyx_tuple__40); - Py_CLEAR(clear_module_state->__pyx_tuple__41); - Py_CLEAR(clear_module_state->__pyx_tuple__42); - Py_CLEAR(clear_module_state->__pyx_tuple__44); - Py_CLEAR(clear_module_state->__pyx_tuple__46); - Py_CLEAR(clear_module_state->__pyx_tuple__49); - Py_CLEAR(clear_module_state->__pyx_tuple__51); - Py_CLEAR(clear_module_state->__pyx_tuple__53); - Py_CLEAR(clear_module_state->__pyx_tuple__55); - Py_CLEAR(clear_module_state->__pyx_tuple__57); - Py_CLEAR(clear_module_state->__pyx_tuple__59); - Py_CLEAR(clear_module_state->__pyx_tuple__60); - Py_CLEAR(clear_module_state->__pyx_tuple__63); - Py_CLEAR(clear_module_state->__pyx_tuple__65); - Py_CLEAR(clear_module_state->__pyx_tuple__66); - Py_CLEAR(clear_module_state->__pyx_tuple__68); - Py_CLEAR(clear_module_state->__pyx_tuple__70); - Py_CLEAR(clear_module_state->__pyx_tuple__73); - Py_CLEAR(clear_module_state->__pyx_tuple__75); - Py_CLEAR(clear_module_state->__pyx_tuple__77); - Py_CLEAR(clear_module_state->__pyx_tuple__79); - Py_CLEAR(clear_module_state->__pyx_tuple__80); - Py_CLEAR(clear_module_state->__pyx_tuple__82); - Py_CLEAR(clear_module_state->__pyx_tuple__85); - Py_CLEAR(clear_module_state->__pyx_tuple__87); - Py_CLEAR(clear_module_state->__pyx_tuple__89); - Py_CLEAR(clear_module_state->__pyx_tuple__92); - Py_CLEAR(clear_module_state->__pyx_codeobj__43); - Py_CLEAR(clear_module_state->__pyx_codeobj__45); - Py_CLEAR(clear_module_state->__pyx_codeobj__47); - Py_CLEAR(clear_module_state->__pyx_codeobj__48); - Py_CLEAR(clear_module_state->__pyx_codeobj__50); - Py_CLEAR(clear_module_state->__pyx_codeobj__52); - Py_CLEAR(clear_module_state->__pyx_codeobj__54); - Py_CLEAR(clear_module_state->__pyx_codeobj__56); - Py_CLEAR(clear_module_state->__pyx_codeobj__58); - Py_CLEAR(clear_module_state->__pyx_codeobj__61); - Py_CLEAR(clear_module_state->__pyx_codeobj__62); - Py_CLEAR(clear_module_state->__pyx_codeobj__64); - Py_CLEAR(clear_module_state->__pyx_codeobj__67); - Py_CLEAR(clear_module_state->__pyx_codeobj__69); - Py_CLEAR(clear_module_state->__pyx_codeobj__71); - Py_CLEAR(clear_module_state->__pyx_codeobj__72); - Py_CLEAR(clear_module_state->__pyx_codeobj__74); - Py_CLEAR(clear_module_state->__pyx_codeobj__76); - Py_CLEAR(clear_module_state->__pyx_codeobj__78); - Py_CLEAR(clear_module_state->__pyx_codeobj__81); - Py_CLEAR(clear_module_state->__pyx_codeobj__83); - Py_CLEAR(clear_module_state->__pyx_codeobj__84); - Py_CLEAR(clear_module_state->__pyx_codeobj__86); - Py_CLEAR(clear_module_state->__pyx_codeobj__88); - Py_CLEAR(clear_module_state->__pyx_codeobj__90); - Py_CLEAR(clear_module_state->__pyx_codeobj__91); - Py_CLEAR(clear_module_state->__pyx_codeobj__93); - return 0; -} -#endif -/* #### Code section: module_state_traverse ### */ -#if CYTHON_USE_MODULE_STATE -static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { - __pyx_mstate *traverse_module_state = __pyx_mstate(m); - if (!traverse_module_state) return 0; - Py_VISIT(traverse_module_state->__pyx_d); - Py_VISIT(traverse_module_state->__pyx_b); - Py_VISIT(traverse_module_state->__pyx_cython_runtime); - Py_VISIT(traverse_module_state->__pyx_empty_tuple); - Py_VISIT(traverse_module_state->__pyx_empty_bytes); - Py_VISIT(traverse_module_state->__pyx_empty_unicode); - #ifdef __Pyx_CyFunction_USED - Py_VISIT(traverse_module_state->__pyx_CyFunctionType); - #endif - #ifdef __Pyx_FusedFunction_USED - Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); - #endif - Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_dtype); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flatiter); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_broadcast); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ndarray); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_generic); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_number); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_integer); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_signedinteger); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_unsignedinteger); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_inexact); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_floating); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_complexfloating); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flexible); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_character); - Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ufunc); - Py_VISIT(traverse_module_state->__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - Py_VISIT(traverse_module_state->__pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - Py_VISIT(traverse_module_state->__pyx_array_type); - Py_VISIT(traverse_module_state->__pyx_type___pyx_array); - Py_VISIT(traverse_module_state->__pyx_MemviewEnum_type); - Py_VISIT(traverse_module_state->__pyx_type___pyx_MemviewEnum); - Py_VISIT(traverse_module_state->__pyx_memoryview_type); - Py_VISIT(traverse_module_state->__pyx_type___pyx_memoryview); - Py_VISIT(traverse_module_state->__pyx_memoryviewslice_type); - Py_VISIT(traverse_module_state->__pyx_type___pyx_memoryviewslice); - Py_VISIT(traverse_module_state->__pyx_kp_u_); - Py_VISIT(traverse_module_state->__pyx_kp_u_0); - Py_VISIT(traverse_module_state->__pyx_n_s_ASCII); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython___get_poin); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython___get_stat); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython___get_stat_2); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython___get_stat_3); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython___reduce_c); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython___setstate); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython__get_poin); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython__get_stat); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython__get_stat_2); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython__get_stat_3); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_constraint); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_constraint_2); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_cost_set); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_cost_set_m); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_custom_upd); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_does_not_s); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_does_not_s_2); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_eval_param); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_eval_param_2); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_eval_param_3); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_get); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_get_cost); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_get_field); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_get_from_q); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_get_is_an); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_get_residu); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_get_stage); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_get_stats); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_load_itera); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_options_se); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_options_se_2); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_print_stat); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_reset); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_set); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_set_is_not); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_set_mismat); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_set_new_ti); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_set_params); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_solve); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_solve_argu); - Py_VISIT(traverse_module_state->__pyx_kp_u_AcadosOcpSolverCython_solve_argu_2); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_solve_for); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_store_iter); - Py_VISIT(traverse_module_state->__pyx_n_s_AcadosOcpSolverCython_update_qp); - Py_VISIT(traverse_module_state->__pyx_kp_s_All_dimensions_preceding_dimensi); - Py_VISIT(traverse_module_state->__pyx_n_s_AssertionError); - Py_VISIT(traverse_module_state->__pyx_kp_s_Buffer_view_does_not_expose_stri); - Py_VISIT(traverse_module_state->__pyx_kp_s_Can_only_create_a_buffer_that_is); - Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_assign_to_read_only_memor); - Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_create_writable_memory_vi); - Py_VISIT(traverse_module_state->__pyx_kp_u_Cannot_index_with_type); - Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_transpose_memoryview_with); - Py_VISIT(traverse_module_state->__pyx_kp_s_Dimension_d_is_not_direct); - Py_VISIT(traverse_module_state->__pyx_n_s_Ellipsis); - Py_VISIT(traverse_module_state->__pyx_kp_s_Empty_shape_tuple_for_cython_arr); - Py_VISIT(traverse_module_state->__pyx_n_u_F); - Py_VISIT(traverse_module_state->__pyx_kp_u_Got_sizes_idx); - Py_VISIT(traverse_module_state->__pyx_n_s_ImportError); - Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0); - Py_VISIT(traverse_module_state->__pyx_n_s_IndexError); - Py_VISIT(traverse_module_state->__pyx_kp_s_Index_out_of_bounds_axis_d); - Py_VISIT(traverse_module_state->__pyx_kp_s_Indirect_dimensions_not_supporte); - Py_VISIT(traverse_module_state->__pyx_kp_u_Invalid_mode_expected_c_or_fortr); - Py_VISIT(traverse_module_state->__pyx_kp_u_Invalid_shape_in_axis); - Py_VISIT(traverse_module_state->__pyx_n_s_MemoryError); - Py_VISIT(traverse_module_state->__pyx_kp_s_MemoryView_of_r_at_0x_x); - Py_VISIT(traverse_module_state->__pyx_kp_s_MemoryView_of_r_object); - Py_VISIT(traverse_module_state->__pyx_n_s_N); - Py_VISIT(traverse_module_state->__pyx_kp_u_None); - Py_VISIT(traverse_module_state->__pyx_n_s_NotImplementedError); - Py_VISIT(traverse_module_state->__pyx_n_b_O); - Py_VISIT(traverse_module_state->__pyx_kp_u_Out_of_bounds_on_buffer_access_a); - Py_VISIT(traverse_module_state->__pyx_n_s_PickleError); - Py_VISIT(traverse_module_state->__pyx_n_u_SQP); - Py_VISIT(traverse_module_state->__pyx_n_u_SQP_RTI); - Py_VISIT(traverse_module_state->__pyx_n_s_Sequence); - Py_VISIT(traverse_module_state->__pyx_kp_s_Step_may_not_be_zero_axis_d); - Py_VISIT(traverse_module_state->__pyx_kp_u_TODO); - Py_VISIT(traverse_module_state->__pyx_n_s_TypeError); - Py_VISIT(traverse_module_state->__pyx_kp_s_Unable_to_convert_item_to_object); - Py_VISIT(traverse_module_state->__pyx_n_s_ValueError); - Py_VISIT(traverse_module_state->__pyx_n_s_View_MemoryView); - Py_VISIT(traverse_module_state->__pyx_kp_u_Warning_acados_ocp_solver_reache); - Py_VISIT(traverse_module_state->__pyx_kp_u_Y_m_d_H_M_S_f); - Py_VISIT(traverse_module_state->__pyx_kp_u__16); - Py_VISIT(traverse_module_state->__pyx_n_u__17); - Py_VISIT(traverse_module_state->__pyx_kp_u__2); - Py_VISIT(traverse_module_state->__pyx_n_s__3); - Py_VISIT(traverse_module_state->__pyx_kp_u__31); - Py_VISIT(traverse_module_state->__pyx_kp_u__6); - Py_VISIT(traverse_module_state->__pyx_kp_u__7); - Py_VISIT(traverse_module_state->__pyx_n_s__94); - Py_VISIT(traverse_module_state->__pyx_n_s_abc); - Py_VISIT(traverse_module_state->__pyx_kp_u_acados_acados_ocp_solver_returne); - Py_VISIT(traverse_module_state->__pyx_n_s_acados_template_acados_ocp_solve); - Py_VISIT(traverse_module_state->__pyx_n_s_allocate_buffer); - Py_VISIT(traverse_module_state->__pyx_n_u_alpha); - Py_VISIT(traverse_module_state->__pyx_n_u_alpha_min); - Py_VISIT(traverse_module_state->__pyx_n_u_alpha_reduction); - Py_VISIT(traverse_module_state->__pyx_kp_u_alpha_values_are_not_available_f); - Py_VISIT(traverse_module_state->__pyx_kp_u_and); - Py_VISIT(traverse_module_state->__pyx_n_s_array); - Py_VISIT(traverse_module_state->__pyx_n_s_ascontiguousarray); - Py_VISIT(traverse_module_state->__pyx_n_s_asfortranarray); - Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); - Py_VISIT(traverse_module_state->__pyx_kp_u_at_stage); - Py_VISIT(traverse_module_state->__pyx_n_s_base); - Py_VISIT(traverse_module_state->__pyx_n_s_c); - Py_VISIT(traverse_module_state->__pyx_n_u_c); - Py_VISIT(traverse_module_state->__pyx_n_s_class); - Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem); - Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); - Py_VISIT(traverse_module_state->__pyx_n_s_collections); - Py_VISIT(traverse_module_state->__pyx_kp_s_collections_abc); - Py_VISIT(traverse_module_state->__pyx_n_s_constraints_fields); - Py_VISIT(traverse_module_state->__pyx_n_s_constraints_set); - Py_VISIT(traverse_module_state->__pyx_kp_u_constraints_set_value_must_be_nu); - Py_VISIT(traverse_module_state->__pyx_kp_s_contiguous_and_direct); - Py_VISIT(traverse_module_state->__pyx_kp_s_contiguous_and_indirect); - Py_VISIT(traverse_module_state->__pyx_n_s_cost_fields); - Py_VISIT(traverse_module_state->__pyx_n_s_cost_set); - Py_VISIT(traverse_module_state->__pyx_kp_u_cost_set_value_must_be_numpy_arr); - Py_VISIT(traverse_module_state->__pyx_n_s_count); - Py_VISIT(traverse_module_state->__pyx_n_s_custom_update); - Py_VISIT(traverse_module_state->__pyx_n_u_d); - Py_VISIT(traverse_module_state->__pyx_n_s_data); - Py_VISIT(traverse_module_state->__pyx_n_s_data_2); - Py_VISIT(traverse_module_state->__pyx_n_s_data_len); - Py_VISIT(traverse_module_state->__pyx_n_s_datetime); - Py_VISIT(traverse_module_state->__pyx_n_s_default); - Py_VISIT(traverse_module_state->__pyx_n_s_dict); - Py_VISIT(traverse_module_state->__pyx_n_s_dims); - Py_VISIT(traverse_module_state->__pyx_kp_u_disable); - Py_VISIT(traverse_module_state->__pyx_n_s_double_fields); - Py_VISIT(traverse_module_state->__pyx_n_s_double_value); - Py_VISIT(traverse_module_state->__pyx_n_s_dtype); - Py_VISIT(traverse_module_state->__pyx_n_s_dtype_is_object); - Py_VISIT(traverse_module_state->__pyx_n_s_dump); - Py_VISIT(traverse_module_state->__pyx_kp_u_enable); - Py_VISIT(traverse_module_state->__pyx_n_s_encode); - Py_VISIT(traverse_module_state->__pyx_n_s_enter); - Py_VISIT(traverse_module_state->__pyx_n_s_enumerate); - Py_VISIT(traverse_module_state->__pyx_n_u_eps_sufficient_descent); - Py_VISIT(traverse_module_state->__pyx_n_s_error); - Py_VISIT(traverse_module_state->__pyx_n_s_eval_param_sens); - Py_VISIT(traverse_module_state->__pyx_n_u_ex); - Py_VISIT(traverse_module_state->__pyx_n_s_exit); - Py_VISIT(traverse_module_state->__pyx_n_s_f); - Py_VISIT(traverse_module_state->__pyx_n_s_field); - Py_VISIT(traverse_module_state->__pyx_n_s_field_2); - Py_VISIT(traverse_module_state->__pyx_n_s_fields); - Py_VISIT(traverse_module_state->__pyx_n_s_filename); - Py_VISIT(traverse_module_state->__pyx_n_s_flags); - Py_VISIT(traverse_module_state->__pyx_n_s_float64); - Py_VISIT(traverse_module_state->__pyx_kp_u_for_field); - Py_VISIT(traverse_module_state->__pyx_n_s_format); - Py_VISIT(traverse_module_state->__pyx_n_s_fortran); - Py_VISIT(traverse_module_state->__pyx_n_u_fortran); - Py_VISIT(traverse_module_state->__pyx_n_s_full_stats); - Py_VISIT(traverse_module_state->__pyx_n_u_full_step_dual); - Py_VISIT(traverse_module_state->__pyx_kp_u_gc); - Py_VISIT(traverse_module_state->__pyx_n_s_get); - Py_VISIT(traverse_module_state->__pyx_n_s_get_cost); - Py_VISIT(traverse_module_state->__pyx_n_s_get_from_qp_in); - Py_VISIT(traverse_module_state->__pyx_n_s_get_pointers_solver); - Py_VISIT(traverse_module_state->__pyx_n_s_get_residuals); - Py_VISIT(traverse_module_state->__pyx_n_s_get_stat_double); - Py_VISIT(traverse_module_state->__pyx_n_s_get_stat_int); - Py_VISIT(traverse_module_state->__pyx_n_s_get_stat_matrix); - Py_VISIT(traverse_module_state->__pyx_n_s_get_stats); - Py_VISIT(traverse_module_state->__pyx_n_s_getcwd); - Py_VISIT(traverse_module_state->__pyx_n_s_getstate); - Py_VISIT(traverse_module_state->__pyx_n_u_globalization); - Py_VISIT(traverse_module_state->__pyx_n_u_globalization_use_SOC); - Py_VISIT(traverse_module_state->__pyx_kp_u_got); - Py_VISIT(traverse_module_state->__pyx_kp_u_got_differing_extents_in_dimensi); - Py_VISIT(traverse_module_state->__pyx_n_s_i); - Py_VISIT(traverse_module_state->__pyx_n_s_i_string); - Py_VISIT(traverse_module_state->__pyx_n_s_id); - Py_VISIT(traverse_module_state->__pyx_n_s_idx); - Py_VISIT(traverse_module_state->__pyx_n_s_idx_values); - Py_VISIT(traverse_module_state->__pyx_n_s_import); - Py_VISIT(traverse_module_state->__pyx_n_s_indent); - Py_VISIT(traverse_module_state->__pyx_n_s_index); - Py_VISIT(traverse_module_state->__pyx_n_u_initialize_t_slacks); - Py_VISIT(traverse_module_state->__pyx_n_s_initializing); - Py_VISIT(traverse_module_state->__pyx_n_s_int); - Py_VISIT(traverse_module_state->__pyx_n_s_int32); - Py_VISIT(traverse_module_state->__pyx_n_s_int_fields); - Py_VISIT(traverse_module_state->__pyx_n_s_int_value); - Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); - Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); - Py_VISIT(traverse_module_state->__pyx_n_s_isfile); - Py_VISIT(traverse_module_state->__pyx_n_s_itemsize); - Py_VISIT(traverse_module_state->__pyx_kp_s_itemsize_0_for_cython_array); - Py_VISIT(traverse_module_state->__pyx_n_u_iterate); - Py_VISIT(traverse_module_state->__pyx_n_s_join); - Py_VISIT(traverse_module_state->__pyx_n_s_json); - Py_VISIT(traverse_module_state->__pyx_kp_u_json_2); - Py_VISIT(traverse_module_state->__pyx_n_s_k); - Py_VISIT(traverse_module_state->__pyx_n_s_key); - Py_VISIT(traverse_module_state->__pyx_n_s_keys); - Py_VISIT(traverse_module_state->__pyx_n_s_lN); - Py_VISIT(traverse_module_state->__pyx_n_u_lam); - Py_VISIT(traverse_module_state->__pyx_n_u_lam_2); - Py_VISIT(traverse_module_state->__pyx_n_u_lbu); - Py_VISIT(traverse_module_state->__pyx_n_u_lbx); - Py_VISIT(traverse_module_state->__pyx_n_u_line_search_use_sufficient_desce); - Py_VISIT(traverse_module_state->__pyx_n_s_load); - Py_VISIT(traverse_module_state->__pyx_n_s_load_iterate); - Py_VISIT(traverse_module_state->__pyx_kp_u_load_iterate_failed_file_does_no); - Py_VISIT(traverse_module_state->__pyx_n_s_m); - Py_VISIT(traverse_module_state->__pyx_n_s_main); - Py_VISIT(traverse_module_state->__pyx_n_s_mem_fields); - Py_VISIT(traverse_module_state->__pyx_n_s_memview); - Py_VISIT(traverse_module_state->__pyx_n_s_min_size); - Py_VISIT(traverse_module_state->__pyx_n_s_mode); - Py_VISIT(traverse_module_state->__pyx_n_s_model_name); - Py_VISIT(traverse_module_state->__pyx_n_s_msg); - Py_VISIT(traverse_module_state->__pyx_n_s_n); - Py_VISIT(traverse_module_state->__pyx_n_s_n_update); - Py_VISIT(traverse_module_state->__pyx_n_s_name); - Py_VISIT(traverse_module_state->__pyx_n_s_name_2); - Py_VISIT(traverse_module_state->__pyx_n_s_ndarray); - Py_VISIT(traverse_module_state->__pyx_n_s_ndim); - Py_VISIT(traverse_module_state->__pyx_n_s_new); - Py_VISIT(traverse_module_state->__pyx_n_s_new_time_steps); - Py_VISIT(traverse_module_state->__pyx_n_s_nlp_solver_type); - Py_VISIT(traverse_module_state->__pyx_kp_s_no_default___reduce___due_to_non); - Py_VISIT(traverse_module_state->__pyx_n_s_np); - Py_VISIT(traverse_module_state->__pyx_n_s_numpy); - Py_VISIT(traverse_module_state->__pyx_kp_u_numpy_core_multiarray_failed_to); - Py_VISIT(traverse_module_state->__pyx_kp_u_numpy_core_umath_failed_to_impor); - Py_VISIT(traverse_module_state->__pyx_n_s_nx); - Py_VISIT(traverse_module_state->__pyx_n_s_obj); - Py_VISIT(traverse_module_state->__pyx_n_s_open); - Py_VISIT(traverse_module_state->__pyx_n_s_options_set); - Py_VISIT(traverse_module_state->__pyx_n_s_order); - Py_VISIT(traverse_module_state->__pyx_n_s_os); - Py_VISIT(traverse_module_state->__pyx_n_s_out); - Py_VISIT(traverse_module_state->__pyx_n_s_out_fields); - Py_VISIT(traverse_module_state->__pyx_n_s_out_mat); - Py_VISIT(traverse_module_state->__pyx_n_s_overwrite); - Py_VISIT(traverse_module_state->__pyx_n_u_p); - Py_VISIT(traverse_module_state->__pyx_n_s_pack); - Py_VISIT(traverse_module_state->__pyx_n_s_param_values); - Py_VISIT(traverse_module_state->__pyx_kp_u_param_values_2); - Py_VISIT(traverse_module_state->__pyx_kp_u_param_values__and_idx_values__mu); - Py_VISIT(traverse_module_state->__pyx_kp_u_param_values__must_be_np_array); - Py_VISIT(traverse_module_state->__pyx_n_s_path); - Py_VISIT(traverse_module_state->__pyx_n_u_pi); - Py_VISIT(traverse_module_state->__pyx_n_u_pi_2); - Py_VISIT(traverse_module_state->__pyx_n_s_pickle); - Py_VISIT(traverse_module_state->__pyx_n_s_print); - Py_VISIT(traverse_module_state->__pyx_n_u_print_level); - Py_VISIT(traverse_module_state->__pyx_n_s_print_statistics); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_Enum); - Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable); - Py_VISIT(traverse_module_state->__pyx_n_u_qp_iter); - Py_VISIT(traverse_module_state->__pyx_n_u_qp_mu0); - Py_VISIT(traverse_module_state->__pyx_n_s_qp_solver_cond_N); - Py_VISIT(traverse_module_state->__pyx_n_u_qp_tau_min); - Py_VISIT(traverse_module_state->__pyx_n_u_qp_tol_comp); - Py_VISIT(traverse_module_state->__pyx_n_u_qp_tol_eq); - Py_VISIT(traverse_module_state->__pyx_n_u_qp_tol_ineq); - Py_VISIT(traverse_module_state->__pyx_n_u_qp_tol_stat); - Py_VISIT(traverse_module_state->__pyx_n_u_qp_warm_start); - Py_VISIT(traverse_module_state->__pyx_n_u_r); - Py_VISIT(traverse_module_state->__pyx_n_s_range); - Py_VISIT(traverse_module_state->__pyx_n_s_recompute); - Py_VISIT(traverse_module_state->__pyx_n_s_reduce); - Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex); - Py_VISIT(traverse_module_state->__pyx_n_s_register); - Py_VISIT(traverse_module_state->__pyx_n_b_res_comp); - Py_VISIT(traverse_module_state->__pyx_n_b_res_eq); - Py_VISIT(traverse_module_state->__pyx_n_b_res_ineq); - Py_VISIT(traverse_module_state->__pyx_n_b_res_stat); - Py_VISIT(traverse_module_state->__pyx_n_s_reset); - Py_VISIT(traverse_module_state->__pyx_n_s_reset_qp_solver_mem); - Py_VISIT(traverse_module_state->__pyx_n_u_residuals); - Py_VISIT(traverse_module_state->__pyx_n_u_rti_phase); - Py_VISIT(traverse_module_state->__pyx_n_s_self); - Py_VISIT(traverse_module_state->__pyx_n_s_set); - Py_VISIT(traverse_module_state->__pyx_n_s_set_new_time_steps); - Py_VISIT(traverse_module_state->__pyx_n_s_set_params_sparse); - Py_VISIT(traverse_module_state->__pyx_kp_u_set_value_must_be_numpy_array_go); - Py_VISIT(traverse_module_state->__pyx_n_s_setstate); - Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython); - Py_VISIT(traverse_module_state->__pyx_n_s_shape); - Py_VISIT(traverse_module_state->__pyx_n_s_size); - Py_VISIT(traverse_module_state->__pyx_n_u_sl); - Py_VISIT(traverse_module_state->__pyx_n_u_sl_2); - Py_VISIT(traverse_module_state->__pyx_n_s_solution); - Py_VISIT(traverse_module_state->__pyx_n_s_solve); - Py_VISIT(traverse_module_state->__pyx_n_s_solve_for_x0); - Py_VISIT(traverse_module_state->__pyx_kp_u_solver_option_must_be_of_type_fl); - Py_VISIT(traverse_module_state->__pyx_kp_u_solver_option_must_be_of_type_in); - Py_VISIT(traverse_module_state->__pyx_kp_u_solver_option_must_be_of_type_st); - Py_VISIT(traverse_module_state->__pyx_n_s_sort_keys); - Py_VISIT(traverse_module_state->__pyx_n_s_spec); - Py_VISIT(traverse_module_state->__pyx_n_s_split); - Py_VISIT(traverse_module_state->__pyx_n_s_sqp_iter); - Py_VISIT(traverse_module_state->__pyx_n_u_sqp_iter); - Py_VISIT(traverse_module_state->__pyx_n_s_stage); - Py_VISIT(traverse_module_state->__pyx_n_s_start); - Py_VISIT(traverse_module_state->__pyx_n_s_stat_m); - Py_VISIT(traverse_module_state->__pyx_n_u_stat_m); - Py_VISIT(traverse_module_state->__pyx_n_s_stat_n); - Py_VISIT(traverse_module_state->__pyx_n_u_stat_n); - Py_VISIT(traverse_module_state->__pyx_n_u_statistics); - Py_VISIT(traverse_module_state->__pyx_n_s_status); - Py_VISIT(traverse_module_state->__pyx_n_s_step); - Py_VISIT(traverse_module_state->__pyx_n_u_step_length); - Py_VISIT(traverse_module_state->__pyx_n_s_stop); - Py_VISIT(traverse_module_state->__pyx_n_s_store_iterate); - Py_VISIT(traverse_module_state->__pyx_n_s_store_iterate_locals_lambda); - Py_VISIT(traverse_module_state->__pyx_kp_u_stored_current_iterate_in); - Py_VISIT(traverse_module_state->__pyx_n_s_strftime); - Py_VISIT(traverse_module_state->__pyx_kp_s_strided_and_direct); - Py_VISIT(traverse_module_state->__pyx_kp_s_strided_and_direct_or_indirect); - Py_VISIT(traverse_module_state->__pyx_kp_s_strided_and_indirect); - Py_VISIT(traverse_module_state->__pyx_n_s_string_fields); - Py_VISIT(traverse_module_state->__pyx_n_s_string_value); - Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource); - Py_VISIT(traverse_module_state->__pyx_n_s_struct); - Py_VISIT(traverse_module_state->__pyx_n_u_su); - Py_VISIT(traverse_module_state->__pyx_n_u_su_2); - Py_VISIT(traverse_module_state->__pyx_n_s_sys); - Py_VISIT(traverse_module_state->__pyx_n_u_t); - Py_VISIT(traverse_module_state->__pyx_n_u_t_2); - Py_VISIT(traverse_module_state->__pyx_n_s_test); - Py_VISIT(traverse_module_state->__pyx_kp_s_third_party_acados_acados_templa); - Py_VISIT(traverse_module_state->__pyx_n_u_time_glob); - Py_VISIT(traverse_module_state->__pyx_n_u_time_lin); - Py_VISIT(traverse_module_state->__pyx_n_u_time_qp); - Py_VISIT(traverse_module_state->__pyx_n_u_time_qp_solver_call); - Py_VISIT(traverse_module_state->__pyx_n_u_time_qp_xcond); - Py_VISIT(traverse_module_state->__pyx_n_u_time_reg); - Py_VISIT(traverse_module_state->__pyx_n_u_time_sim); - Py_VISIT(traverse_module_state->__pyx_n_u_time_sim_ad); - Py_VISIT(traverse_module_state->__pyx_n_u_time_sim_la); - Py_VISIT(traverse_module_state->__pyx_n_u_time_solution_sensitivities); - Py_VISIT(traverse_module_state->__pyx_n_u_time_tot); - Py_VISIT(traverse_module_state->__pyx_n_u_tol_comp); - Py_VISIT(traverse_module_state->__pyx_n_u_tol_eq); - Py_VISIT(traverse_module_state->__pyx_n_u_tol_ineq); - Py_VISIT(traverse_module_state->__pyx_n_u_tol_stat); - Py_VISIT(traverse_module_state->__pyx_n_s_tolist); - Py_VISIT(traverse_module_state->__pyx_n_u_u); - Py_VISIT(traverse_module_state->__pyx_n_s_u0); - Py_VISIT(traverse_module_state->__pyx_n_u_u_2); - Py_VISIT(traverse_module_state->__pyx_n_u_ubu); - Py_VISIT(traverse_module_state->__pyx_n_u_ubx); - Py_VISIT(traverse_module_state->__pyx_kp_s_unable_to_allocate_array_data); - Py_VISIT(traverse_module_state->__pyx_kp_s_unable_to_allocate_shape_and_str); - Py_VISIT(traverse_module_state->__pyx_n_s_unpack); - Py_VISIT(traverse_module_state->__pyx_n_s_update); - Py_VISIT(traverse_module_state->__pyx_n_s_update_qp_solver_cond_N); - Py_VISIT(traverse_module_state->__pyx_n_s_utcnow); - Py_VISIT(traverse_module_state->__pyx_kp_u_utf_8); - Py_VISIT(traverse_module_state->__pyx_n_s_value); - Py_VISIT(traverse_module_state->__pyx_n_s_value_2); - Py_VISIT(traverse_module_state->__pyx_n_s_value_shape); - Py_VISIT(traverse_module_state->__pyx_n_s_version_info); - Py_VISIT(traverse_module_state->__pyx_n_u_w); - Py_VISIT(traverse_module_state->__pyx_n_u_warm_start_first_qp); - Py_VISIT(traverse_module_state->__pyx_kp_u_with_dimension); - Py_VISIT(traverse_module_state->__pyx_kp_u_with_dimension_you_have); - Py_VISIT(traverse_module_state->__pyx_n_b_x); - Py_VISIT(traverse_module_state->__pyx_n_s_x); - Py_VISIT(traverse_module_state->__pyx_n_u_x); - Py_VISIT(traverse_module_state->__pyx_n_s_x0_bar); - Py_VISIT(traverse_module_state->__pyx_n_u_x_2); - Py_VISIT(traverse_module_state->__pyx_n_u_xdot_guess); - Py_VISIT(traverse_module_state->__pyx_n_u_y_ref); - Py_VISIT(traverse_module_state->__pyx_kp_u_you_have); - Py_VISIT(traverse_module_state->__pyx_n_u_yref); - Py_VISIT(traverse_module_state->__pyx_n_u_z); - Py_VISIT(traverse_module_state->__pyx_n_u_z_2); - Py_VISIT(traverse_module_state->__pyx_n_b_z_guess); - Py_VISIT(traverse_module_state->__pyx_n_u_z_guess); - Py_VISIT(traverse_module_state->__pyx_n_s_zeros); - Py_VISIT(traverse_module_state->__pyx_int_0); - Py_VISIT(traverse_module_state->__pyx_int_1); - Py_VISIT(traverse_module_state->__pyx_int_2); - Py_VISIT(traverse_module_state->__pyx_int_3); - Py_VISIT(traverse_module_state->__pyx_int_4); - Py_VISIT(traverse_module_state->__pyx_int_6); - Py_VISIT(traverse_module_state->__pyx_int_7); - Py_VISIT(traverse_module_state->__pyx_int_112105877); - Py_VISIT(traverse_module_state->__pyx_int_136983863); - Py_VISIT(traverse_module_state->__pyx_int_184977713); - Py_VISIT(traverse_module_state->__pyx_int_neg_1); - Py_VISIT(traverse_module_state->__pyx_int_neg_5); - Py_VISIT(traverse_module_state->__pyx_slice__5); - Py_VISIT(traverse_module_state->__pyx_tuple__4); - Py_VISIT(traverse_module_state->__pyx_tuple__8); - Py_VISIT(traverse_module_state->__pyx_tuple__9); - Py_VISIT(traverse_module_state->__pyx_slice__18); - Py_VISIT(traverse_module_state->__pyx_tuple__10); - Py_VISIT(traverse_module_state->__pyx_tuple__11); - Py_VISIT(traverse_module_state->__pyx_tuple__12); - Py_VISIT(traverse_module_state->__pyx_tuple__13); - Py_VISIT(traverse_module_state->__pyx_tuple__14); - Py_VISIT(traverse_module_state->__pyx_tuple__15); - Py_VISIT(traverse_module_state->__pyx_tuple__19); - Py_VISIT(traverse_module_state->__pyx_tuple__20); - Py_VISIT(traverse_module_state->__pyx_tuple__21); - Py_VISIT(traverse_module_state->__pyx_tuple__22); - Py_VISIT(traverse_module_state->__pyx_tuple__23); - Py_VISIT(traverse_module_state->__pyx_tuple__24); - Py_VISIT(traverse_module_state->__pyx_tuple__25); - Py_VISIT(traverse_module_state->__pyx_tuple__26); - Py_VISIT(traverse_module_state->__pyx_tuple__27); - Py_VISIT(traverse_module_state->__pyx_tuple__28); - Py_VISIT(traverse_module_state->__pyx_tuple__29); - Py_VISIT(traverse_module_state->__pyx_tuple__30); - Py_VISIT(traverse_module_state->__pyx_tuple__32); - Py_VISIT(traverse_module_state->__pyx_tuple__33); - Py_VISIT(traverse_module_state->__pyx_tuple__34); - Py_VISIT(traverse_module_state->__pyx_tuple__35); - Py_VISIT(traverse_module_state->__pyx_tuple__36); - Py_VISIT(traverse_module_state->__pyx_tuple__37); - Py_VISIT(traverse_module_state->__pyx_tuple__38); - Py_VISIT(traverse_module_state->__pyx_tuple__39); - Py_VISIT(traverse_module_state->__pyx_tuple__40); - Py_VISIT(traverse_module_state->__pyx_tuple__41); - Py_VISIT(traverse_module_state->__pyx_tuple__42); - Py_VISIT(traverse_module_state->__pyx_tuple__44); - Py_VISIT(traverse_module_state->__pyx_tuple__46); - Py_VISIT(traverse_module_state->__pyx_tuple__49); - Py_VISIT(traverse_module_state->__pyx_tuple__51); - Py_VISIT(traverse_module_state->__pyx_tuple__53); - Py_VISIT(traverse_module_state->__pyx_tuple__55); - Py_VISIT(traverse_module_state->__pyx_tuple__57); - Py_VISIT(traverse_module_state->__pyx_tuple__59); - Py_VISIT(traverse_module_state->__pyx_tuple__60); - Py_VISIT(traverse_module_state->__pyx_tuple__63); - Py_VISIT(traverse_module_state->__pyx_tuple__65); - Py_VISIT(traverse_module_state->__pyx_tuple__66); - Py_VISIT(traverse_module_state->__pyx_tuple__68); - Py_VISIT(traverse_module_state->__pyx_tuple__70); - Py_VISIT(traverse_module_state->__pyx_tuple__73); - Py_VISIT(traverse_module_state->__pyx_tuple__75); - Py_VISIT(traverse_module_state->__pyx_tuple__77); - Py_VISIT(traverse_module_state->__pyx_tuple__79); - Py_VISIT(traverse_module_state->__pyx_tuple__80); - Py_VISIT(traverse_module_state->__pyx_tuple__82); - Py_VISIT(traverse_module_state->__pyx_tuple__85); - Py_VISIT(traverse_module_state->__pyx_tuple__87); - Py_VISIT(traverse_module_state->__pyx_tuple__89); - Py_VISIT(traverse_module_state->__pyx_tuple__92); - Py_VISIT(traverse_module_state->__pyx_codeobj__43); - Py_VISIT(traverse_module_state->__pyx_codeobj__45); - Py_VISIT(traverse_module_state->__pyx_codeobj__47); - Py_VISIT(traverse_module_state->__pyx_codeobj__48); - Py_VISIT(traverse_module_state->__pyx_codeobj__50); - Py_VISIT(traverse_module_state->__pyx_codeobj__52); - Py_VISIT(traverse_module_state->__pyx_codeobj__54); - Py_VISIT(traverse_module_state->__pyx_codeobj__56); - Py_VISIT(traverse_module_state->__pyx_codeobj__58); - Py_VISIT(traverse_module_state->__pyx_codeobj__61); - Py_VISIT(traverse_module_state->__pyx_codeobj__62); - Py_VISIT(traverse_module_state->__pyx_codeobj__64); - Py_VISIT(traverse_module_state->__pyx_codeobj__67); - Py_VISIT(traverse_module_state->__pyx_codeobj__69); - Py_VISIT(traverse_module_state->__pyx_codeobj__71); - Py_VISIT(traverse_module_state->__pyx_codeobj__72); - Py_VISIT(traverse_module_state->__pyx_codeobj__74); - Py_VISIT(traverse_module_state->__pyx_codeobj__76); - Py_VISIT(traverse_module_state->__pyx_codeobj__78); - Py_VISIT(traverse_module_state->__pyx_codeobj__81); - Py_VISIT(traverse_module_state->__pyx_codeobj__83); - Py_VISIT(traverse_module_state->__pyx_codeobj__84); - Py_VISIT(traverse_module_state->__pyx_codeobj__86); - Py_VISIT(traverse_module_state->__pyx_codeobj__88); - Py_VISIT(traverse_module_state->__pyx_codeobj__90); - Py_VISIT(traverse_module_state->__pyx_codeobj__91); - Py_VISIT(traverse_module_state->__pyx_codeobj__93); - return 0; -} -#endif -/* #### Code section: module_state_defines ### */ -#define __pyx_d __pyx_mstate_global->__pyx_d -#define __pyx_b __pyx_mstate_global->__pyx_b -#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime -#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple -#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes -#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode -#ifdef __Pyx_CyFunction_USED -#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType -#endif -#ifdef __Pyx_FusedFunction_USED -#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType -#endif -#ifdef __Pyx_Generator_USED -#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType -#endif -#ifdef __Pyx_IterableCoroutine_USED -#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType -#endif -#ifdef __Pyx_Coroutine_USED -#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType -#endif -#ifdef __Pyx_Coroutine_USED -#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#define __pyx_ptype_7cpython_4type_type __pyx_mstate_global->__pyx_ptype_7cpython_4type_type -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#if CYTHON_USE_MODULE_STATE -#endif -#define __pyx_ptype_5numpy_dtype __pyx_mstate_global->__pyx_ptype_5numpy_dtype -#define __pyx_ptype_5numpy_flatiter __pyx_mstate_global->__pyx_ptype_5numpy_flatiter -#define __pyx_ptype_5numpy_broadcast __pyx_mstate_global->__pyx_ptype_5numpy_broadcast -#define __pyx_ptype_5numpy_ndarray __pyx_mstate_global->__pyx_ptype_5numpy_ndarray -#define __pyx_ptype_5numpy_generic __pyx_mstate_global->__pyx_ptype_5numpy_generic -#define __pyx_ptype_5numpy_number __pyx_mstate_global->__pyx_ptype_5numpy_number -#define __pyx_ptype_5numpy_integer __pyx_mstate_global->__pyx_ptype_5numpy_integer -#define __pyx_ptype_5numpy_signedinteger __pyx_mstate_global->__pyx_ptype_5numpy_signedinteger -#define __pyx_ptype_5numpy_unsignedinteger __pyx_mstate_global->__pyx_ptype_5numpy_unsignedinteger -#define __pyx_ptype_5numpy_inexact __pyx_mstate_global->__pyx_ptype_5numpy_inexact -#define __pyx_ptype_5numpy_floating __pyx_mstate_global->__pyx_ptype_5numpy_floating -#define __pyx_ptype_5numpy_complexfloating __pyx_mstate_global->__pyx_ptype_5numpy_complexfloating -#define __pyx_ptype_5numpy_flexible __pyx_mstate_global->__pyx_ptype_5numpy_flexible -#define __pyx_ptype_5numpy_character __pyx_mstate_global->__pyx_ptype_5numpy_character -#define __pyx_ptype_5numpy_ufunc __pyx_mstate_global->__pyx_ptype_5numpy_ufunc -#if CYTHON_USE_MODULE_STATE -#define __pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython __pyx_mstate_global->__pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython -#define __pyx_type___pyx_array __pyx_mstate_global->__pyx_type___pyx_array -#define __pyx_type___pyx_MemviewEnum __pyx_mstate_global->__pyx_type___pyx_MemviewEnum -#define __pyx_type___pyx_memoryview __pyx_mstate_global->__pyx_type___pyx_memoryview -#define __pyx_type___pyx_memoryviewslice __pyx_mstate_global->__pyx_type___pyx_memoryviewslice -#endif -#define __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython __pyx_mstate_global->__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython -#define __pyx_array_type __pyx_mstate_global->__pyx_array_type -#define __pyx_MemviewEnum_type __pyx_mstate_global->__pyx_MemviewEnum_type -#define __pyx_memoryview_type __pyx_mstate_global->__pyx_memoryview_type -#define __pyx_memoryviewslice_type __pyx_mstate_global->__pyx_memoryviewslice_type -#define __pyx_kp_u_ __pyx_mstate_global->__pyx_kp_u_ -#define __pyx_kp_u_0 __pyx_mstate_global->__pyx_kp_u_0 -#define __pyx_n_s_ASCII __pyx_mstate_global->__pyx_n_s_ASCII -#define __pyx_n_s_AcadosOcpSolverCython __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython -#define __pyx_n_s_AcadosOcpSolverCython___get_poin __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython___get_poin -#define __pyx_n_s_AcadosOcpSolverCython___get_stat __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython___get_stat -#define __pyx_n_s_AcadosOcpSolverCython___get_stat_2 __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython___get_stat_2 -#define __pyx_n_s_AcadosOcpSolverCython___get_stat_3 __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython___get_stat_3 -#define __pyx_n_s_AcadosOcpSolverCython___reduce_c __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython___reduce_c -#define __pyx_n_s_AcadosOcpSolverCython___setstate __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython___setstate -#define __pyx_n_s_AcadosOcpSolverCython__get_poin __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython__get_poin -#define __pyx_n_s_AcadosOcpSolverCython__get_stat __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython__get_stat -#define __pyx_n_s_AcadosOcpSolverCython__get_stat_2 __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython__get_stat_2 -#define __pyx_n_s_AcadosOcpSolverCython__get_stat_3 __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython__get_stat_3 -#define __pyx_kp_u_AcadosOcpSolverCython_constraint __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_constraint -#define __pyx_n_s_AcadosOcpSolverCython_constraint_2 __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_constraint_2 -#define __pyx_n_s_AcadosOcpSolverCython_cost_set __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_cost_set -#define __pyx_kp_u_AcadosOcpSolverCython_cost_set_m __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_cost_set_m -#define __pyx_n_s_AcadosOcpSolverCython_custom_upd __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_custom_upd -#define __pyx_kp_u_AcadosOcpSolverCython_does_not_s __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_does_not_s -#define __pyx_kp_u_AcadosOcpSolverCython_does_not_s_2 __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_does_not_s_2 -#define __pyx_kp_u_AcadosOcpSolverCython_eval_param __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_eval_param -#define __pyx_kp_u_AcadosOcpSolverCython_eval_param_2 __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_eval_param_2 -#define __pyx_n_s_AcadosOcpSolverCython_eval_param_3 __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_eval_param_3 -#define __pyx_n_s_AcadosOcpSolverCython_get __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_get -#define __pyx_n_s_AcadosOcpSolverCython_get_cost __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_get_cost -#define __pyx_kp_u_AcadosOcpSolverCython_get_field __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_get_field -#define __pyx_n_s_AcadosOcpSolverCython_get_from_q __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_get_from_q -#define __pyx_kp_u_AcadosOcpSolverCython_get_is_an __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_get_is_an -#define __pyx_n_s_AcadosOcpSolverCython_get_residu __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_get_residu -#define __pyx_kp_u_AcadosOcpSolverCython_get_stage __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_get_stage -#define __pyx_n_s_AcadosOcpSolverCython_get_stats __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_get_stats -#define __pyx_n_s_AcadosOcpSolverCython_load_itera __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_load_itera -#define __pyx_kp_u_AcadosOcpSolverCython_options_se __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_options_se -#define __pyx_n_s_AcadosOcpSolverCython_options_se_2 __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_options_se_2 -#define __pyx_n_s_AcadosOcpSolverCython_print_stat __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_print_stat -#define __pyx_n_s_AcadosOcpSolverCython_reset __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_reset -#define __pyx_n_s_AcadosOcpSolverCython_set __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_set -#define __pyx_kp_u_AcadosOcpSolverCython_set_is_not __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_set_is_not -#define __pyx_kp_u_AcadosOcpSolverCython_set_mismat __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_set_mismat -#define __pyx_n_s_AcadosOcpSolverCython_set_new_ti __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_set_new_ti -#define __pyx_n_s_AcadosOcpSolverCython_set_params __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_set_params -#define __pyx_n_s_AcadosOcpSolverCython_solve __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_solve -#define __pyx_kp_u_AcadosOcpSolverCython_solve_argu __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_solve_argu -#define __pyx_kp_u_AcadosOcpSolverCython_solve_argu_2 __pyx_mstate_global->__pyx_kp_u_AcadosOcpSolverCython_solve_argu_2 -#define __pyx_n_s_AcadosOcpSolverCython_solve_for __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_solve_for -#define __pyx_n_s_AcadosOcpSolverCython_store_iter __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_store_iter -#define __pyx_n_s_AcadosOcpSolverCython_update_qp __pyx_mstate_global->__pyx_n_s_AcadosOcpSolverCython_update_qp -#define __pyx_kp_s_All_dimensions_preceding_dimensi __pyx_mstate_global->__pyx_kp_s_All_dimensions_preceding_dimensi -#define __pyx_n_s_AssertionError __pyx_mstate_global->__pyx_n_s_AssertionError -#define __pyx_kp_s_Buffer_view_does_not_expose_stri __pyx_mstate_global->__pyx_kp_s_Buffer_view_does_not_expose_stri -#define __pyx_kp_s_Can_only_create_a_buffer_that_is __pyx_mstate_global->__pyx_kp_s_Can_only_create_a_buffer_that_is -#define __pyx_kp_s_Cannot_assign_to_read_only_memor __pyx_mstate_global->__pyx_kp_s_Cannot_assign_to_read_only_memor -#define __pyx_kp_s_Cannot_create_writable_memory_vi __pyx_mstate_global->__pyx_kp_s_Cannot_create_writable_memory_vi -#define __pyx_kp_u_Cannot_index_with_type __pyx_mstate_global->__pyx_kp_u_Cannot_index_with_type -#define __pyx_kp_s_Cannot_transpose_memoryview_with __pyx_mstate_global->__pyx_kp_s_Cannot_transpose_memoryview_with -#define __pyx_kp_s_Dimension_d_is_not_direct __pyx_mstate_global->__pyx_kp_s_Dimension_d_is_not_direct -#define __pyx_n_s_Ellipsis __pyx_mstate_global->__pyx_n_s_Ellipsis -#define __pyx_kp_s_Empty_shape_tuple_for_cython_arr __pyx_mstate_global->__pyx_kp_s_Empty_shape_tuple_for_cython_arr -#define __pyx_n_u_F __pyx_mstate_global->__pyx_n_u_F -#define __pyx_kp_u_Got_sizes_idx __pyx_mstate_global->__pyx_kp_u_Got_sizes_idx -#define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError -#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0 -#define __pyx_n_s_IndexError __pyx_mstate_global->__pyx_n_s_IndexError -#define __pyx_kp_s_Index_out_of_bounds_axis_d __pyx_mstate_global->__pyx_kp_s_Index_out_of_bounds_axis_d -#define __pyx_kp_s_Indirect_dimensions_not_supporte __pyx_mstate_global->__pyx_kp_s_Indirect_dimensions_not_supporte -#define __pyx_kp_u_Invalid_mode_expected_c_or_fortr __pyx_mstate_global->__pyx_kp_u_Invalid_mode_expected_c_or_fortr -#define __pyx_kp_u_Invalid_shape_in_axis __pyx_mstate_global->__pyx_kp_u_Invalid_shape_in_axis -#define __pyx_n_s_MemoryError __pyx_mstate_global->__pyx_n_s_MemoryError -#define __pyx_kp_s_MemoryView_of_r_at_0x_x __pyx_mstate_global->__pyx_kp_s_MemoryView_of_r_at_0x_x -#define __pyx_kp_s_MemoryView_of_r_object __pyx_mstate_global->__pyx_kp_s_MemoryView_of_r_object -#define __pyx_n_s_N __pyx_mstate_global->__pyx_n_s_N -#define __pyx_kp_u_None __pyx_mstate_global->__pyx_kp_u_None -#define __pyx_n_s_NotImplementedError __pyx_mstate_global->__pyx_n_s_NotImplementedError -#define __pyx_n_b_O __pyx_mstate_global->__pyx_n_b_O -#define __pyx_kp_u_Out_of_bounds_on_buffer_access_a __pyx_mstate_global->__pyx_kp_u_Out_of_bounds_on_buffer_access_a -#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError -#define __pyx_n_u_SQP __pyx_mstate_global->__pyx_n_u_SQP -#define __pyx_n_u_SQP_RTI __pyx_mstate_global->__pyx_n_u_SQP_RTI -#define __pyx_n_s_Sequence __pyx_mstate_global->__pyx_n_s_Sequence -#define __pyx_kp_s_Step_may_not_be_zero_axis_d __pyx_mstate_global->__pyx_kp_s_Step_may_not_be_zero_axis_d -#define __pyx_kp_u_TODO __pyx_mstate_global->__pyx_kp_u_TODO -#define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError -#define __pyx_kp_s_Unable_to_convert_item_to_object __pyx_mstate_global->__pyx_kp_s_Unable_to_convert_item_to_object -#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError -#define __pyx_n_s_View_MemoryView __pyx_mstate_global->__pyx_n_s_View_MemoryView -#define __pyx_kp_u_Warning_acados_ocp_solver_reache __pyx_mstate_global->__pyx_kp_u_Warning_acados_ocp_solver_reache -#define __pyx_kp_u_Y_m_d_H_M_S_f __pyx_mstate_global->__pyx_kp_u_Y_m_d_H_M_S_f -#define __pyx_kp_u__16 __pyx_mstate_global->__pyx_kp_u__16 -#define __pyx_n_u__17 __pyx_mstate_global->__pyx_n_u__17 -#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2 -#define __pyx_n_s__3 __pyx_mstate_global->__pyx_n_s__3 -#define __pyx_kp_u__31 __pyx_mstate_global->__pyx_kp_u__31 -#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6 -#define __pyx_kp_u__7 __pyx_mstate_global->__pyx_kp_u__7 -#define __pyx_n_s__94 __pyx_mstate_global->__pyx_n_s__94 -#define __pyx_n_s_abc __pyx_mstate_global->__pyx_n_s_abc -#define __pyx_kp_u_acados_acados_ocp_solver_returne __pyx_mstate_global->__pyx_kp_u_acados_acados_ocp_solver_returne -#define __pyx_n_s_acados_template_acados_ocp_solve __pyx_mstate_global->__pyx_n_s_acados_template_acados_ocp_solve -#define __pyx_n_s_allocate_buffer __pyx_mstate_global->__pyx_n_s_allocate_buffer -#define __pyx_n_u_alpha __pyx_mstate_global->__pyx_n_u_alpha -#define __pyx_n_u_alpha_min __pyx_mstate_global->__pyx_n_u_alpha_min -#define __pyx_n_u_alpha_reduction __pyx_mstate_global->__pyx_n_u_alpha_reduction -#define __pyx_kp_u_alpha_values_are_not_available_f __pyx_mstate_global->__pyx_kp_u_alpha_values_are_not_available_f -#define __pyx_kp_u_and __pyx_mstate_global->__pyx_kp_u_and -#define __pyx_n_s_array __pyx_mstate_global->__pyx_n_s_array -#define __pyx_n_s_ascontiguousarray __pyx_mstate_global->__pyx_n_s_ascontiguousarray -#define __pyx_n_s_asfortranarray __pyx_mstate_global->__pyx_n_s_asfortranarray -#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines -#define __pyx_kp_u_at_stage __pyx_mstate_global->__pyx_kp_u_at_stage -#define __pyx_n_s_base __pyx_mstate_global->__pyx_n_s_base -#define __pyx_n_s_c __pyx_mstate_global->__pyx_n_s_c -#define __pyx_n_u_c __pyx_mstate_global->__pyx_n_u_c -#define __pyx_n_s_class __pyx_mstate_global->__pyx_n_s_class -#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem -#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback -#define __pyx_n_s_collections __pyx_mstate_global->__pyx_n_s_collections -#define __pyx_kp_s_collections_abc __pyx_mstate_global->__pyx_kp_s_collections_abc -#define __pyx_n_s_constraints_fields __pyx_mstate_global->__pyx_n_s_constraints_fields -#define __pyx_n_s_constraints_set __pyx_mstate_global->__pyx_n_s_constraints_set -#define __pyx_kp_u_constraints_set_value_must_be_nu __pyx_mstate_global->__pyx_kp_u_constraints_set_value_must_be_nu -#define __pyx_kp_s_contiguous_and_direct __pyx_mstate_global->__pyx_kp_s_contiguous_and_direct -#define __pyx_kp_s_contiguous_and_indirect __pyx_mstate_global->__pyx_kp_s_contiguous_and_indirect -#define __pyx_n_s_cost_fields __pyx_mstate_global->__pyx_n_s_cost_fields -#define __pyx_n_s_cost_set __pyx_mstate_global->__pyx_n_s_cost_set -#define __pyx_kp_u_cost_set_value_must_be_numpy_arr __pyx_mstate_global->__pyx_kp_u_cost_set_value_must_be_numpy_arr -#define __pyx_n_s_count __pyx_mstate_global->__pyx_n_s_count -#define __pyx_n_s_custom_update __pyx_mstate_global->__pyx_n_s_custom_update -#define __pyx_n_u_d __pyx_mstate_global->__pyx_n_u_d -#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data -#define __pyx_n_s_data_2 __pyx_mstate_global->__pyx_n_s_data_2 -#define __pyx_n_s_data_len __pyx_mstate_global->__pyx_n_s_data_len -#define __pyx_n_s_datetime __pyx_mstate_global->__pyx_n_s_datetime -#define __pyx_n_s_default __pyx_mstate_global->__pyx_n_s_default -#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict -#define __pyx_n_s_dims __pyx_mstate_global->__pyx_n_s_dims -#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable -#define __pyx_n_s_double_fields __pyx_mstate_global->__pyx_n_s_double_fields -#define __pyx_n_s_double_value __pyx_mstate_global->__pyx_n_s_double_value -#define __pyx_n_s_dtype __pyx_mstate_global->__pyx_n_s_dtype -#define __pyx_n_s_dtype_is_object __pyx_mstate_global->__pyx_n_s_dtype_is_object -#define __pyx_n_s_dump __pyx_mstate_global->__pyx_n_s_dump -#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable -#define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode -#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter -#define __pyx_n_s_enumerate __pyx_mstate_global->__pyx_n_s_enumerate -#define __pyx_n_u_eps_sufficient_descent __pyx_mstate_global->__pyx_n_u_eps_sufficient_descent -#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error -#define __pyx_n_s_eval_param_sens __pyx_mstate_global->__pyx_n_s_eval_param_sens -#define __pyx_n_u_ex __pyx_mstate_global->__pyx_n_u_ex -#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit -#define __pyx_n_s_f __pyx_mstate_global->__pyx_n_s_f -#define __pyx_n_s_field __pyx_mstate_global->__pyx_n_s_field -#define __pyx_n_s_field_2 __pyx_mstate_global->__pyx_n_s_field_2 -#define __pyx_n_s_fields __pyx_mstate_global->__pyx_n_s_fields -#define __pyx_n_s_filename __pyx_mstate_global->__pyx_n_s_filename -#define __pyx_n_s_flags __pyx_mstate_global->__pyx_n_s_flags -#define __pyx_n_s_float64 __pyx_mstate_global->__pyx_n_s_float64 -#define __pyx_kp_u_for_field __pyx_mstate_global->__pyx_kp_u_for_field -#define __pyx_n_s_format __pyx_mstate_global->__pyx_n_s_format -#define __pyx_n_s_fortran __pyx_mstate_global->__pyx_n_s_fortran -#define __pyx_n_u_fortran __pyx_mstate_global->__pyx_n_u_fortran -#define __pyx_n_s_full_stats __pyx_mstate_global->__pyx_n_s_full_stats -#define __pyx_n_u_full_step_dual __pyx_mstate_global->__pyx_n_u_full_step_dual -#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc -#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get -#define __pyx_n_s_get_cost __pyx_mstate_global->__pyx_n_s_get_cost -#define __pyx_n_s_get_from_qp_in __pyx_mstate_global->__pyx_n_s_get_from_qp_in -#define __pyx_n_s_get_pointers_solver __pyx_mstate_global->__pyx_n_s_get_pointers_solver -#define __pyx_n_s_get_residuals __pyx_mstate_global->__pyx_n_s_get_residuals -#define __pyx_n_s_get_stat_double __pyx_mstate_global->__pyx_n_s_get_stat_double -#define __pyx_n_s_get_stat_int __pyx_mstate_global->__pyx_n_s_get_stat_int -#define __pyx_n_s_get_stat_matrix __pyx_mstate_global->__pyx_n_s_get_stat_matrix -#define __pyx_n_s_get_stats __pyx_mstate_global->__pyx_n_s_get_stats -#define __pyx_n_s_getcwd __pyx_mstate_global->__pyx_n_s_getcwd -#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate -#define __pyx_n_u_globalization __pyx_mstate_global->__pyx_n_u_globalization -#define __pyx_n_u_globalization_use_SOC __pyx_mstate_global->__pyx_n_u_globalization_use_SOC -#define __pyx_kp_u_got __pyx_mstate_global->__pyx_kp_u_got -#define __pyx_kp_u_got_differing_extents_in_dimensi __pyx_mstate_global->__pyx_kp_u_got_differing_extents_in_dimensi -#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i -#define __pyx_n_s_i_string __pyx_mstate_global->__pyx_n_s_i_string -#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id -#define __pyx_n_s_idx __pyx_mstate_global->__pyx_n_s_idx -#define __pyx_n_s_idx_values __pyx_mstate_global->__pyx_n_s_idx_values -#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import -#define __pyx_n_s_indent __pyx_mstate_global->__pyx_n_s_indent -#define __pyx_n_s_index __pyx_mstate_global->__pyx_n_s_index -#define __pyx_n_u_initialize_t_slacks __pyx_mstate_global->__pyx_n_u_initialize_t_slacks -#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing -#define __pyx_n_s_int __pyx_mstate_global->__pyx_n_s_int -#define __pyx_n_s_int32 __pyx_mstate_global->__pyx_n_s_int32 -#define __pyx_n_s_int_fields __pyx_mstate_global->__pyx_n_s_int_fields -#define __pyx_n_s_int_value __pyx_mstate_global->__pyx_n_s_int_value -#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine -#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled -#define __pyx_n_s_isfile __pyx_mstate_global->__pyx_n_s_isfile -#define __pyx_n_s_itemsize __pyx_mstate_global->__pyx_n_s_itemsize -#define __pyx_kp_s_itemsize_0_for_cython_array __pyx_mstate_global->__pyx_kp_s_itemsize_0_for_cython_array -#define __pyx_n_u_iterate __pyx_mstate_global->__pyx_n_u_iterate -#define __pyx_n_s_join __pyx_mstate_global->__pyx_n_s_join -#define __pyx_n_s_json __pyx_mstate_global->__pyx_n_s_json -#define __pyx_kp_u_json_2 __pyx_mstate_global->__pyx_kp_u_json_2 -#define __pyx_n_s_k __pyx_mstate_global->__pyx_n_s_k -#define __pyx_n_s_key __pyx_mstate_global->__pyx_n_s_key -#define __pyx_n_s_keys __pyx_mstate_global->__pyx_n_s_keys -#define __pyx_n_s_lN __pyx_mstate_global->__pyx_n_s_lN -#define __pyx_n_u_lam __pyx_mstate_global->__pyx_n_u_lam -#define __pyx_n_u_lam_2 __pyx_mstate_global->__pyx_n_u_lam_2 -#define __pyx_n_u_lbu __pyx_mstate_global->__pyx_n_u_lbu -#define __pyx_n_u_lbx __pyx_mstate_global->__pyx_n_u_lbx -#define __pyx_n_u_line_search_use_sufficient_desce __pyx_mstate_global->__pyx_n_u_line_search_use_sufficient_desce -#define __pyx_n_s_load __pyx_mstate_global->__pyx_n_s_load -#define __pyx_n_s_load_iterate __pyx_mstate_global->__pyx_n_s_load_iterate -#define __pyx_kp_u_load_iterate_failed_file_does_no __pyx_mstate_global->__pyx_kp_u_load_iterate_failed_file_does_no -#define __pyx_n_s_m __pyx_mstate_global->__pyx_n_s_m -#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main -#define __pyx_n_s_mem_fields __pyx_mstate_global->__pyx_n_s_mem_fields -#define __pyx_n_s_memview __pyx_mstate_global->__pyx_n_s_memview -#define __pyx_n_s_min_size __pyx_mstate_global->__pyx_n_s_min_size -#define __pyx_n_s_mode __pyx_mstate_global->__pyx_n_s_mode -#define __pyx_n_s_model_name __pyx_mstate_global->__pyx_n_s_model_name -#define __pyx_n_s_msg __pyx_mstate_global->__pyx_n_s_msg -#define __pyx_n_s_n __pyx_mstate_global->__pyx_n_s_n -#define __pyx_n_s_n_update __pyx_mstate_global->__pyx_n_s_n_update -#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name -#define __pyx_n_s_name_2 __pyx_mstate_global->__pyx_n_s_name_2 -#define __pyx_n_s_ndarray __pyx_mstate_global->__pyx_n_s_ndarray -#define __pyx_n_s_ndim __pyx_mstate_global->__pyx_n_s_ndim -#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new -#define __pyx_n_s_new_time_steps __pyx_mstate_global->__pyx_n_s_new_time_steps -#define __pyx_n_s_nlp_solver_type __pyx_mstate_global->__pyx_n_s_nlp_solver_type -#define __pyx_kp_s_no_default___reduce___due_to_non __pyx_mstate_global->__pyx_kp_s_no_default___reduce___due_to_non -#define __pyx_n_s_np __pyx_mstate_global->__pyx_n_s_np -#define __pyx_n_s_numpy __pyx_mstate_global->__pyx_n_s_numpy -#define __pyx_kp_u_numpy_core_multiarray_failed_to __pyx_mstate_global->__pyx_kp_u_numpy_core_multiarray_failed_to -#define __pyx_kp_u_numpy_core_umath_failed_to_impor __pyx_mstate_global->__pyx_kp_u_numpy_core_umath_failed_to_impor -#define __pyx_n_s_nx __pyx_mstate_global->__pyx_n_s_nx -#define __pyx_n_s_obj __pyx_mstate_global->__pyx_n_s_obj -#define __pyx_n_s_open __pyx_mstate_global->__pyx_n_s_open -#define __pyx_n_s_options_set __pyx_mstate_global->__pyx_n_s_options_set -#define __pyx_n_s_order __pyx_mstate_global->__pyx_n_s_order -#define __pyx_n_s_os __pyx_mstate_global->__pyx_n_s_os -#define __pyx_n_s_out __pyx_mstate_global->__pyx_n_s_out -#define __pyx_n_s_out_fields __pyx_mstate_global->__pyx_n_s_out_fields -#define __pyx_n_s_out_mat __pyx_mstate_global->__pyx_n_s_out_mat -#define __pyx_n_s_overwrite __pyx_mstate_global->__pyx_n_s_overwrite -#define __pyx_n_u_p __pyx_mstate_global->__pyx_n_u_p -#define __pyx_n_s_pack __pyx_mstate_global->__pyx_n_s_pack -#define __pyx_n_s_param_values __pyx_mstate_global->__pyx_n_s_param_values -#define __pyx_kp_u_param_values_2 __pyx_mstate_global->__pyx_kp_u_param_values_2 -#define __pyx_kp_u_param_values__and_idx_values__mu __pyx_mstate_global->__pyx_kp_u_param_values__and_idx_values__mu -#define __pyx_kp_u_param_values__must_be_np_array __pyx_mstate_global->__pyx_kp_u_param_values__must_be_np_array -#define __pyx_n_s_path __pyx_mstate_global->__pyx_n_s_path -#define __pyx_n_u_pi __pyx_mstate_global->__pyx_n_u_pi -#define __pyx_n_u_pi_2 __pyx_mstate_global->__pyx_n_u_pi_2 -#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle -#define __pyx_n_s_print __pyx_mstate_global->__pyx_n_s_print -#define __pyx_n_u_print_level __pyx_mstate_global->__pyx_n_u_print_level -#define __pyx_n_s_print_statistics __pyx_mstate_global->__pyx_n_s_print_statistics -#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError -#define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum -#define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result -#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state -#define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type -#define __pyx_n_s_pyx_unpickle_Enum __pyx_mstate_global->__pyx_n_s_pyx_unpickle_Enum -#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable -#define __pyx_n_u_qp_iter __pyx_mstate_global->__pyx_n_u_qp_iter -#define __pyx_n_u_qp_mu0 __pyx_mstate_global->__pyx_n_u_qp_mu0 -#define __pyx_n_s_qp_solver_cond_N __pyx_mstate_global->__pyx_n_s_qp_solver_cond_N -#define __pyx_n_u_qp_tau_min __pyx_mstate_global->__pyx_n_u_qp_tau_min -#define __pyx_n_u_qp_tol_comp __pyx_mstate_global->__pyx_n_u_qp_tol_comp -#define __pyx_n_u_qp_tol_eq __pyx_mstate_global->__pyx_n_u_qp_tol_eq -#define __pyx_n_u_qp_tol_ineq __pyx_mstate_global->__pyx_n_u_qp_tol_ineq -#define __pyx_n_u_qp_tol_stat __pyx_mstate_global->__pyx_n_u_qp_tol_stat -#define __pyx_n_u_qp_warm_start __pyx_mstate_global->__pyx_n_u_qp_warm_start -#define __pyx_n_u_r __pyx_mstate_global->__pyx_n_u_r -#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range -#define __pyx_n_s_recompute __pyx_mstate_global->__pyx_n_s_recompute -#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce -#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython -#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex -#define __pyx_n_s_register __pyx_mstate_global->__pyx_n_s_register -#define __pyx_n_b_res_comp __pyx_mstate_global->__pyx_n_b_res_comp -#define __pyx_n_b_res_eq __pyx_mstate_global->__pyx_n_b_res_eq -#define __pyx_n_b_res_ineq __pyx_mstate_global->__pyx_n_b_res_ineq -#define __pyx_n_b_res_stat __pyx_mstate_global->__pyx_n_b_res_stat -#define __pyx_n_s_reset __pyx_mstate_global->__pyx_n_s_reset -#define __pyx_n_s_reset_qp_solver_mem __pyx_mstate_global->__pyx_n_s_reset_qp_solver_mem -#define __pyx_n_u_residuals __pyx_mstate_global->__pyx_n_u_residuals -#define __pyx_n_u_rti_phase __pyx_mstate_global->__pyx_n_u_rti_phase -#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self -#define __pyx_n_s_set __pyx_mstate_global->__pyx_n_s_set -#define __pyx_n_s_set_new_time_steps __pyx_mstate_global->__pyx_n_s_set_new_time_steps -#define __pyx_n_s_set_params_sparse __pyx_mstate_global->__pyx_n_s_set_params_sparse -#define __pyx_kp_u_set_value_must_be_numpy_array_go __pyx_mstate_global->__pyx_kp_u_set_value_must_be_numpy_array_go -#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate -#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython -#define __pyx_n_s_shape __pyx_mstate_global->__pyx_n_s_shape -#define __pyx_n_s_size __pyx_mstate_global->__pyx_n_s_size -#define __pyx_n_u_sl __pyx_mstate_global->__pyx_n_u_sl -#define __pyx_n_u_sl_2 __pyx_mstate_global->__pyx_n_u_sl_2 -#define __pyx_n_s_solution __pyx_mstate_global->__pyx_n_s_solution -#define __pyx_n_s_solve __pyx_mstate_global->__pyx_n_s_solve -#define __pyx_n_s_solve_for_x0 __pyx_mstate_global->__pyx_n_s_solve_for_x0 -#define __pyx_kp_u_solver_option_must_be_of_type_fl __pyx_mstate_global->__pyx_kp_u_solver_option_must_be_of_type_fl -#define __pyx_kp_u_solver_option_must_be_of_type_in __pyx_mstate_global->__pyx_kp_u_solver_option_must_be_of_type_in -#define __pyx_kp_u_solver_option_must_be_of_type_st __pyx_mstate_global->__pyx_kp_u_solver_option_must_be_of_type_st -#define __pyx_n_s_sort_keys __pyx_mstate_global->__pyx_n_s_sort_keys -#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec -#define __pyx_n_s_split __pyx_mstate_global->__pyx_n_s_split -#define __pyx_n_s_sqp_iter __pyx_mstate_global->__pyx_n_s_sqp_iter -#define __pyx_n_u_sqp_iter __pyx_mstate_global->__pyx_n_u_sqp_iter -#define __pyx_n_s_stage __pyx_mstate_global->__pyx_n_s_stage -#define __pyx_n_s_start __pyx_mstate_global->__pyx_n_s_start -#define __pyx_n_s_stat_m __pyx_mstate_global->__pyx_n_s_stat_m -#define __pyx_n_u_stat_m __pyx_mstate_global->__pyx_n_u_stat_m -#define __pyx_n_s_stat_n __pyx_mstate_global->__pyx_n_s_stat_n -#define __pyx_n_u_stat_n __pyx_mstate_global->__pyx_n_u_stat_n -#define __pyx_n_u_statistics __pyx_mstate_global->__pyx_n_u_statistics -#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status -#define __pyx_n_s_step __pyx_mstate_global->__pyx_n_s_step -#define __pyx_n_u_step_length __pyx_mstate_global->__pyx_n_u_step_length -#define __pyx_n_s_stop __pyx_mstate_global->__pyx_n_s_stop -#define __pyx_n_s_store_iterate __pyx_mstate_global->__pyx_n_s_store_iterate -#define __pyx_n_s_store_iterate_locals_lambda __pyx_mstate_global->__pyx_n_s_store_iterate_locals_lambda -#define __pyx_kp_u_stored_current_iterate_in __pyx_mstate_global->__pyx_kp_u_stored_current_iterate_in -#define __pyx_n_s_strftime __pyx_mstate_global->__pyx_n_s_strftime -#define __pyx_kp_s_strided_and_direct __pyx_mstate_global->__pyx_kp_s_strided_and_direct -#define __pyx_kp_s_strided_and_direct_or_indirect __pyx_mstate_global->__pyx_kp_s_strided_and_direct_or_indirect -#define __pyx_kp_s_strided_and_indirect __pyx_mstate_global->__pyx_kp_s_strided_and_indirect -#define __pyx_n_s_string_fields __pyx_mstate_global->__pyx_n_s_string_fields -#define __pyx_n_s_string_value __pyx_mstate_global->__pyx_n_s_string_value -#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource -#define __pyx_n_s_struct __pyx_mstate_global->__pyx_n_s_struct -#define __pyx_n_u_su __pyx_mstate_global->__pyx_n_u_su -#define __pyx_n_u_su_2 __pyx_mstate_global->__pyx_n_u_su_2 -#define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys -#define __pyx_n_u_t __pyx_mstate_global->__pyx_n_u_t -#define __pyx_n_u_t_2 __pyx_mstate_global->__pyx_n_u_t_2 -#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test -#define __pyx_kp_s_third_party_acados_acados_templa __pyx_mstate_global->__pyx_kp_s_third_party_acados_acados_templa -#define __pyx_n_u_time_glob __pyx_mstate_global->__pyx_n_u_time_glob -#define __pyx_n_u_time_lin __pyx_mstate_global->__pyx_n_u_time_lin -#define __pyx_n_u_time_qp __pyx_mstate_global->__pyx_n_u_time_qp -#define __pyx_n_u_time_qp_solver_call __pyx_mstate_global->__pyx_n_u_time_qp_solver_call -#define __pyx_n_u_time_qp_xcond __pyx_mstate_global->__pyx_n_u_time_qp_xcond -#define __pyx_n_u_time_reg __pyx_mstate_global->__pyx_n_u_time_reg -#define __pyx_n_u_time_sim __pyx_mstate_global->__pyx_n_u_time_sim -#define __pyx_n_u_time_sim_ad __pyx_mstate_global->__pyx_n_u_time_sim_ad -#define __pyx_n_u_time_sim_la __pyx_mstate_global->__pyx_n_u_time_sim_la -#define __pyx_n_u_time_solution_sensitivities __pyx_mstate_global->__pyx_n_u_time_solution_sensitivities -#define __pyx_n_u_time_tot __pyx_mstate_global->__pyx_n_u_time_tot -#define __pyx_n_u_tol_comp __pyx_mstate_global->__pyx_n_u_tol_comp -#define __pyx_n_u_tol_eq __pyx_mstate_global->__pyx_n_u_tol_eq -#define __pyx_n_u_tol_ineq __pyx_mstate_global->__pyx_n_u_tol_ineq -#define __pyx_n_u_tol_stat __pyx_mstate_global->__pyx_n_u_tol_stat -#define __pyx_n_s_tolist __pyx_mstate_global->__pyx_n_s_tolist -#define __pyx_n_u_u __pyx_mstate_global->__pyx_n_u_u -#define __pyx_n_s_u0 __pyx_mstate_global->__pyx_n_s_u0 -#define __pyx_n_u_u_2 __pyx_mstate_global->__pyx_n_u_u_2 -#define __pyx_n_u_ubu __pyx_mstate_global->__pyx_n_u_ubu -#define __pyx_n_u_ubx __pyx_mstate_global->__pyx_n_u_ubx -#define __pyx_kp_s_unable_to_allocate_array_data __pyx_mstate_global->__pyx_kp_s_unable_to_allocate_array_data -#define __pyx_kp_s_unable_to_allocate_shape_and_str __pyx_mstate_global->__pyx_kp_s_unable_to_allocate_shape_and_str -#define __pyx_n_s_unpack __pyx_mstate_global->__pyx_n_s_unpack -#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update -#define __pyx_n_s_update_qp_solver_cond_N __pyx_mstate_global->__pyx_n_s_update_qp_solver_cond_N -#define __pyx_n_s_utcnow __pyx_mstate_global->__pyx_n_s_utcnow -#define __pyx_kp_u_utf_8 __pyx_mstate_global->__pyx_kp_u_utf_8 -#define __pyx_n_s_value __pyx_mstate_global->__pyx_n_s_value -#define __pyx_n_s_value_2 __pyx_mstate_global->__pyx_n_s_value_2 -#define __pyx_n_s_value_shape __pyx_mstate_global->__pyx_n_s_value_shape -#define __pyx_n_s_version_info __pyx_mstate_global->__pyx_n_s_version_info -#define __pyx_n_u_w __pyx_mstate_global->__pyx_n_u_w -#define __pyx_n_u_warm_start_first_qp __pyx_mstate_global->__pyx_n_u_warm_start_first_qp -#define __pyx_kp_u_with_dimension __pyx_mstate_global->__pyx_kp_u_with_dimension -#define __pyx_kp_u_with_dimension_you_have __pyx_mstate_global->__pyx_kp_u_with_dimension_you_have -#define __pyx_n_b_x __pyx_mstate_global->__pyx_n_b_x -#define __pyx_n_s_x __pyx_mstate_global->__pyx_n_s_x -#define __pyx_n_u_x __pyx_mstate_global->__pyx_n_u_x -#define __pyx_n_s_x0_bar __pyx_mstate_global->__pyx_n_s_x0_bar -#define __pyx_n_u_x_2 __pyx_mstate_global->__pyx_n_u_x_2 -#define __pyx_n_u_xdot_guess __pyx_mstate_global->__pyx_n_u_xdot_guess -#define __pyx_n_u_y_ref __pyx_mstate_global->__pyx_n_u_y_ref -#define __pyx_kp_u_you_have __pyx_mstate_global->__pyx_kp_u_you_have -#define __pyx_n_u_yref __pyx_mstate_global->__pyx_n_u_yref -#define __pyx_n_u_z __pyx_mstate_global->__pyx_n_u_z -#define __pyx_n_u_z_2 __pyx_mstate_global->__pyx_n_u_z_2 -#define __pyx_n_b_z_guess __pyx_mstate_global->__pyx_n_b_z_guess -#define __pyx_n_u_z_guess __pyx_mstate_global->__pyx_n_u_z_guess -#define __pyx_n_s_zeros __pyx_mstate_global->__pyx_n_s_zeros -#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0 -#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1 -#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2 -#define __pyx_int_3 __pyx_mstate_global->__pyx_int_3 -#define __pyx_int_4 __pyx_mstate_global->__pyx_int_4 -#define __pyx_int_6 __pyx_mstate_global->__pyx_int_6 -#define __pyx_int_7 __pyx_mstate_global->__pyx_int_7 -#define __pyx_int_112105877 __pyx_mstate_global->__pyx_int_112105877 -#define __pyx_int_136983863 __pyx_mstate_global->__pyx_int_136983863 -#define __pyx_int_184977713 __pyx_mstate_global->__pyx_int_184977713 -#define __pyx_int_neg_1 __pyx_mstate_global->__pyx_int_neg_1 -#define __pyx_int_neg_5 __pyx_mstate_global->__pyx_int_neg_5 -#define __pyx_slice__5 __pyx_mstate_global->__pyx_slice__5 -#define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4 -#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8 -#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9 -#define __pyx_slice__18 __pyx_mstate_global->__pyx_slice__18 -#define __pyx_tuple__10 __pyx_mstate_global->__pyx_tuple__10 -#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11 -#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12 -#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13 -#define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14 -#define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15 -#define __pyx_tuple__19 __pyx_mstate_global->__pyx_tuple__19 -#define __pyx_tuple__20 __pyx_mstate_global->__pyx_tuple__20 -#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21 -#define __pyx_tuple__22 __pyx_mstate_global->__pyx_tuple__22 -#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23 -#define __pyx_tuple__24 __pyx_mstate_global->__pyx_tuple__24 -#define __pyx_tuple__25 __pyx_mstate_global->__pyx_tuple__25 -#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26 -#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27 -#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28 -#define __pyx_tuple__29 __pyx_mstate_global->__pyx_tuple__29 -#define __pyx_tuple__30 __pyx_mstate_global->__pyx_tuple__30 -#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32 -#define __pyx_tuple__33 __pyx_mstate_global->__pyx_tuple__33 -#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34 -#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35 -#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36 -#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37 -#define __pyx_tuple__38 __pyx_mstate_global->__pyx_tuple__38 -#define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39 -#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40 -#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41 -#define __pyx_tuple__42 __pyx_mstate_global->__pyx_tuple__42 -#define __pyx_tuple__44 __pyx_mstate_global->__pyx_tuple__44 -#define __pyx_tuple__46 __pyx_mstate_global->__pyx_tuple__46 -#define __pyx_tuple__49 __pyx_mstate_global->__pyx_tuple__49 -#define __pyx_tuple__51 __pyx_mstate_global->__pyx_tuple__51 -#define __pyx_tuple__53 __pyx_mstate_global->__pyx_tuple__53 -#define __pyx_tuple__55 __pyx_mstate_global->__pyx_tuple__55 -#define __pyx_tuple__57 __pyx_mstate_global->__pyx_tuple__57 -#define __pyx_tuple__59 __pyx_mstate_global->__pyx_tuple__59 -#define __pyx_tuple__60 __pyx_mstate_global->__pyx_tuple__60 -#define __pyx_tuple__63 __pyx_mstate_global->__pyx_tuple__63 -#define __pyx_tuple__65 __pyx_mstate_global->__pyx_tuple__65 -#define __pyx_tuple__66 __pyx_mstate_global->__pyx_tuple__66 -#define __pyx_tuple__68 __pyx_mstate_global->__pyx_tuple__68 -#define __pyx_tuple__70 __pyx_mstate_global->__pyx_tuple__70 -#define __pyx_tuple__73 __pyx_mstate_global->__pyx_tuple__73 -#define __pyx_tuple__75 __pyx_mstate_global->__pyx_tuple__75 -#define __pyx_tuple__77 __pyx_mstate_global->__pyx_tuple__77 -#define __pyx_tuple__79 __pyx_mstate_global->__pyx_tuple__79 -#define __pyx_tuple__80 __pyx_mstate_global->__pyx_tuple__80 -#define __pyx_tuple__82 __pyx_mstate_global->__pyx_tuple__82 -#define __pyx_tuple__85 __pyx_mstate_global->__pyx_tuple__85 -#define __pyx_tuple__87 __pyx_mstate_global->__pyx_tuple__87 -#define __pyx_tuple__89 __pyx_mstate_global->__pyx_tuple__89 -#define __pyx_tuple__92 __pyx_mstate_global->__pyx_tuple__92 -#define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43 -#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45 -#define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47 -#define __pyx_codeobj__48 __pyx_mstate_global->__pyx_codeobj__48 -#define __pyx_codeobj__50 __pyx_mstate_global->__pyx_codeobj__50 -#define __pyx_codeobj__52 __pyx_mstate_global->__pyx_codeobj__52 -#define __pyx_codeobj__54 __pyx_mstate_global->__pyx_codeobj__54 -#define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56 -#define __pyx_codeobj__58 __pyx_mstate_global->__pyx_codeobj__58 -#define __pyx_codeobj__61 __pyx_mstate_global->__pyx_codeobj__61 -#define __pyx_codeobj__62 __pyx_mstate_global->__pyx_codeobj__62 -#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64 -#define __pyx_codeobj__67 __pyx_mstate_global->__pyx_codeobj__67 -#define __pyx_codeobj__69 __pyx_mstate_global->__pyx_codeobj__69 -#define __pyx_codeobj__71 __pyx_mstate_global->__pyx_codeobj__71 -#define __pyx_codeobj__72 __pyx_mstate_global->__pyx_codeobj__72 -#define __pyx_codeobj__74 __pyx_mstate_global->__pyx_codeobj__74 -#define __pyx_codeobj__76 __pyx_mstate_global->__pyx_codeobj__76 -#define __pyx_codeobj__78 __pyx_mstate_global->__pyx_codeobj__78 -#define __pyx_codeobj__81 __pyx_mstate_global->__pyx_codeobj__81 -#define __pyx_codeobj__83 __pyx_mstate_global->__pyx_codeobj__83 -#define __pyx_codeobj__84 __pyx_mstate_global->__pyx_codeobj__84 -#define __pyx_codeobj__86 __pyx_mstate_global->__pyx_codeobj__86 -#define __pyx_codeobj__88 __pyx_mstate_global->__pyx_codeobj__88 -#define __pyx_codeobj__90 __pyx_mstate_global->__pyx_codeobj__90 -#define __pyx_codeobj__91 __pyx_mstate_global->__pyx_codeobj__91 -#define __pyx_codeobj__93 __pyx_mstate_global->__pyx_codeobj__93 -/* #### Code section: module_code ### */ - -/* "carray.to_py":114 - * - * @cname("__Pyx_carray_to_py_int") - * cdef inline list __Pyx_carray_to_py_int(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< - * cdef size_t i - * cdef object value - */ - -static CYTHON_INLINE PyObject *__Pyx_carray_to_py_int(int *__pyx_v_v, Py_ssize_t __pyx_v_length) { - size_t __pyx_v_i; - PyObject *__pyx_v_value = 0; - PyObject *__pyx_v_l = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - size_t __pyx_t_2; - size_t __pyx_t_3; - size_t __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_carray_to_py_int", 1); - - /* "carray.to_py":117 - * cdef size_t i - * cdef object value - * l = PyList_New(length) # <<<<<<<<<<<<<< - * for i in range(length): - * value = v[i] - */ - __pyx_t_1 = PyList_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_l = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "carray.to_py":118 - * cdef object value - * l = PyList_New(length) - * for i in range(length): # <<<<<<<<<<<<<< - * value = v[i] - * Py_INCREF(value) - */ - __pyx_t_2 = ((size_t)__pyx_v_length); - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "carray.to_py":119 - * l = PyList_New(length) - * for i in range(length): - * value = v[i] # <<<<<<<<<<<<<< - * Py_INCREF(value) - * PyList_SET_ITEM(l, i, value) - */ - __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); - __pyx_t_1 = 0; - - /* "carray.to_py":120 - * for i in range(length): - * value = v[i] - * Py_INCREF(value) # <<<<<<<<<<<<<< - * PyList_SET_ITEM(l, i, value) - * return l - */ - Py_INCREF(__pyx_v_value); - - /* "carray.to_py":121 - * value = v[i] - * Py_INCREF(value) - * PyList_SET_ITEM(l, i, value) # <<<<<<<<<<<<<< - * return l - * - */ - PyList_SET_ITEM(__pyx_v_l, __pyx_v_i, __pyx_v_value); - } - - /* "carray.to_py":122 - * Py_INCREF(value) - * PyList_SET_ITEM(l, i, value) - * return l # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_l); - __pyx_r = __pyx_v_l; - goto __pyx_L0; - - /* "carray.to_py":114 - * - * @cname("__Pyx_carray_to_py_int") - * cdef inline list __Pyx_carray_to_py_int(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< - * cdef size_t i - * cdef object value - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_py_int", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XDECREF(__pyx_v_l); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "carray.to_py":126 - * - * @cname("__Pyx_carray_to_tuple_int") - * cdef inline tuple __Pyx_carray_to_tuple_int(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< - * cdef size_t i - * cdef object value - */ - -static CYTHON_INLINE PyObject *__Pyx_carray_to_tuple_int(int *__pyx_v_v, Py_ssize_t __pyx_v_length) { - size_t __pyx_v_i; - PyObject *__pyx_v_value = 0; - PyObject *__pyx_v_t = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - size_t __pyx_t_2; - size_t __pyx_t_3; - size_t __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_carray_to_tuple_int", 1); - - /* "carray.to_py":129 - * cdef size_t i - * cdef object value - * t = PyTuple_New(length) # <<<<<<<<<<<<<< - * for i in range(length): - * value = v[i] - */ - __pyx_t_1 = PyTuple_New(__pyx_v_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 129, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_t = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "carray.to_py":130 - * cdef object value - * t = PyTuple_New(length) - * for i in range(length): # <<<<<<<<<<<<<< - * value = v[i] - * Py_INCREF(value) - */ - __pyx_t_2 = ((size_t)__pyx_v_length); - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "carray.to_py":131 - * t = PyTuple_New(length) - * for i in range(length): - * value = v[i] # <<<<<<<<<<<<<< - * Py_INCREF(value) - * PyTuple_SET_ITEM(t, i, value) - */ - __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 131, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1); - __pyx_t_1 = 0; - - /* "carray.to_py":132 - * for i in range(length): - * value = v[i] - * Py_INCREF(value) # <<<<<<<<<<<<<< - * PyTuple_SET_ITEM(t, i, value) - * return t - */ - Py_INCREF(__pyx_v_value); - - /* "carray.to_py":133 - * value = v[i] - * Py_INCREF(value) - * PyTuple_SET_ITEM(t, i, value) # <<<<<<<<<<<<<< - * return t - */ - PyTuple_SET_ITEM(__pyx_v_t, __pyx_v_i, __pyx_v_value); - } - - /* "carray.to_py":134 - * Py_INCREF(value) - * PyTuple_SET_ITEM(t, i, value) - * return t # <<<<<<<<<<<<<< - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_t); - __pyx_r = __pyx_v_t; - goto __pyx_L0; - - /* "carray.to_py":126 - * - * @cname("__Pyx_carray_to_tuple_int") - * cdef inline tuple __Pyx_carray_to_tuple_int(base_type *v, Py_ssize_t length): # <<<<<<<<<<<<<< - * cdef size_t i - * cdef object value - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("carray.to_py.__Pyx_carray_to_tuple_int", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_value); - __Pyx_XDECREF(__pyx_v_t); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":131 - * cdef bint dtype_is_object - * - * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< - * mode="c", bint allocate_buffer=True): - * - */ - -/* Python wrapper */ -static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_shape = 0; - Py_ssize_t __pyx_v_itemsize; - PyObject *__pyx_v_format = 0; - PyObject *__pyx_v_mode = 0; - int __pyx_v_allocate_buffer; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[5] = {0,0,0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shape,&__pyx_n_s_itemsize,&__pyx_n_s_format,&__pyx_n_s_mode,&__pyx_n_s_allocate_buffer,0}; - values[3] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_n_s_c)); - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shape)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_itemsize)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(1, 131, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_format)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(1, 131, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_mode); - if (value) { values[3] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_allocate_buffer); - if (value) { values[4] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(1, 131, __pyx_L3_error) - } - } else { - switch (__pyx_nargs) { - case 5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); - values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_shape = ((PyObject*)values[0]); - __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error) - __pyx_v_format = values[2]; - __pyx_v_mode = values[3]; - if (values[4]) { - __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 132, __pyx_L3_error) - } else { - - /* "View.MemoryView":132 - * - * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, - * mode="c", bint allocate_buffer=True): # <<<<<<<<<<<<<< - * - * cdef int idx - */ - __pyx_v_allocate_buffer = ((int)1); - } - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, __pyx_nargs); __PYX_ERR(1, 131, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) __PYX_ERR(1, 131, __pyx_L1_error) - if (unlikely(((PyObject *)__pyx_v_format) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); __PYX_ERR(1, 131, __pyx_L1_error) - } - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer); - - /* "View.MemoryView":131 - * cdef bint dtype_is_object - * - * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< - * mode="c", bint allocate_buffer=True): - * - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = -1; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer) { - int __pyx_v_idx; - Py_ssize_t __pyx_v_dim; - char __pyx_v_order; - int __pyx_r; - __Pyx_RefNannyDeclarations - Py_ssize_t __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - char *__pyx_t_8; - Py_ssize_t __pyx_t_9; - Py_UCS4 __pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 0); - __Pyx_INCREF(__pyx_v_format); - - /* "View.MemoryView":137 - * cdef Py_ssize_t dim - * - * self.ndim = len(shape) # <<<<<<<<<<<<<< - * self.itemsize = itemsize - * - */ - if (unlikely(__pyx_v_shape == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 137, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 137, __pyx_L1_error) - __pyx_v_self->ndim = ((int)__pyx_t_1); - - /* "View.MemoryView":138 - * - * self.ndim = len(shape) - * self.itemsize = itemsize # <<<<<<<<<<<<<< - * - * if not self.ndim: - */ - __pyx_v_self->itemsize = __pyx_v_itemsize; - - /* "View.MemoryView":140 - * self.itemsize = itemsize - * - * if not self.ndim: # <<<<<<<<<<<<<< - * raise ValueError, "Empty shape tuple for cython.array" - * - */ - __pyx_t_2 = (!(__pyx_v_self->ndim != 0)); - if (unlikely(__pyx_t_2)) { - - /* "View.MemoryView":141 - * - * if not self.ndim: - * raise ValueError, "Empty shape tuple for cython.array" # <<<<<<<<<<<<<< - * - * if itemsize <= 0: - */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Empty_shape_tuple_for_cython_arr, 0, 0); - __PYX_ERR(1, 141, __pyx_L1_error) - - /* "View.MemoryView":140 - * self.itemsize = itemsize - * - * if not self.ndim: # <<<<<<<<<<<<<< - * raise ValueError, "Empty shape tuple for cython.array" - * - */ - } - - /* "View.MemoryView":143 - * raise ValueError, "Empty shape tuple for cython.array" - * - * if itemsize <= 0: # <<<<<<<<<<<<<< - * raise ValueError, "itemsize <= 0 for cython.array" - * - */ - __pyx_t_2 = (__pyx_v_itemsize <= 0); - if (unlikely(__pyx_t_2)) { - - /* "View.MemoryView":144 - * - * if itemsize <= 0: - * raise ValueError, "itemsize <= 0 for cython.array" # <<<<<<<<<<<<<< - * - * if not isinstance(format, bytes): - */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_itemsize_0_for_cython_array, 0, 0); - __PYX_ERR(1, 144, __pyx_L1_error) - - /* "View.MemoryView":143 - * raise ValueError, "Empty shape tuple for cython.array" - * - * if itemsize <= 0: # <<<<<<<<<<<<<< - * raise ValueError, "itemsize <= 0 for cython.array" - * - */ - } - - /* "View.MemoryView":146 - * raise ValueError, "itemsize <= 0 for cython.array" - * - * if not isinstance(format, bytes): # <<<<<<<<<<<<<< - * format = format.encode('ASCII') - * self._format = format # keep a reference to the byte string - */ - __pyx_t_2 = PyBytes_Check(__pyx_v_format); - __pyx_t_3 = (!__pyx_t_2); - if (__pyx_t_3) { - - /* "View.MemoryView":147 - * - * if not isinstance(format, bytes): - * format = format.encode('ASCII') # <<<<<<<<<<<<<< - * self._format = format # keep a reference to the byte string - * self.format = self._format - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - __pyx_t_7 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_7 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_n_s_ASCII}; - __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 147, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_4); - __pyx_t_4 = 0; - - /* "View.MemoryView":146 - * raise ValueError, "itemsize <= 0 for cython.array" - * - * if not isinstance(format, bytes): # <<<<<<<<<<<<<< - * format = format.encode('ASCII') - * self._format = format # keep a reference to the byte string - */ - } - - /* "View.MemoryView":148 - * if not isinstance(format, bytes): - * format = format.encode('ASCII') - * self._format = format # keep a reference to the byte string # <<<<<<<<<<<<<< - * self.format = self._format - * - */ - if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_format))) __PYX_ERR(1, 148, __pyx_L1_error) - __pyx_t_4 = __pyx_v_format; - __Pyx_INCREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __Pyx_GOTREF(__pyx_v_self->_format); - __Pyx_DECREF(__pyx_v_self->_format); - __pyx_v_self->_format = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; - - /* "View.MemoryView":149 - * format = format.encode('ASCII') - * self._format = format # keep a reference to the byte string - * self.format = self._format # <<<<<<<<<<<<<< - * - * - */ - if (unlikely(__pyx_v_self->_format == Py_None)) { - PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(1, 149, __pyx_L1_error) - } - __pyx_t_8 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(1, 149, __pyx_L1_error) - __pyx_v_self->format = __pyx_t_8; - - /* "View.MemoryView":152 - * - * - * self._shape = PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2) # <<<<<<<<<<<<<< - * self._strides = self._shape + self.ndim - * - */ - __pyx_v_self->_shape = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * __pyx_v_self->ndim) * 2))); - - /* "View.MemoryView":153 - * - * self._shape = PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2) - * self._strides = self._shape + self.ndim # <<<<<<<<<<<<<< - * - * if not self._shape: - */ - __pyx_v_self->_strides = (__pyx_v_self->_shape + __pyx_v_self->ndim); - - /* "View.MemoryView":155 - * self._strides = self._shape + self.ndim - * - * if not self._shape: # <<<<<<<<<<<<<< - * raise MemoryError, "unable to allocate shape and strides." - * - */ - __pyx_t_3 = (!(__pyx_v_self->_shape != 0)); - if (unlikely(__pyx_t_3)) { - - /* "View.MemoryView":156 - * - * if not self._shape: - * raise MemoryError, "unable to allocate shape and strides." # <<<<<<<<<<<<<< - * - * - */ - __Pyx_Raise(__pyx_builtin_MemoryError, __pyx_kp_s_unable_to_allocate_shape_and_str, 0, 0); - __PYX_ERR(1, 156, __pyx_L1_error) - - /* "View.MemoryView":155 - * self._strides = self._shape + self.ndim - * - * if not self._shape: # <<<<<<<<<<<<<< - * raise MemoryError, "unable to allocate shape and strides." - * - */ - } - - /* "View.MemoryView":159 - * - * - * for idx, dim in enumerate(shape): # <<<<<<<<<<<<<< - * if dim <= 0: - * raise ValueError, f"Invalid shape in axis {idx}: {dim}." - */ - __pyx_t_7 = 0; - __pyx_t_4 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_4); - __pyx_t_1 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 159, __pyx_L1_error) - #endif - if (__pyx_t_1 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(1, 159, __pyx_L1_error) - #else - __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 159, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 159, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_dim = __pyx_t_9; - __pyx_v_idx = __pyx_t_7; - __pyx_t_7 = (__pyx_t_7 + 1); - - /* "View.MemoryView":160 - * - * for idx, dim in enumerate(shape): - * if dim <= 0: # <<<<<<<<<<<<<< - * raise ValueError, f"Invalid shape in axis {idx}: {dim}." - * self._shape[idx] = dim - */ - __pyx_t_3 = (__pyx_v_dim <= 0); - if (unlikely(__pyx_t_3)) { - - /* "View.MemoryView":161 - * for idx, dim in enumerate(shape): - * if dim <= 0: - * raise ValueError, f"Invalid shape in axis {idx}: {dim}." # <<<<<<<<<<<<<< - * self._shape[idx] = dim - * - */ - __pyx_t_5 = PyTuple_New(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_9 = 0; - __pyx_t_10 = 127; - __Pyx_INCREF(__pyx_kp_u_Invalid_shape_in_axis); - __pyx_t_9 += 22; - __Pyx_GIVEREF(__pyx_kp_u_Invalid_shape_in_axis); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Invalid_shape_in_axis); - __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); - __pyx_t_6 = 0; - __Pyx_INCREF(__pyx_kp_u_); - __pyx_t_9 += 2; - __Pyx_GIVEREF(__pyx_kp_u_); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_); - __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6); - __Pyx_GIVEREF(__pyx_t_6); - PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_6); - __pyx_t_6 = 0; - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_9 += 1; - __Pyx_GIVEREF(__pyx_kp_u__2); - PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_kp_u__2); - __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_6, 0, 0); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __PYX_ERR(1, 161, __pyx_L1_error) - - /* "View.MemoryView":160 - * - * for idx, dim in enumerate(shape): - * if dim <= 0: # <<<<<<<<<<<<<< - * raise ValueError, f"Invalid shape in axis {idx}: {dim}." - * self._shape[idx] = dim - */ - } - - /* "View.MemoryView":162 - * if dim <= 0: - * raise ValueError, f"Invalid shape in axis {idx}: {dim}." - * self._shape[idx] = dim # <<<<<<<<<<<<<< - * - * cdef char order - */ - (__pyx_v_self->_shape[__pyx_v_idx]) = __pyx_v_dim; - - /* "View.MemoryView":159 - * - * - * for idx, dim in enumerate(shape): # <<<<<<<<<<<<<< - * if dim <= 0: - * raise ValueError, f"Invalid shape in axis {idx}: {dim}." - */ - } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "View.MemoryView":165 - * - * cdef char order - * if mode == 'c': # <<<<<<<<<<<<<< - * order = b'C' - * self.mode = u'c' - */ - __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 165, __pyx_L1_error) - if (__pyx_t_3) { - - /* "View.MemoryView":166 - * cdef char order - * if mode == 'c': - * order = b'C' # <<<<<<<<<<<<<< - * self.mode = u'c' - * elif mode == 'fortran': - */ - __pyx_v_order = 'C'; - - /* "View.MemoryView":167 - * if mode == 'c': - * order = b'C' - * self.mode = u'c' # <<<<<<<<<<<<<< - * elif mode == 'fortran': - * order = b'F' - */ - __Pyx_INCREF(__pyx_n_u_c); - __Pyx_GIVEREF(__pyx_n_u_c); - __Pyx_GOTREF(__pyx_v_self->mode); - __Pyx_DECREF(__pyx_v_self->mode); - __pyx_v_self->mode = __pyx_n_u_c; - - /* "View.MemoryView":165 - * - * cdef char order - * if mode == 'c': # <<<<<<<<<<<<<< - * order = b'C' - * self.mode = u'c' - */ - goto __pyx_L11; - } - - /* "View.MemoryView":168 - * order = b'C' - * self.mode = u'c' - * elif mode == 'fortran': # <<<<<<<<<<<<<< - * order = b'F' - * self.mode = u'fortran' - */ - __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 168, __pyx_L1_error) - if (likely(__pyx_t_3)) { - - /* "View.MemoryView":169 - * self.mode = u'c' - * elif mode == 'fortran': - * order = b'F' # <<<<<<<<<<<<<< - * self.mode = u'fortran' - * else: - */ - __pyx_v_order = 'F'; - - /* "View.MemoryView":170 - * elif mode == 'fortran': - * order = b'F' - * self.mode = u'fortran' # <<<<<<<<<<<<<< - * else: - * raise ValueError, f"Invalid mode, expected 'c' or 'fortran', got {mode}" - */ - __Pyx_INCREF(__pyx_n_u_fortran); - __Pyx_GIVEREF(__pyx_n_u_fortran); - __Pyx_GOTREF(__pyx_v_self->mode); - __Pyx_DECREF(__pyx_v_self->mode); - __pyx_v_self->mode = __pyx_n_u_fortran; - - /* "View.MemoryView":168 - * order = b'C' - * self.mode = u'c' - * elif mode == 'fortran': # <<<<<<<<<<<<<< - * order = b'F' - * self.mode = u'fortran' - */ - goto __pyx_L11; - } - - /* "View.MemoryView":172 - * self.mode = u'fortran' - * else: - * raise ValueError, f"Invalid mode, expected 'c' or 'fortran', got {mode}" # <<<<<<<<<<<<<< - * - * self.len = fill_contig_strides_array(self._shape, self._strides, itemsize, self.ndim, order) - */ - /*else*/ { - __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_mode, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_mode_expected_c_or_fortr, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 172, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_6, 0, 0); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __PYX_ERR(1, 172, __pyx_L1_error) - } - __pyx_L11:; - - /* "View.MemoryView":174 - * raise ValueError, f"Invalid mode, expected 'c' or 'fortran', got {mode}" - * - * self.len = fill_contig_strides_array(self._shape, self._strides, itemsize, self.ndim, order) # <<<<<<<<<<<<<< - * - * self.free_data = allocate_buffer - */ - __pyx_v_self->len = __pyx_fill_contig_strides_array(__pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_itemsize, __pyx_v_self->ndim, __pyx_v_order); - - /* "View.MemoryView":176 - * self.len = fill_contig_strides_array(self._shape, self._strides, itemsize, self.ndim, order) - * - * self.free_data = allocate_buffer # <<<<<<<<<<<<<< - * self.dtype_is_object = format == b'O' - * - */ - __pyx_v_self->free_data = __pyx_v_allocate_buffer; - - /* "View.MemoryView":177 - * - * self.free_data = allocate_buffer - * self.dtype_is_object = format == b'O' # <<<<<<<<<<<<<< - * - * if allocate_buffer: - */ - __pyx_t_6 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 177, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 177, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_self->dtype_is_object = __pyx_t_3; - - /* "View.MemoryView":179 - * self.dtype_is_object = format == b'O' - * - * if allocate_buffer: # <<<<<<<<<<<<<< - * _allocate_buffer(self) - * - */ - if (__pyx_v_allocate_buffer) { - - /* "View.MemoryView":180 - * - * if allocate_buffer: - * _allocate_buffer(self) # <<<<<<<<<<<<<< - * - * @cname('getbuffer') - */ - __pyx_t_7 = __pyx_array_allocate_buffer(__pyx_v_self); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(1, 180, __pyx_L1_error) - - /* "View.MemoryView":179 - * self.dtype_is_object = format == b'O' - * - * if allocate_buffer: # <<<<<<<<<<<<<< - * _allocate_buffer(self) - * - */ - } - - /* "View.MemoryView":131 - * cdef bint dtype_is_object - * - * def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None, # <<<<<<<<<<<<<< - * mode="c", bint allocate_buffer=True): - * - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_format); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":182 - * _allocate_buffer(self) - * - * @cname('getbuffer') # <<<<<<<<<<<<<< - * def __getbuffer__(self, Py_buffer *info, int flags): - * cdef int bufmode = -1 - */ - -/* Python wrapper */ -CYTHON_UNUSED static int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ -CYTHON_UNUSED static int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(((struct __pyx_array_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { - int __pyx_v_bufmode; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - char *__pyx_t_2; - Py_ssize_t __pyx_t_3; - int __pyx_t_4; - Py_ssize_t *__pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - if (unlikely(__pyx_v_info == NULL)) { - PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); - return -1; - } - __Pyx_RefNannySetupContext("__getbuffer__", 0); - __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(__pyx_v_info->obj); - - /* "View.MemoryView":184 - * @cname('getbuffer') - * def __getbuffer__(self, Py_buffer *info, int flags): - * cdef int bufmode = -1 # <<<<<<<<<<<<<< - * if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS): - * if self.mode == u"c": - */ - __pyx_v_bufmode = -1; - - /* "View.MemoryView":185 - * def __getbuffer__(self, Py_buffer *info, int flags): - * cdef int bufmode = -1 - * if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS): # <<<<<<<<<<<<<< - * if self.mode == u"c": - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - */ - __pyx_t_1 = ((__pyx_v_flags & ((PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS) | PyBUF_ANY_CONTIGUOUS)) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":186 - * cdef int bufmode = -1 - * if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS): - * if self.mode == u"c": # <<<<<<<<<<<<<< - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * elif self.mode == u"fortran": - */ - __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 186, __pyx_L1_error) - if (__pyx_t_1) { - - /* "View.MemoryView":187 - * if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS): - * if self.mode == u"c": - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS # <<<<<<<<<<<<<< - * elif self.mode == u"fortran": - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - */ - __pyx_v_bufmode = (PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS); - - /* "View.MemoryView":186 - * cdef int bufmode = -1 - * if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS): - * if self.mode == u"c": # <<<<<<<<<<<<<< - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * elif self.mode == u"fortran": - */ - goto __pyx_L4; - } - - /* "View.MemoryView":188 - * if self.mode == u"c": - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * elif self.mode == u"fortran": # <<<<<<<<<<<<<< - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * if not (flags & bufmode): - */ - __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 188, __pyx_L1_error) - if (__pyx_t_1) { - - /* "View.MemoryView":189 - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * elif self.mode == u"fortran": - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS # <<<<<<<<<<<<<< - * if not (flags & bufmode): - * raise ValueError, "Can only create a buffer that is contiguous in memory." - */ - __pyx_v_bufmode = (PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS); - - /* "View.MemoryView":188 - * if self.mode == u"c": - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * elif self.mode == u"fortran": # <<<<<<<<<<<<<< - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * if not (flags & bufmode): - */ - } - __pyx_L4:; - - /* "View.MemoryView":190 - * elif self.mode == u"fortran": - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * if not (flags & bufmode): # <<<<<<<<<<<<<< - * raise ValueError, "Can only create a buffer that is contiguous in memory." - * info.buf = self.data - */ - __pyx_t_1 = (!((__pyx_v_flags & __pyx_v_bufmode) != 0)); - if (unlikely(__pyx_t_1)) { - - /* "View.MemoryView":191 - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * if not (flags & bufmode): - * raise ValueError, "Can only create a buffer that is contiguous in memory." # <<<<<<<<<<<<<< - * info.buf = self.data - * info.len = self.len - */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Can_only_create_a_buffer_that_is, 0, 0); - __PYX_ERR(1, 191, __pyx_L1_error) - - /* "View.MemoryView":190 - * elif self.mode == u"fortran": - * bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - * if not (flags & bufmode): # <<<<<<<<<<<<<< - * raise ValueError, "Can only create a buffer that is contiguous in memory." - * info.buf = self.data - */ - } - - /* "View.MemoryView":185 - * def __getbuffer__(self, Py_buffer *info, int flags): - * cdef int bufmode = -1 - * if flags & (PyBUF_C_CONTIGUOUS | PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS): # <<<<<<<<<<<<<< - * if self.mode == u"c": - * bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS - */ - } - - /* "View.MemoryView":192 - * if not (flags & bufmode): - * raise ValueError, "Can only create a buffer that is contiguous in memory." - * info.buf = self.data # <<<<<<<<<<<<<< - * info.len = self.len - * - */ - __pyx_t_2 = __pyx_v_self->data; - __pyx_v_info->buf = __pyx_t_2; - - /* "View.MemoryView":193 - * raise ValueError, "Can only create a buffer that is contiguous in memory." - * info.buf = self.data - * info.len = self.len # <<<<<<<<<<<<<< - * - * if flags & PyBUF_STRIDES: - */ - __pyx_t_3 = __pyx_v_self->len; - __pyx_v_info->len = __pyx_t_3; - - /* "View.MemoryView":195 - * info.len = self.len - * - * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< - * info.ndim = self.ndim - * info.shape = self._shape - */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":196 - * - * if flags & PyBUF_STRIDES: - * info.ndim = self.ndim # <<<<<<<<<<<<<< - * info.shape = self._shape - * info.strides = self._strides - */ - __pyx_t_4 = __pyx_v_self->ndim; - __pyx_v_info->ndim = __pyx_t_4; - - /* "View.MemoryView":197 - * if flags & PyBUF_STRIDES: - * info.ndim = self.ndim - * info.shape = self._shape # <<<<<<<<<<<<<< - * info.strides = self._strides - * else: - */ - __pyx_t_5 = __pyx_v_self->_shape; - __pyx_v_info->shape = __pyx_t_5; - - /* "View.MemoryView":198 - * info.ndim = self.ndim - * info.shape = self._shape - * info.strides = self._strides # <<<<<<<<<<<<<< - * else: - * info.ndim = 1 - */ - __pyx_t_5 = __pyx_v_self->_strides; - __pyx_v_info->strides = __pyx_t_5; - - /* "View.MemoryView":195 - * info.len = self.len - * - * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< - * info.ndim = self.ndim - * info.shape = self._shape - */ - goto __pyx_L6; - } - - /* "View.MemoryView":200 - * info.strides = self._strides - * else: - * info.ndim = 1 # <<<<<<<<<<<<<< - * info.shape = &self.len if flags & PyBUF_ND else NULL - * info.strides = NULL - */ - /*else*/ { - __pyx_v_info->ndim = 1; - - /* "View.MemoryView":201 - * else: - * info.ndim = 1 - * info.shape = &self.len if flags & PyBUF_ND else NULL # <<<<<<<<<<<<<< - * info.strides = NULL - * - */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0); - if (__pyx_t_1) { - __pyx_t_5 = (&__pyx_v_self->len); - } else { - __pyx_t_5 = NULL; - } - __pyx_v_info->shape = __pyx_t_5; - - /* "View.MemoryView":202 - * info.ndim = 1 - * info.shape = &self.len if flags & PyBUF_ND else NULL - * info.strides = NULL # <<<<<<<<<<<<<< - * - * info.suboffsets = NULL - */ - __pyx_v_info->strides = NULL; - } - __pyx_L6:; - - /* "View.MemoryView":204 - * info.strides = NULL - * - * info.suboffsets = NULL # <<<<<<<<<<<<<< - * info.itemsize = self.itemsize - * info.readonly = 0 - */ - __pyx_v_info->suboffsets = NULL; - - /* "View.MemoryView":205 - * - * info.suboffsets = NULL - * info.itemsize = self.itemsize # <<<<<<<<<<<<<< - * info.readonly = 0 - * info.format = self.format if flags & PyBUF_FORMAT else NULL - */ - __pyx_t_3 = __pyx_v_self->itemsize; - __pyx_v_info->itemsize = __pyx_t_3; - - /* "View.MemoryView":206 - * info.suboffsets = NULL - * info.itemsize = self.itemsize - * info.readonly = 0 # <<<<<<<<<<<<<< - * info.format = self.format if flags & PyBUF_FORMAT else NULL - * info.obj = self - */ - __pyx_v_info->readonly = 0; - - /* "View.MemoryView":207 - * info.itemsize = self.itemsize - * info.readonly = 0 - * info.format = self.format if flags & PyBUF_FORMAT else NULL # <<<<<<<<<<<<<< - * info.obj = self - * - */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); - if (__pyx_t_1) { - __pyx_t_2 = __pyx_v_self->format; - } else { - __pyx_t_2 = NULL; - } - __pyx_v_info->format = __pyx_t_2; - - /* "View.MemoryView":208 - * info.readonly = 0 - * info.format = self.format if flags & PyBUF_FORMAT else NULL - * info.obj = self # <<<<<<<<<<<<<< - * - * def __dealloc__(array self): - */ - __Pyx_INCREF((PyObject *)__pyx_v_self); - __Pyx_GIVEREF((PyObject *)__pyx_v_self); - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); - __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - - /* "View.MemoryView":182 - * _allocate_buffer(self) - * - * @cname('getbuffer') # <<<<<<<<<<<<<< - * def __getbuffer__(self, Py_buffer *info, int flags): - * cdef int bufmode = -1 - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView.array.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - if (__pyx_v_info->obj != NULL) { - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; - } - goto __pyx_L2; - __pyx_L0:; - if (__pyx_v_info->obj == Py_None) { - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; - } - __pyx_L2:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":210 - * info.obj = self - * - * def __dealloc__(array self): # <<<<<<<<<<<<<< - * if self.callback_free_data != NULL: - * self.callback_free_data(self.data) - */ - -/* Python wrapper */ -static void __pyx_array___dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_array___dealloc__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(((struct __pyx_array_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self) { - int __pyx_t_1; - int __pyx_t_2; - - /* "View.MemoryView":211 - * - * def __dealloc__(array self): - * if self.callback_free_data != NULL: # <<<<<<<<<<<<<< - * self.callback_free_data(self.data) - * elif self.free_data and self.data is not NULL: - */ - __pyx_t_1 = (__pyx_v_self->callback_free_data != NULL); - if (__pyx_t_1) { - - /* "View.MemoryView":212 - * def __dealloc__(array self): - * if self.callback_free_data != NULL: - * self.callback_free_data(self.data) # <<<<<<<<<<<<<< - * elif self.free_data and self.data is not NULL: - * if self.dtype_is_object: - */ - __pyx_v_self->callback_free_data(__pyx_v_self->data); - - /* "View.MemoryView":211 - * - * def __dealloc__(array self): - * if self.callback_free_data != NULL: # <<<<<<<<<<<<<< - * self.callback_free_data(self.data) - * elif self.free_data and self.data is not NULL: - */ - goto __pyx_L3; - } - - /* "View.MemoryView":213 - * if self.callback_free_data != NULL: - * self.callback_free_data(self.data) - * elif self.free_data and self.data is not NULL: # <<<<<<<<<<<<<< - * if self.dtype_is_object: - * refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False) - */ - if (__pyx_v_self->free_data) { - } else { - __pyx_t_1 = __pyx_v_self->free_data; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = (__pyx_v_self->data != NULL); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "View.MemoryView":214 - * self.callback_free_data(self.data) - * elif self.free_data and self.data is not NULL: - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False) - * free(self.data) - */ - if (__pyx_v_self->dtype_is_object) { - - /* "View.MemoryView":215 - * elif self.free_data and self.data is not NULL: - * if self.dtype_is_object: - * refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False) # <<<<<<<<<<<<<< - * free(self.data) - * PyObject_Free(self._shape) - */ - __pyx_memoryview_refcount_objects_in_slice(__pyx_v_self->data, __pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_self->ndim, 0); - - /* "View.MemoryView":214 - * self.callback_free_data(self.data) - * elif self.free_data and self.data is not NULL: - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False) - * free(self.data) - */ - } - - /* "View.MemoryView":216 - * if self.dtype_is_object: - * refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False) - * free(self.data) # <<<<<<<<<<<<<< - * PyObject_Free(self._shape) - * - */ - free(__pyx_v_self->data); - - /* "View.MemoryView":213 - * if self.callback_free_data != NULL: - * self.callback_free_data(self.data) - * elif self.free_data and self.data is not NULL: # <<<<<<<<<<<<<< - * if self.dtype_is_object: - * refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False) - */ - } - __pyx_L3:; - - /* "View.MemoryView":217 - * refcount_objects_in_slice(self.data, self._shape, self._strides, self.ndim, inc=False) - * free(self.data) - * PyObject_Free(self._shape) # <<<<<<<<<<<<<< - * - * @property - */ - PyObject_Free(__pyx_v_self->_shape); - - /* "View.MemoryView":210 - * info.obj = self - * - * def __dealloc__(array self): # <<<<<<<<<<<<<< - * if self.callback_free_data != NULL: - * self.callback_free_data(self.data) - */ - - /* function exit code */ -} - -/* "View.MemoryView":219 - * PyObject_Free(self._shape) - * - * @property # <<<<<<<<<<<<<< - * def memview(self): - * return self.get_memview() - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_5array_7memview___get__(((struct __pyx_array_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":221 - * @property - * def memview(self): - * return self.get_memview() # <<<<<<<<<<<<<< - * - * @cname('get_memview') - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_array *)__pyx_v_self->__pyx_vtab)->get_memview(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 221, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "View.MemoryView":219 - * PyObject_Free(self._shape) - * - * @property # <<<<<<<<<<<<<< - * def memview(self): - * return self.get_memview() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("View.MemoryView.array.memview.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":224 - * - * @cname('get_memview') - * cdef get_memview(self): # <<<<<<<<<<<<<< - * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE - * return memoryview(self, flags, self.dtype_is_object) - */ - -static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { - int __pyx_v_flags; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_memview", 1); - - /* "View.MemoryView":225 - * @cname('get_memview') - * cdef get_memview(self): - * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE # <<<<<<<<<<<<<< - * return memoryview(self, flags, self.dtype_is_object) - * - */ - __pyx_v_flags = ((PyBUF_ANY_CONTIGUOUS | PyBUF_FORMAT) | PyBUF_WRITABLE); - - /* "View.MemoryView":226 - * cdef get_memview(self): - * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE - * return memoryview(self, flags, self.dtype_is_object) # <<<<<<<<<<<<<< - * - * def __len__(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF((PyObject *)__pyx_v_self); - __Pyx_GIVEREF((PyObject *)__pyx_v_self); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self))) __PYX_ERR(1, 226, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 226, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(1, 226, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 226, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":224 - * - * @cname('get_memview') - * cdef get_memview(self): # <<<<<<<<<<<<<< - * flags = PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE - * return memoryview(self, flags, self.dtype_is_object) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("View.MemoryView.array.get_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":228 - * return memoryview(self, flags, self.dtype_is_object) - * - * def __len__(self): # <<<<<<<<<<<<<< - * return self._shape[0] - * - */ - -/* Python wrapper */ -static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self); /*proto*/ -static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(((struct __pyx_array_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self) { - Py_ssize_t __pyx_r; - - /* "View.MemoryView":229 - * - * def __len__(self): - * return self._shape[0] # <<<<<<<<<<<<<< - * - * def __getattr__(self, attr): - */ - __pyx_r = (__pyx_v_self->_shape[0]); - goto __pyx_L0; - - /* "View.MemoryView":228 - * return memoryview(self, flags, self.dtype_is_object) - * - * def __len__(self): # <<<<<<<<<<<<<< - * return self._shape[0] - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":231 - * return self._shape[0] - * - * def __getattr__(self, attr): # <<<<<<<<<<<<<< - * return getattr(self.memview, attr) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr); /*proto*/ -static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_attr)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__getattr__", 1); - - /* "View.MemoryView":232 - * - * def __getattr__(self, attr): - * return getattr(self.memview, attr) # <<<<<<<<<<<<<< - * - * def __getitem__(self, item): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 232, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":231 - * return self._shape[0] - * - * def __getattr__(self, attr): # <<<<<<<<<<<<<< - * return getattr(self.memview, attr) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.array.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":234 - * return getattr(self.memview, attr) - * - * def __getitem__(self, item): # <<<<<<<<<<<<<< - * return self.memview[item] - * - */ - -/* Python wrapper */ -static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/ -static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__getitem__", 1); - - /* "View.MemoryView":235 - * - * def __getitem__(self, item): - * return self.memview[item] # <<<<<<<<<<<<<< - * - * def __setitem__(self, item, value): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 235, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 235, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":234 - * return getattr(self.memview, attr) - * - * def __getitem__(self, item): # <<<<<<<<<<<<<< - * return self.memview[item] - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.array.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":237 - * return self.memview[item] - * - * def __setitem__(self, item, value): # <<<<<<<<<<<<<< - * self.memview[item] = value - * - */ - -/* Python wrapper */ -static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setitem__", 1); - - /* "View.MemoryView":238 - * - * def __setitem__(self, item, value): - * self.memview[item] = value # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 238, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0))) __PYX_ERR(1, 238, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "View.MemoryView":237 - * return self.memview[item] - * - * def __setitem__(self, item, value): # <<<<<<<<<<<<<< - * self.memview[item] = value - * - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("View.MemoryView.array.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf___pyx_array___reduce_cython__(((struct __pyx_array_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView.array.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("View.MemoryView.array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf___pyx_array_2__setstate_cython__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView.array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":248 - * - * @cname("__pyx_array_allocate_buffer") - * cdef int _allocate_buffer(array self) except -1: # <<<<<<<<<<<<<< - * - * - */ - -static int __pyx_array_allocate_buffer(struct __pyx_array_obj *__pyx_v_self) { - Py_ssize_t __pyx_v_i; - PyObject **__pyx_v_p; - int __pyx_r; - int __pyx_t_1; - Py_ssize_t __pyx_t_2; - Py_ssize_t __pyx_t_3; - Py_ssize_t __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - - /* "View.MemoryView":254 - * cdef PyObject **p - * - * self.free_data = True # <<<<<<<<<<<<<< - * self.data = malloc(self.len) - * if not self.data: - */ - __pyx_v_self->free_data = 1; - - /* "View.MemoryView":255 - * - * self.free_data = True - * self.data = malloc(self.len) # <<<<<<<<<<<<<< - * if not self.data: - * raise MemoryError, "unable to allocate array data." - */ - __pyx_v_self->data = ((char *)malloc(__pyx_v_self->len)); - - /* "View.MemoryView":256 - * self.free_data = True - * self.data = malloc(self.len) - * if not self.data: # <<<<<<<<<<<<<< - * raise MemoryError, "unable to allocate array data." - * - */ - __pyx_t_1 = (!(__pyx_v_self->data != 0)); - if (unlikely(__pyx_t_1)) { - - /* "View.MemoryView":257 - * self.data = malloc(self.len) - * if not self.data: - * raise MemoryError, "unable to allocate array data." # <<<<<<<<<<<<<< - * - * if self.dtype_is_object: - */ - __Pyx_Raise(__pyx_builtin_MemoryError, __pyx_kp_s_unable_to_allocate_array_data, 0, 0); - __PYX_ERR(1, 257, __pyx_L1_error) - - /* "View.MemoryView":256 - * self.free_data = True - * self.data = malloc(self.len) - * if not self.data: # <<<<<<<<<<<<<< - * raise MemoryError, "unable to allocate array data." - * - */ - } - - /* "View.MemoryView":259 - * raise MemoryError, "unable to allocate array data." - * - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * p = self.data - * for i in range(self.len // self.itemsize): - */ - if (__pyx_v_self->dtype_is_object) { - - /* "View.MemoryView":260 - * - * if self.dtype_is_object: - * p = self.data # <<<<<<<<<<<<<< - * for i in range(self.len // self.itemsize): - * p[i] = Py_None - */ - __pyx_v_p = ((PyObject **)__pyx_v_self->data); - - /* "View.MemoryView":261 - * if self.dtype_is_object: - * p = self.data - * for i in range(self.len // self.itemsize): # <<<<<<<<<<<<<< - * p[i] = Py_None - * Py_INCREF(Py_None) - */ - if (unlikely(__pyx_v_self->itemsize == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(1, 261, __pyx_L1_error) - } - else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_self->itemsize == (Py_ssize_t)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) { - PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - __PYX_ERR(1, 261, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_self->itemsize); - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "View.MemoryView":262 - * p = self.data - * for i in range(self.len // self.itemsize): - * p[i] = Py_None # <<<<<<<<<<<<<< - * Py_INCREF(Py_None) - * return 0 - */ - (__pyx_v_p[__pyx_v_i]) = Py_None; - - /* "View.MemoryView":263 - * for i in range(self.len // self.itemsize): - * p[i] = Py_None - * Py_INCREF(Py_None) # <<<<<<<<<<<<<< - * return 0 - * - */ - Py_INCREF(Py_None); - } - - /* "View.MemoryView":259 - * raise MemoryError, "unable to allocate array data." - * - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * p = self.data - * for i in range(self.len // self.itemsize): - */ - } - - /* "View.MemoryView":264 - * p[i] = Py_None - * Py_INCREF(Py_None) - * return 0 # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "View.MemoryView":248 - * - * @cname("__pyx_array_allocate_buffer") - * cdef int _allocate_buffer(array self) except -1: # <<<<<<<<<<<<<< - * - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView._allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":268 - * - * @cname("__pyx_array_new") - * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, char *c_mode, char *buf): # <<<<<<<<<<<<<< - * cdef array result - * cdef str mode = "fortran" if c_mode[0] == b'f' else "c" # this often comes from a constant C string. - */ - -static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, char *__pyx_v_format, char *__pyx_v_c_mode, char *__pyx_v_buf) { - struct __pyx_array_obj *__pyx_v_result = 0; - PyObject *__pyx_v_mode = 0; - struct __pyx_array_obj *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("array_cwrapper", 1); - - /* "View.MemoryView":270 - * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, char *c_mode, char *buf): - * cdef array result - * cdef str mode = "fortran" if c_mode[0] == b'f' else "c" # this often comes from a constant C string. # <<<<<<<<<<<<<< - * - * if buf is NULL: - */ - __pyx_t_2 = ((__pyx_v_c_mode[0]) == 'f'); - if (__pyx_t_2) { - __Pyx_INCREF(__pyx_n_s_fortran); - __pyx_t_1 = __pyx_n_s_fortran; - } else { - __Pyx_INCREF(__pyx_n_s_c); - __pyx_t_1 = __pyx_n_s_c; - } - __pyx_v_mode = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "View.MemoryView":272 - * cdef str mode = "fortran" if c_mode[0] == b'f' else "c" # this often comes from a constant C string. - * - * if buf is NULL: # <<<<<<<<<<<<<< - * result = array.__new__(array, shape, itemsize, format, mode) - * else: - */ - __pyx_t_2 = (__pyx_v_buf == NULL); - if (__pyx_t_2) { - - /* "View.MemoryView":273 - * - * if buf is NULL: - * result = array.__new__(array, shape, itemsize, format, mode) # <<<<<<<<<<<<<< - * else: - * result = array.__new__(array, shape, itemsize, format, mode, allocate_buffer=False) - */ - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 273, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 273, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 273, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_shape); - __Pyx_GIVEREF(__pyx_v_shape); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape)) __PYX_ERR(1, 273, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(1, 273, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3)) __PYX_ERR(1, 273, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_mode); - __Pyx_GIVEREF(__pyx_v_mode); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_mode)) __PYX_ERR(1, 273, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_3 = 0; - __pyx_t_3 = ((PyObject *)__pyx_tp_new_array(((PyTypeObject *)__pyx_array_type), __pyx_t_4, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 273, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "View.MemoryView":272 - * cdef str mode = "fortran" if c_mode[0] == b'f' else "c" # this often comes from a constant C string. - * - * if buf is NULL: # <<<<<<<<<<<<<< - * result = array.__new__(array, shape, itemsize, format, mode) - * else: - */ - goto __pyx_L3; - } - - /* "View.MemoryView":275 - * result = array.__new__(array, shape, itemsize, format, mode) - * else: - * result = array.__new__(array, shape, itemsize, format, mode, allocate_buffer=False) # <<<<<<<<<<<<<< - * result.data = buf - * - */ - /*else*/ { - __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 275, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 275, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 275, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_shape); - __Pyx_GIVEREF(__pyx_v_shape); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape)) __PYX_ERR(1, 275, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3)) __PYX_ERR(1, 275, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_4)) __PYX_ERR(1, 275, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_mode); - __Pyx_GIVEREF(__pyx_v_mode); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_mode)) __PYX_ERR(1, 275, __pyx_L1_error); - __pyx_t_3 = 0; - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 275, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_allocate_buffer, Py_False) < 0) __PYX_ERR(1, 275, __pyx_L1_error) - __pyx_t_3 = ((PyObject *)__pyx_tp_new_array(((PyTypeObject *)__pyx_array_type), __pyx_t_1, __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 275, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "View.MemoryView":276 - * else: - * result = array.__new__(array, shape, itemsize, format, mode, allocate_buffer=False) - * result.data = buf # <<<<<<<<<<<<<< - * - * return result - */ - __pyx_v_result->data = __pyx_v_buf; - } - __pyx_L3:; - - /* "View.MemoryView":278 - * result.data = buf - * - * return result # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "View.MemoryView":268 - * - * @cname("__pyx_array_new") - * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format, char *c_mode, char *buf): # <<<<<<<<<<<<<< - * cdef array result - * cdef str mode = "fortran" if c_mode[0] == b'f' else "c" # this often comes from a constant C string. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("View.MemoryView.array_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); - __Pyx_XDECREF(__pyx_v_mode); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":304 - * cdef class Enum(object): - * cdef object name - * def __init__(self, name): # <<<<<<<<<<<<<< - * self.name = name - * def __repr__(self): - */ - -/* Python wrapper */ -static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_name = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 304, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(1, 304, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - } - __pyx_v_name = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 304, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("View.MemoryView.Enum.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v_name); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__init__", 1); - - /* "View.MemoryView":305 - * cdef object name - * def __init__(self, name): - * self.name = name # <<<<<<<<<<<<<< - * def __repr__(self): - * return self.name - */ - __Pyx_INCREF(__pyx_v_name); - __Pyx_GIVEREF(__pyx_v_name); - __Pyx_GOTREF(__pyx_v_self->name); - __Pyx_DECREF(__pyx_v_self->name); - __pyx_v_self->name = __pyx_v_name; - - /* "View.MemoryView":304 - * cdef class Enum(object): - * cdef object name - * def __init__(self, name): # <<<<<<<<<<<<<< - * self.name = name - * def __repr__(self): - */ - - /* function exit code */ - __pyx_r = 0; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":306 - * def __init__(self, name): - * self.name = name - * def __repr__(self): # <<<<<<<<<<<<<< - * return self.name - * - */ - -/* Python wrapper */ -static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__", 1); - - /* "View.MemoryView":307 - * self.name = name - * def __repr__(self): - * return self.name # <<<<<<<<<<<<<< - * - * cdef generic = Enum("") - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->name); - __pyx_r = __pyx_v_self->name; - goto __pyx_L0; - - /* "View.MemoryView":306 - * def __init__(self, name): - * self.name = name - * def __repr__(self): # <<<<<<<<<<<<<< - * return self.name - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - -/* Python wrapper */ -static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf___pyx_MemviewEnum___reduce_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self) { - PyObject *__pyx_v_state = 0; - PyObject *__pyx_v__dict = 0; - int __pyx_v_use_setstate; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":5 - * cdef object _dict - * cdef bint use_setstate - * state = (self.name,) # <<<<<<<<<<<<<< - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_self->name); - __Pyx_GIVEREF(__pyx_v_self->name); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name)) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_v_state = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "(tree fragment)":6 - * cdef bint use_setstate - * state = (self.name,) - * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< - * if _dict is not None: - * state += (_dict,) - */ - __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v__dict = __pyx_t_1; - __pyx_t_1 = 0; - - /* "(tree fragment)":7 - * state = (self.name,) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - __pyx_t_2 = (__pyx_v__dict != Py_None); - if (__pyx_t_2) { - - /* "(tree fragment)":8 - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: - * state += (_dict,) # <<<<<<<<<<<<<< - * use_setstate = True - * else: - */ - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v__dict); - __Pyx_GIVEREF(__pyx_v__dict); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(1, 8, __pyx_L1_error); - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "(tree fragment)":9 - * if _dict is not None: - * state += (_dict,) - * use_setstate = True # <<<<<<<<<<<<<< - * else: - * use_setstate = self.name is not None - */ - __pyx_v_use_setstate = 1; - - /* "(tree fragment)":7 - * state = (self.name,) - * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< - * state += (_dict,) - * use_setstate = True - */ - goto __pyx_L3; - } - - /* "(tree fragment)":11 - * use_setstate = True - * else: - * use_setstate = self.name is not None # <<<<<<<<<<<<<< - * if use_setstate: - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state - */ - /*else*/ { - __pyx_t_2 = (__pyx_v_self->name != Py_None); - __pyx_v_use_setstate = __pyx_t_2; - } - __pyx_L3:; - - /* "(tree fragment)":12 - * else: - * use_setstate = self.name is not None - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state - * else: - */ - if (__pyx_v_use_setstate) { - - /* "(tree fragment)":13 - * use_setstate = self.name is not None - * if use_setstate: - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state # <<<<<<<<<<<<<< - * else: - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, state) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_136983863); - __Pyx_GIVEREF(__pyx_int_136983863); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_136983863)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_3 = 0; - __pyx_t_1 = 0; - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "(tree fragment)":12 - * else: - * use_setstate = self.name is not None - * if use_setstate: # <<<<<<<<<<<<<< - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state - * else: - */ - } - - /* "(tree fragment)":15 - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state - * else: - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, state) # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle_Enum__set_state(self, __pyx_state) - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_136983863); - __Pyx_GIVEREF(__pyx_int_136983863); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_136983863)) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_state); - __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_4 = 0; - __pyx_t_1 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - } - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * cdef tuple state - * cdef object _dict - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("View.MemoryView.Enum.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_state); - __Pyx_XDECREF(__pyx_v__dict); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":16 - * else: - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle_Enum__set_state(self, __pyx_state) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 16, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 16, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 16, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf___pyx_MemviewEnum_2__setstate_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":17 - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, state) - * def __setstate_cython__(self, __pyx_state): - * __pyx_unpickle_Enum__set_state(self, __pyx_state) # <<<<<<<<<<<<<< - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) - __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":16 - * else: - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, state) - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * __pyx_unpickle_Enum__set_state(self, __pyx_state) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":349 - * cdef __Pyx_TypeInfo *typeinfo - * - * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< - * self.obj = obj - * self.flags = flags - */ - -/* Python wrapper */ -static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_obj = 0; - int __pyx_v_flags; - int __pyx_v_dtype_is_object; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_flags,&__pyx_n_s_dtype_is_object,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); __PYX_ERR(1, 349, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dtype_is_object); - if (value) { values[2] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(1, 349, __pyx_L3_error) - } - } else { - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_obj = values[0]; - __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error) - if (values[2]) { - __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 349, __pyx_L3_error) - } else { - __pyx_v_dtype_is_object = ((int)0); - } - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, __pyx_nargs); __PYX_ERR(1, 349, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_obj, __pyx_v_flags, __pyx_v_dtype_is_object); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - Py_intptr_t __pyx_t_4; - size_t __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "View.MemoryView":350 - * - * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): - * self.obj = obj # <<<<<<<<<<<<<< - * self.flags = flags - * if type(self) is memoryview or obj is not None: - */ - __Pyx_INCREF(__pyx_v_obj); - __Pyx_GIVEREF(__pyx_v_obj); - __Pyx_GOTREF(__pyx_v_self->obj); - __Pyx_DECREF(__pyx_v_self->obj); - __pyx_v_self->obj = __pyx_v_obj; - - /* "View.MemoryView":351 - * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): - * self.obj = obj - * self.flags = flags # <<<<<<<<<<<<<< - * if type(self) is memoryview or obj is not None: - * __Pyx_GetBuffer(obj, &self.view, flags) - */ - __pyx_v_self->flags = __pyx_v_flags; - - /* "View.MemoryView":352 - * self.obj = obj - * self.flags = flags - * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< - * __Pyx_GetBuffer(obj, &self.view, flags) - * if self.view.obj == NULL: - */ - __pyx_t_2 = (((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))) == ((PyObject *)__pyx_memoryview_type)); - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = (__pyx_v_obj != Py_None); - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "View.MemoryView":353 - * self.flags = flags - * if type(self) is memoryview or obj is not None: - * __Pyx_GetBuffer(obj, &self.view, flags) # <<<<<<<<<<<<<< - * if self.view.obj == NULL: - * (<__pyx_buffer *> &self.view).obj = Py_None - */ - __pyx_t_3 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 353, __pyx_L1_error) - - /* "View.MemoryView":354 - * if type(self) is memoryview or obj is not None: - * __Pyx_GetBuffer(obj, &self.view, flags) - * if self.view.obj == NULL: # <<<<<<<<<<<<<< - * (<__pyx_buffer *> &self.view).obj = Py_None - * Py_INCREF(Py_None) - */ - __pyx_t_1 = (((PyObject *)__pyx_v_self->view.obj) == NULL); - if (__pyx_t_1) { - - /* "View.MemoryView":355 - * __Pyx_GetBuffer(obj, &self.view, flags) - * if self.view.obj == NULL: - * (<__pyx_buffer *> &self.view).obj = Py_None # <<<<<<<<<<<<<< - * Py_INCREF(Py_None) - * - */ - ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None; - - /* "View.MemoryView":356 - * if self.view.obj == NULL: - * (<__pyx_buffer *> &self.view).obj = Py_None - * Py_INCREF(Py_None) # <<<<<<<<<<<<<< - * - * if not __PYX_CYTHON_ATOMICS_ENABLED(): - */ - Py_INCREF(Py_None); - - /* "View.MemoryView":354 - * if type(self) is memoryview or obj is not None: - * __Pyx_GetBuffer(obj, &self.view, flags) - * if self.view.obj == NULL: # <<<<<<<<<<<<<< - * (<__pyx_buffer *> &self.view).obj = Py_None - * Py_INCREF(Py_None) - */ - } - - /* "View.MemoryView":352 - * self.obj = obj - * self.flags = flags - * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< - * __Pyx_GetBuffer(obj, &self.view, flags) - * if self.view.obj == NULL: - */ - } - - /* "View.MemoryView":358 - * Py_INCREF(Py_None) - * - * if not __PYX_CYTHON_ATOMICS_ENABLED(): # <<<<<<<<<<<<<< - * global __pyx_memoryview_thread_locks_used - * if __pyx_memoryview_thread_locks_used < 8: - */ - __pyx_t_1 = (!__PYX_CYTHON_ATOMICS_ENABLED()); - if (__pyx_t_1) { - - /* "View.MemoryView":360 - * if not __PYX_CYTHON_ATOMICS_ENABLED(): - * global __pyx_memoryview_thread_locks_used - * if __pyx_memoryview_thread_locks_used < 8: # <<<<<<<<<<<<<< - * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] - * __pyx_memoryview_thread_locks_used += 1 - */ - __pyx_t_1 = (__pyx_memoryview_thread_locks_used < 8); - if (__pyx_t_1) { - - /* "View.MemoryView":361 - * global __pyx_memoryview_thread_locks_used - * if __pyx_memoryview_thread_locks_used < 8: - * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] # <<<<<<<<<<<<<< - * __pyx_memoryview_thread_locks_used += 1 - * if self.lock is NULL: - */ - __pyx_v_self->lock = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); - - /* "View.MemoryView":362 - * if __pyx_memoryview_thread_locks_used < 8: - * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] - * __pyx_memoryview_thread_locks_used += 1 # <<<<<<<<<<<<<< - * if self.lock is NULL: - * self.lock = PyThread_allocate_lock() - */ - __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used + 1); - - /* "View.MemoryView":360 - * if not __PYX_CYTHON_ATOMICS_ENABLED(): - * global __pyx_memoryview_thread_locks_used - * if __pyx_memoryview_thread_locks_used < 8: # <<<<<<<<<<<<<< - * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] - * __pyx_memoryview_thread_locks_used += 1 - */ - } - - /* "View.MemoryView":363 - * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] - * __pyx_memoryview_thread_locks_used += 1 - * if self.lock is NULL: # <<<<<<<<<<<<<< - * self.lock = PyThread_allocate_lock() - * if self.lock is NULL: - */ - __pyx_t_1 = (__pyx_v_self->lock == NULL); - if (__pyx_t_1) { - - /* "View.MemoryView":364 - * __pyx_memoryview_thread_locks_used += 1 - * if self.lock is NULL: - * self.lock = PyThread_allocate_lock() # <<<<<<<<<<<<<< - * if self.lock is NULL: - * raise MemoryError - */ - __pyx_v_self->lock = PyThread_allocate_lock(); - - /* "View.MemoryView":365 - * if self.lock is NULL: - * self.lock = PyThread_allocate_lock() - * if self.lock is NULL: # <<<<<<<<<<<<<< - * raise MemoryError - * - */ - __pyx_t_1 = (__pyx_v_self->lock == NULL); - if (unlikely(__pyx_t_1)) { - - /* "View.MemoryView":366 - * self.lock = PyThread_allocate_lock() - * if self.lock is NULL: - * raise MemoryError # <<<<<<<<<<<<<< - * - * if flags & PyBUF_FORMAT: - */ - PyErr_NoMemory(); __PYX_ERR(1, 366, __pyx_L1_error) - - /* "View.MemoryView":365 - * if self.lock is NULL: - * self.lock = PyThread_allocate_lock() - * if self.lock is NULL: # <<<<<<<<<<<<<< - * raise MemoryError - * - */ - } - - /* "View.MemoryView":363 - * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] - * __pyx_memoryview_thread_locks_used += 1 - * if self.lock is NULL: # <<<<<<<<<<<<<< - * self.lock = PyThread_allocate_lock() - * if self.lock is NULL: - */ - } - - /* "View.MemoryView":358 - * Py_INCREF(Py_None) - * - * if not __PYX_CYTHON_ATOMICS_ENABLED(): # <<<<<<<<<<<<<< - * global __pyx_memoryview_thread_locks_used - * if __pyx_memoryview_thread_locks_used < 8: - */ - } - - /* "View.MemoryView":368 - * raise MemoryError - * - * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< - * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') - * else: - */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":369 - * - * if flags & PyBUF_FORMAT: - * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') # <<<<<<<<<<<<<< - * else: - * self.dtype_is_object = dtype_is_object - */ - __pyx_t_2 = ((__pyx_v_self->view.format[0]) == 'O'); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L12_bool_binop_done; - } - __pyx_t_2 = ((__pyx_v_self->view.format[1]) == '\x00'); - __pyx_t_1 = __pyx_t_2; - __pyx_L12_bool_binop_done:; - __pyx_v_self->dtype_is_object = __pyx_t_1; - - /* "View.MemoryView":368 - * raise MemoryError - * - * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< - * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') - * else: - */ - goto __pyx_L11; - } - - /* "View.MemoryView":371 - * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') - * else: - * self.dtype_is_object = dtype_is_object # <<<<<<<<<<<<<< - * - * assert (&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0 - */ - /*else*/ { - __pyx_v_self->dtype_is_object = __pyx_v_dtype_is_object; - } - __pyx_L11:; - - /* "View.MemoryView":373 - * self.dtype_is_object = dtype_is_object - * - * assert (&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0 # <<<<<<<<<<<<<< - * self.typeinfo = NULL - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_4 = ((Py_intptr_t)((void *)(&__pyx_v_self->acquisition_count))); - __pyx_t_5 = (sizeof(__pyx_atomic_int_type)); - if (unlikely(__pyx_t_5 == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(1, 373, __pyx_L1_error) - } - __pyx_t_1 = ((__pyx_t_4 % __pyx_t_5) == 0); - if (unlikely(!__pyx_t_1)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(1, 373, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(1, 373, __pyx_L1_error) - #endif - - /* "View.MemoryView":374 - * - * assert (&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0 - * self.typeinfo = NULL # <<<<<<<<<<<<<< - * - * def __dealloc__(memoryview self): - */ - __pyx_v_self->typeinfo = NULL; - - /* "View.MemoryView":349 - * cdef __Pyx_TypeInfo *typeinfo - * - * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< - * self.obj = obj - * self.flags = flags - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":376 - * self.typeinfo = NULL - * - * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< - * if self.obj is not None: - * __Pyx_ReleaseBuffer(&self.view) - */ - -/* Python wrapper */ -static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self) { - int __pyx_v_i; - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - PyThread_type_lock __pyx_t_5; - PyThread_type_lock __pyx_t_6; - - /* "View.MemoryView":377 - * - * def __dealloc__(memoryview self): - * if self.obj is not None: # <<<<<<<<<<<<<< - * __Pyx_ReleaseBuffer(&self.view) - * elif (<__pyx_buffer *> &self.view).obj == Py_None: - */ - __pyx_t_1 = (__pyx_v_self->obj != Py_None); - if (__pyx_t_1) { - - /* "View.MemoryView":378 - * def __dealloc__(memoryview self): - * if self.obj is not None: - * __Pyx_ReleaseBuffer(&self.view) # <<<<<<<<<<<<<< - * elif (<__pyx_buffer *> &self.view).obj == Py_None: - * - */ - __Pyx_ReleaseBuffer((&__pyx_v_self->view)); - - /* "View.MemoryView":377 - * - * def __dealloc__(memoryview self): - * if self.obj is not None: # <<<<<<<<<<<<<< - * __Pyx_ReleaseBuffer(&self.view) - * elif (<__pyx_buffer *> &self.view).obj == Py_None: - */ - goto __pyx_L3; - } - - /* "View.MemoryView":379 - * if self.obj is not None: - * __Pyx_ReleaseBuffer(&self.view) - * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< - * - * (<__pyx_buffer *> &self.view).obj = NULL - */ - __pyx_t_1 = (((Py_buffer *)(&__pyx_v_self->view))->obj == Py_None); - if (__pyx_t_1) { - - /* "View.MemoryView":381 - * elif (<__pyx_buffer *> &self.view).obj == Py_None: - * - * (<__pyx_buffer *> &self.view).obj = NULL # <<<<<<<<<<<<<< - * Py_DECREF(Py_None) - * - */ - ((Py_buffer *)(&__pyx_v_self->view))->obj = NULL; - - /* "View.MemoryView":382 - * - * (<__pyx_buffer *> &self.view).obj = NULL - * Py_DECREF(Py_None) # <<<<<<<<<<<<<< - * - * cdef int i - */ - Py_DECREF(Py_None); - - /* "View.MemoryView":379 - * if self.obj is not None: - * __Pyx_ReleaseBuffer(&self.view) - * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< - * - * (<__pyx_buffer *> &self.view).obj = NULL - */ - } - __pyx_L3:; - - /* "View.MemoryView":386 - * cdef int i - * global __pyx_memoryview_thread_locks_used - * if self.lock != NULL: # <<<<<<<<<<<<<< - * for i in range(__pyx_memoryview_thread_locks_used): - * if __pyx_memoryview_thread_locks[i] is self.lock: - */ - __pyx_t_1 = (__pyx_v_self->lock != NULL); - if (__pyx_t_1) { - - /* "View.MemoryView":387 - * global __pyx_memoryview_thread_locks_used - * if self.lock != NULL: - * for i in range(__pyx_memoryview_thread_locks_used): # <<<<<<<<<<<<<< - * if __pyx_memoryview_thread_locks[i] is self.lock: - * __pyx_memoryview_thread_locks_used -= 1 - */ - __pyx_t_2 = __pyx_memoryview_thread_locks_used; - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "View.MemoryView":388 - * if self.lock != NULL: - * for i in range(__pyx_memoryview_thread_locks_used): - * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< - * __pyx_memoryview_thread_locks_used -= 1 - * if i != __pyx_memoryview_thread_locks_used: - */ - __pyx_t_1 = ((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock); - if (__pyx_t_1) { - - /* "View.MemoryView":389 - * for i in range(__pyx_memoryview_thread_locks_used): - * if __pyx_memoryview_thread_locks[i] is self.lock: - * __pyx_memoryview_thread_locks_used -= 1 # <<<<<<<<<<<<<< - * if i != __pyx_memoryview_thread_locks_used: - * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( - */ - __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1); - - /* "View.MemoryView":390 - * if __pyx_memoryview_thread_locks[i] is self.lock: - * __pyx_memoryview_thread_locks_used -= 1 - * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< - * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( - * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) - */ - __pyx_t_1 = (__pyx_v_i != __pyx_memoryview_thread_locks_used); - if (__pyx_t_1) { - - /* "View.MemoryView":392 - * if i != __pyx_memoryview_thread_locks_used: - * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( - * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) # <<<<<<<<<<<<<< - * break - * else: - */ - __pyx_t_5 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); - __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_v_i]); - - /* "View.MemoryView":391 - * __pyx_memoryview_thread_locks_used -= 1 - * if i != __pyx_memoryview_thread_locks_used: - * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( # <<<<<<<<<<<<<< - * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) - * break - */ - (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_5; - (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_6; - - /* "View.MemoryView":390 - * if __pyx_memoryview_thread_locks[i] is self.lock: - * __pyx_memoryview_thread_locks_used -= 1 - * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< - * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( - * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) - */ - } - - /* "View.MemoryView":393 - * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( - * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) - * break # <<<<<<<<<<<<<< - * else: - * PyThread_free_lock(self.lock) - */ - goto __pyx_L6_break; - - /* "View.MemoryView":388 - * if self.lock != NULL: - * for i in range(__pyx_memoryview_thread_locks_used): - * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< - * __pyx_memoryview_thread_locks_used -= 1 - * if i != __pyx_memoryview_thread_locks_used: - */ - } - } - /*else*/ { - - /* "View.MemoryView":395 - * break - * else: - * PyThread_free_lock(self.lock) # <<<<<<<<<<<<<< - * - * cdef char *get_item_pointer(memoryview self, object index) except NULL: - */ - PyThread_free_lock(__pyx_v_self->lock); - } - __pyx_L6_break:; - - /* "View.MemoryView":386 - * cdef int i - * global __pyx_memoryview_thread_locks_used - * if self.lock != NULL: # <<<<<<<<<<<<<< - * for i in range(__pyx_memoryview_thread_locks_used): - * if __pyx_memoryview_thread_locks[i] is self.lock: - */ - } - - /* "View.MemoryView":376 - * self.typeinfo = NULL - * - * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< - * if self.obj is not None: - * __Pyx_ReleaseBuffer(&self.view) - */ - - /* function exit code */ -} - -/* "View.MemoryView":397 - * PyThread_free_lock(self.lock) - * - * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< - * cdef Py_ssize_t dim - * cdef char *itemp = self.view.buf - */ - -static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) { - Py_ssize_t __pyx_v_dim; - char *__pyx_v_itemp; - PyObject *__pyx_v_idx = NULL; - char *__pyx_r; - __Pyx_RefNannyDeclarations - Py_ssize_t __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t __pyx_t_3; - PyObject *(*__pyx_t_4)(PyObject *); - PyObject *__pyx_t_5 = NULL; - Py_ssize_t __pyx_t_6; - char *__pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_item_pointer", 1); - - /* "View.MemoryView":399 - * cdef char *get_item_pointer(memoryview self, object index) except NULL: - * cdef Py_ssize_t dim - * cdef char *itemp = self.view.buf # <<<<<<<<<<<<<< - * - * for dim, idx in enumerate(index): - */ - __pyx_v_itemp = ((char *)__pyx_v_self->view.buf); - - /* "View.MemoryView":401 - * cdef char *itemp = self.view.buf - * - * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< - * itemp = pybuffer_index(&self.view, itemp, idx, dim) - * - */ - __pyx_t_1 = 0; - if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) { - __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = 0; - __pyx_t_4 = NULL; - } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 401, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 401, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_4)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 401, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(1, 401, __pyx_L1_error) - #else - __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 401, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } else { - { - Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 401, __pyx_L1_error) - #endif - if (__pyx_t_3 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(1, 401, __pyx_L1_error) - #else - __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 401, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } - } else { - __pyx_t_5 = __pyx_t_4(__pyx_t_2); - if (unlikely(!__pyx_t_5)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 401, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_5); - } - __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_v_dim = __pyx_t_1; - __pyx_t_1 = (__pyx_t_1 + 1); - - /* "View.MemoryView":402 - * - * for dim, idx in enumerate(index): - * itemp = pybuffer_index(&self.view, itemp, idx, dim) # <<<<<<<<<<<<<< - * - * return itemp - */ - __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 402, __pyx_L1_error) - __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(1, 402, __pyx_L1_error) - __pyx_v_itemp = __pyx_t_7; - - /* "View.MemoryView":401 - * cdef char *itemp = self.view.buf - * - * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< - * itemp = pybuffer_index(&self.view, itemp, idx, dim) - * - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "View.MemoryView":404 - * itemp = pybuffer_index(&self.view, itemp, idx, dim) - * - * return itemp # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = __pyx_v_itemp; - goto __pyx_L0; - - /* "View.MemoryView":397 - * PyThread_free_lock(self.lock) - * - * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< - * cdef Py_ssize_t dim - * cdef char *itemp = self.view.buf - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("View.MemoryView.memoryview.get_item_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_idx); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":407 - * - * - * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< - * if index is Ellipsis: - * return self - */ - -/* Python wrapper */ -static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/ -static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) { - PyObject *__pyx_v_have_slices = NULL; - PyObject *__pyx_v_indices = NULL; - char *__pyx_v_itemp; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - char *__pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__getitem__", 1); - - /* "View.MemoryView":408 - * - * def __getitem__(memoryview self, object index): - * if index is Ellipsis: # <<<<<<<<<<<<<< - * return self - * - */ - __pyx_t_1 = (__pyx_v_index == __pyx_builtin_Ellipsis); - if (__pyx_t_1) { - - /* "View.MemoryView":409 - * def __getitem__(memoryview self, object index): - * if index is Ellipsis: - * return self # <<<<<<<<<<<<<< - * - * have_slices, indices = _unellipsify(index, self.view.ndim) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_self); - __pyx_r = ((PyObject *)__pyx_v_self); - goto __pyx_L0; - - /* "View.MemoryView":408 - * - * def __getitem__(memoryview self, object index): - * if index is Ellipsis: # <<<<<<<<<<<<<< - * return self - * - */ - } - - /* "View.MemoryView":411 - * return self - * - * have_slices, indices = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< - * - * cdef char *itemp - */ - __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (likely(__pyx_t_2 != Py_None)) { - PyObject* sequence = __pyx_t_2; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 411, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 411, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 411, __pyx_L1_error) - } - __pyx_v_have_slices = __pyx_t_3; - __pyx_t_3 = 0; - __pyx_v_indices = __pyx_t_4; - __pyx_t_4 = 0; - - /* "View.MemoryView":414 - * - * cdef char *itemp - * if have_slices: # <<<<<<<<<<<<<< - * return memview_slice(self, indices) - * else: - */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 414, __pyx_L1_error) - if (__pyx_t_1) { - - /* "View.MemoryView":415 - * cdef char *itemp - * if have_slices: - * return memview_slice(self, indices) # <<<<<<<<<<<<<< - * else: - * itemp = self.get_item_pointer(indices) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 415, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":414 - * - * cdef char *itemp - * if have_slices: # <<<<<<<<<<<<<< - * return memview_slice(self, indices) - * else: - */ - } - - /* "View.MemoryView":417 - * return memview_slice(self, indices) - * else: - * itemp = self.get_item_pointer(indices) # <<<<<<<<<<<<<< - * return self.convert_item_to_object(itemp) - * - */ - /*else*/ { - __pyx_t_5 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_5 == ((char *)NULL))) __PYX_ERR(1, 417, __pyx_L1_error) - __pyx_v_itemp = __pyx_t_5; - - /* "View.MemoryView":418 - * else: - * itemp = self.get_item_pointer(indices) - * return self.convert_item_to_object(itemp) # <<<<<<<<<<<<<< - * - * def __setitem__(memoryview self, object index, object value): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - } - - /* "View.MemoryView":407 - * - * - * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< - * if index is Ellipsis: - * return self - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("View.MemoryView.memoryview.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_have_slices); - __Pyx_XDECREF(__pyx_v_indices); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":420 - * return self.convert_item_to_object(itemp) - * - * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< - * if self.view.readonly: - * raise TypeError, "Cannot assign to read-only memoryview" - */ - -/* Python wrapper */ -static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { - PyObject *__pyx_v_have_slices = NULL; - PyObject *__pyx_v_obj = NULL; - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setitem__", 0); - __Pyx_INCREF(__pyx_v_index); - - /* "View.MemoryView":421 - * - * def __setitem__(memoryview self, object index, object value): - * if self.view.readonly: # <<<<<<<<<<<<<< - * raise TypeError, "Cannot assign to read-only memoryview" - * - */ - if (unlikely(__pyx_v_self->view.readonly)) { - - /* "View.MemoryView":422 - * def __setitem__(memoryview self, object index, object value): - * if self.view.readonly: - * raise TypeError, "Cannot assign to read-only memoryview" # <<<<<<<<<<<<<< - * - * have_slices, index = _unellipsify(index, self.view.ndim) - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_Cannot_assign_to_read_only_memor, 0, 0); - __PYX_ERR(1, 422, __pyx_L1_error) - - /* "View.MemoryView":421 - * - * def __setitem__(memoryview self, object index, object value): - * if self.view.readonly: # <<<<<<<<<<<<<< - * raise TypeError, "Cannot assign to read-only memoryview" - * - */ - } - - /* "View.MemoryView":424 - * raise TypeError, "Cannot assign to read-only memoryview" - * - * have_slices, index = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< - * - * if have_slices: - */ - __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (likely(__pyx_t_1 != Py_None)) { - PyObject* sequence = __pyx_t_1; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 424, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 424, __pyx_L1_error) - } - __pyx_v_have_slices = __pyx_t_2; - __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3); - __pyx_t_3 = 0; - - /* "View.MemoryView":426 - * have_slices, index = _unellipsify(index, self.view.ndim) - * - * if have_slices: # <<<<<<<<<<<<<< - * obj = self.is_slice(value) - * if obj: - */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 426, __pyx_L1_error) - if (__pyx_t_4) { - - /* "View.MemoryView":427 - * - * if have_slices: - * obj = self.is_slice(value) # <<<<<<<<<<<<<< - * if obj: - * self.setitem_slice_assignment(self[index], obj) - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 427, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_obj = __pyx_t_1; - __pyx_t_1 = 0; - - /* "View.MemoryView":428 - * if have_slices: - * obj = self.is_slice(value) - * if obj: # <<<<<<<<<<<<<< - * self.setitem_slice_assignment(self[index], obj) - * else: - */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 428, __pyx_L1_error) - if (__pyx_t_4) { - - /* "View.MemoryView":429 - * obj = self.is_slice(value) - * if obj: - * self.setitem_slice_assignment(self[index], obj) # <<<<<<<<<<<<<< - * else: - * self.setitem_slice_assign_scalar(self[index], value) - */ - __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 429, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "View.MemoryView":428 - * if have_slices: - * obj = self.is_slice(value) - * if obj: # <<<<<<<<<<<<<< - * self.setitem_slice_assignment(self[index], obj) - * else: - */ - goto __pyx_L5; - } - - /* "View.MemoryView":431 - * self.setitem_slice_assignment(self[index], obj) - * else: - * self.setitem_slice_assign_scalar(self[index], value) # <<<<<<<<<<<<<< - * else: - * self.setitem_indexed(index, value) - */ - /*else*/ { - __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 431, __pyx_L1_error) - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 431, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L5:; - - /* "View.MemoryView":426 - * have_slices, index = _unellipsify(index, self.view.ndim) - * - * if have_slices: # <<<<<<<<<<<<<< - * obj = self.is_slice(value) - * if obj: - */ - goto __pyx_L4; - } - - /* "View.MemoryView":433 - * self.setitem_slice_assign_scalar(self[index], value) - * else: - * self.setitem_indexed(index, value) # <<<<<<<<<<<<<< - * - * cdef is_slice(self, obj): - */ - /*else*/ { - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 433, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_L4:; - - /* "View.MemoryView":420 - * return self.convert_item_to_object(itemp) - * - * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< - * if self.view.readonly: - * raise TypeError, "Cannot assign to read-only memoryview" - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("View.MemoryView.memoryview.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_have_slices); - __Pyx_XDECREF(__pyx_v_obj); - __Pyx_XDECREF(__pyx_v_index); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":435 - * self.setitem_indexed(index, value) - * - * cdef is_slice(self, obj): # <<<<<<<<<<<<<< - * if not isinstance(obj, memoryview): - * try: - */ - -static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("is_slice", 0); - __Pyx_INCREF(__pyx_v_obj); - - /* "View.MemoryView":436 - * - * cdef is_slice(self, obj): - * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< - * try: - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, - */ - __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_memoryview_type); - __pyx_t_2 = (!__pyx_t_1); - if (__pyx_t_2) { - - /* "View.MemoryView":437 - * cdef is_slice(self, obj): - * if not isinstance(obj, memoryview): - * try: # <<<<<<<<<<<<<< - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, - * self.dtype_is_object) - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_5); - /*try:*/ { - - /* "View.MemoryView":438 - * if not isinstance(obj, memoryview): - * try: - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< - * self.dtype_is_object) - * except TypeError: - */ - __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 438, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_6); - - /* "View.MemoryView":439 - * try: - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, - * self.dtype_is_object) # <<<<<<<<<<<<<< - * except TypeError: - * return None - */ - __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 439, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_7); - - /* "View.MemoryView":438 - * if not isinstance(obj, memoryview): - * try: - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< - * self.dtype_is_object) - * except TypeError: - */ - __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 438, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_INCREF(__pyx_v_obj); - __Pyx_GIVEREF(__pyx_v_obj); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_obj)) __PYX_ERR(1, 438, __pyx_L4_error); - __Pyx_GIVEREF(__pyx_t_6); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6)) __PYX_ERR(1, 438, __pyx_L4_error); - __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7)) __PYX_ERR(1, 438, __pyx_L4_error); - __pyx_t_6 = 0; - __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 438, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7); - __pyx_t_7 = 0; - - /* "View.MemoryView":437 - * cdef is_slice(self, obj): - * if not isinstance(obj, memoryview): - * try: # <<<<<<<<<<<<<< - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, - * self.dtype_is_object) - */ - } - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - goto __pyx_L9_try_end; - __pyx_L4_error:; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - - /* "View.MemoryView":440 - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, - * self.dtype_is_object) - * except TypeError: # <<<<<<<<<<<<<< - * return None - * - */ - __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); - if (__pyx_t_9) { - __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(1, 440, __pyx_L6_except_error) - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_6); - - /* "View.MemoryView":441 - * self.dtype_is_object) - * except TypeError: - * return None # <<<<<<<<<<<<<< - * - * return obj - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L7_except_return; - } - goto __pyx_L6_except_error; - - /* "View.MemoryView":437 - * cdef is_slice(self, obj): - * if not isinstance(obj, memoryview): - * try: # <<<<<<<<<<<<<< - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, - * self.dtype_is_object) - */ - __pyx_L6_except_error:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L1_error; - __pyx_L7_except_return:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_XGIVEREF(__pyx_t_5); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5); - goto __pyx_L0; - __pyx_L9_try_end:; - } - - /* "View.MemoryView":436 - * - * cdef is_slice(self, obj): - * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< - * try: - * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, - */ - } - - /* "View.MemoryView":443 - * return None - * - * return obj # <<<<<<<<<<<<<< - * - * cdef setitem_slice_assignment(self, dst, src): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_obj); - __pyx_r = __pyx_v_obj; - goto __pyx_L0; - - /* "View.MemoryView":435 - * self.setitem_indexed(index, value) - * - * cdef is_slice(self, obj): # <<<<<<<<<<<<<< - * if not isinstance(obj, memoryview): - * try: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_obj); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":445 - * return obj - * - * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice dst_slice - * cdef __Pyx_memviewslice src_slice - */ - -static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src) { - __Pyx_memviewslice __pyx_v_dst_slice; - __Pyx_memviewslice __pyx_v_src_slice; - __Pyx_memviewslice __pyx_v_msrc; - __Pyx_memviewslice __pyx_v_mdst; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_memviewslice *__pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("setitem_slice_assignment", 1); - - /* "View.MemoryView":448 - * cdef __Pyx_memviewslice dst_slice - * cdef __Pyx_memviewslice src_slice - * cdef __Pyx_memviewslice msrc = get_slice_from_memview(src, &src_slice)[0] # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] - * - */ - if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(1, 448, __pyx_L1_error) - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 448, __pyx_L1_error) - __pyx_v_msrc = (__pyx_t_1[0]); - - /* "View.MemoryView":449 - * cdef __Pyx_memviewslice src_slice - * cdef __Pyx_memviewslice msrc = get_slice_from_memview(src, &src_slice)[0] - * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] # <<<<<<<<<<<<<< - * - * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) - */ - if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(1, 449, __pyx_L1_error) - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 449, __pyx_L1_error) - __pyx_v_mdst = (__pyx_t_1[0]); - - /* "View.MemoryView":451 - * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] - * - * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) # <<<<<<<<<<<<<< - * - * cdef setitem_slice_assign_scalar(self, memoryview dst, value): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 451, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 451, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_memoryview_copy_contents(__pyx_v_msrc, __pyx_v_mdst, __pyx_t_3, __pyx_t_4, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 451, __pyx_L1_error) - - /* "View.MemoryView":445 - * return obj - * - * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice dst_slice - * cdef __Pyx_memviewslice src_slice - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assignment", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":453 - * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) - * - * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< - * cdef int array[128] - * cdef void *tmp = NULL - */ - -static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) { - int __pyx_v_array[0x80]; - void *__pyx_v_tmp; - void *__pyx_v_item; - __Pyx_memviewslice *__pyx_v_dst_slice; - __Pyx_memviewslice __pyx_v_tmp_slice; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_memviewslice *__pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - char const *__pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 1); - - /* "View.MemoryView":455 - * cdef setitem_slice_assign_scalar(self, memoryview dst, value): - * cdef int array[128] - * cdef void *tmp = NULL # <<<<<<<<<<<<<< - * cdef void *item - * - */ - __pyx_v_tmp = NULL; - - /* "View.MemoryView":460 - * cdef __Pyx_memviewslice *dst_slice - * cdef __Pyx_memviewslice tmp_slice - * dst_slice = get_slice_from_memview(dst, &tmp_slice) # <<<<<<<<<<<<<< - * - * if self.view.itemsize > sizeof(array): - */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 460, __pyx_L1_error) - __pyx_v_dst_slice = __pyx_t_1; - - /* "View.MemoryView":462 - * dst_slice = get_slice_from_memview(dst, &tmp_slice) - * - * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< - * tmp = PyMem_Malloc(self.view.itemsize) - * if tmp == NULL: - */ - __pyx_t_2 = (((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))); - if (__pyx_t_2) { - - /* "View.MemoryView":463 - * - * if self.view.itemsize > sizeof(array): - * tmp = PyMem_Malloc(self.view.itemsize) # <<<<<<<<<<<<<< - * if tmp == NULL: - * raise MemoryError - */ - __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize); - - /* "View.MemoryView":464 - * if self.view.itemsize > sizeof(array): - * tmp = PyMem_Malloc(self.view.itemsize) - * if tmp == NULL: # <<<<<<<<<<<<<< - * raise MemoryError - * item = tmp - */ - __pyx_t_2 = (__pyx_v_tmp == NULL); - if (unlikely(__pyx_t_2)) { - - /* "View.MemoryView":465 - * tmp = PyMem_Malloc(self.view.itemsize) - * if tmp == NULL: - * raise MemoryError # <<<<<<<<<<<<<< - * item = tmp - * else: - */ - PyErr_NoMemory(); __PYX_ERR(1, 465, __pyx_L1_error) - - /* "View.MemoryView":464 - * if self.view.itemsize > sizeof(array): - * tmp = PyMem_Malloc(self.view.itemsize) - * if tmp == NULL: # <<<<<<<<<<<<<< - * raise MemoryError - * item = tmp - */ - } - - /* "View.MemoryView":466 - * if tmp == NULL: - * raise MemoryError - * item = tmp # <<<<<<<<<<<<<< - * else: - * item = array - */ - __pyx_v_item = __pyx_v_tmp; - - /* "View.MemoryView":462 - * dst_slice = get_slice_from_memview(dst, &tmp_slice) - * - * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< - * tmp = PyMem_Malloc(self.view.itemsize) - * if tmp == NULL: - */ - goto __pyx_L3; - } - - /* "View.MemoryView":468 - * item = tmp - * else: - * item = array # <<<<<<<<<<<<<< - * - * try: - */ - /*else*/ { - __pyx_v_item = ((void *)__pyx_v_array); - } - __pyx_L3:; - - /* "View.MemoryView":470 - * item = array - * - * try: # <<<<<<<<<<<<<< - * if self.dtype_is_object: - * ( item)[0] = value - */ - /*try:*/ { - - /* "View.MemoryView":471 - * - * try: - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * ( item)[0] = value - * else: - */ - if (__pyx_v_self->dtype_is_object) { - - /* "View.MemoryView":472 - * try: - * if self.dtype_is_object: - * ( item)[0] = value # <<<<<<<<<<<<<< - * else: - * self.assign_item_from_object( item, value) - */ - (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value); - - /* "View.MemoryView":471 - * - * try: - * if self.dtype_is_object: # <<<<<<<<<<<<<< - * ( item)[0] = value - * else: - */ - goto __pyx_L8; - } - - /* "View.MemoryView":474 - * ( item)[0] = value - * else: - * self.assign_item_from_object( item, value) # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 474, __pyx_L6_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_L8:; - - /* "View.MemoryView":478 - * - * - * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< - * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) - * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, - */ - __pyx_t_2 = (__pyx_v_self->view.suboffsets != NULL); - if (__pyx_t_2) { - - /* "View.MemoryView":479 - * - * if self.view.suboffsets != NULL: - * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) # <<<<<<<<<<<<<< - * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, - * item, self.dtype_is_object) - */ - __pyx_t_4 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 479, __pyx_L6_error) - - /* "View.MemoryView":478 - * - * - * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< - * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) - * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, - */ - } - - /* "View.MemoryView":480 - * if self.view.suboffsets != NULL: - * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) - * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, # <<<<<<<<<<<<<< - * item, self.dtype_is_object) - * finally: - */ - __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object); - } - - /* "View.MemoryView":483 - * item, self.dtype_is_object) - * finally: - * PyMem_Free(tmp) # <<<<<<<<<<<<<< - * - * cdef setitem_indexed(self, index, value): - */ - /*finally:*/ { - /*normal exit:*/{ - PyMem_Free(__pyx_v_tmp); - goto __pyx_L7; - } - __pyx_L6_error:; - /*exception exit:*/{ - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); - if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_7); - __Pyx_XGOTREF(__pyx_t_8); - __Pyx_XGOTREF(__pyx_t_9); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename; - { - PyMem_Free(__pyx_v_tmp); - } - if (PY_MAJOR_VERSION >= 3) { - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); - } - __Pyx_XGIVEREF(__pyx_t_7); - __Pyx_XGIVEREF(__pyx_t_8); - __Pyx_XGIVEREF(__pyx_t_9); - __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9); - __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; - __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6; - goto __pyx_L1_error; - } - __pyx_L7:; - } - - /* "View.MemoryView":453 - * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) - * - * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< - * cdef int array[128] - * cdef void *tmp = NULL - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assign_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":485 - * PyMem_Free(tmp) - * - * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< - * cdef char *itemp = self.get_item_pointer(index) - * self.assign_item_from_object(itemp, value) - */ - -static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) { - char *__pyx_v_itemp; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - char *__pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("setitem_indexed", 1); - - /* "View.MemoryView":486 - * - * cdef setitem_indexed(self, index, value): - * cdef char *itemp = self.get_item_pointer(index) # <<<<<<<<<<<<<< - * self.assign_item_from_object(itemp, value) - * - */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(1, 486, __pyx_L1_error) - __pyx_v_itemp = __pyx_t_1; - - /* "View.MemoryView":487 - * cdef setitem_indexed(self, index, value): - * cdef char *itemp = self.get_item_pointer(index) - * self.assign_item_from_object(itemp, value) # <<<<<<<<<<<<<< - * - * cdef convert_item_to_object(self, char *itemp): - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 487, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "View.MemoryView":485 - * PyMem_Free(tmp) - * - * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< - * cdef char *itemp = self.get_item_pointer(index) - * self.assign_item_from_object(itemp, value) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":489 - * self.assign_item_from_object(itemp, value) - * - * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< - * """Only used if instantiated manually by the user, or if Cython doesn't - * know how to convert the type""" - */ - -static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp) { - PyObject *__pyx_v_struct = NULL; - PyObject *__pyx_v_bytesitem = 0; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - Py_ssize_t __pyx_t_9; - int __pyx_t_10; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("convert_item_to_object", 1); - - /* "View.MemoryView":492 - * """Only used if instantiated manually by the user, or if Cython doesn't - * know how to convert the type""" - * import struct # <<<<<<<<<<<<<< - * cdef bytes bytesitem - * - */ - __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_struct, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 492, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_struct = __pyx_t_1; - __pyx_t_1 = 0; - - /* "View.MemoryView":495 - * cdef bytes bytesitem - * - * bytesitem = itemp[:self.view.itemsize] # <<<<<<<<<<<<<< - * try: - * result = struct.unpack(self.view.format, bytesitem) - */ - __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 495, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_bytesitem = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "View.MemoryView":496 - * - * bytesitem = itemp[:self.view.itemsize] - * try: # <<<<<<<<<<<<<< - * result = struct.unpack(self.view.format, bytesitem) - * except struct.error: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_4); - /*try:*/ { - - /* "View.MemoryView":497 - * bytesitem = itemp[:self.view.itemsize] - * try: - * result = struct.unpack(self.view.format, bytesitem) # <<<<<<<<<<<<<< - * except struct.error: - * raise ValueError, "Unable to convert item to object" - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 497, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 497, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_8 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 497, __pyx_L3_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "View.MemoryView":496 - * - * bytesitem = itemp[:self.view.itemsize] - * try: # <<<<<<<<<<<<<< - * result = struct.unpack(self.view.format, bytesitem) - * except struct.error: - */ - } - - /* "View.MemoryView":501 - * raise ValueError, "Unable to convert item to object" - * else: - * if len(self.view.format) == 1: # <<<<<<<<<<<<<< - * return result[0] - * return result - */ - /*else:*/ { - __pyx_t_9 = __Pyx_ssize_strlen(__pyx_v_self->view.format); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(1, 501, __pyx_L5_except_error) - __pyx_t_10 = (__pyx_t_9 == 1); - if (__pyx_t_10) { - - /* "View.MemoryView":502 - * else: - * if len(self.view.format) == 1: - * return result[0] # <<<<<<<<<<<<<< - * return result - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 502, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L6_except_return; - - /* "View.MemoryView":501 - * raise ValueError, "Unable to convert item to object" - * else: - * if len(self.view.format) == 1: # <<<<<<<<<<<<<< - * return result[0] - * return result - */ - } - - /* "View.MemoryView":503 - * if len(self.view.format) == 1: - * return result[0] - * return result # <<<<<<<<<<<<<< - * - * cdef assign_item_from_object(self, char *itemp, object value): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L6_except_return; - } - __pyx_L3_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "View.MemoryView":498 - * try: - * result = struct.unpack(self.view.format, bytesitem) - * except struct.error: # <<<<<<<<<<<<<< - * raise ValueError, "Unable to convert item to object" - * else: - */ - __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 498, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_7); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_ErrRestore(__pyx_t_1, __pyx_t_5, __pyx_t_6); - __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; - if (__pyx_t_8) { - __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(1, 498, __pyx_L5_except_error) - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_1); - - /* "View.MemoryView":499 - * result = struct.unpack(self.view.format, bytesitem) - * except struct.error: - * raise ValueError, "Unable to convert item to object" # <<<<<<<<<<<<<< - * else: - * if len(self.view.format) == 1: - */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Unable_to_convert_item_to_object, 0, 0); - __PYX_ERR(1, 499, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - - /* "View.MemoryView":496 - * - * bytesitem = itemp[:self.view.itemsize] - * try: # <<<<<<<<<<<<<< - * result = struct.unpack(self.view.format, bytesitem) - * except struct.error: - */ - __pyx_L5_except_error:; - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); - goto __pyx_L1_error; - __pyx_L6_except_return:; - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_4); - __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4); - goto __pyx_L0; - } - - /* "View.MemoryView":489 - * self.assign_item_from_object(itemp, value) - * - * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< - * """Only used if instantiated manually by the user, or if Cython doesn't - * know how to convert the type""" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_struct); - __Pyx_XDECREF(__pyx_v_bytesitem); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":505 - * return result - * - * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< - * """Only used if instantiated manually by the user, or if Cython doesn't - * know how to convert the type""" - */ - -static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) { - PyObject *__pyx_v_struct = NULL; - char __pyx_v_c; - PyObject *__pyx_v_bytesvalue = 0; - Py_ssize_t __pyx_v_i; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - Py_ssize_t __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - char *__pyx_t_9; - char *__pyx_t_10; - char *__pyx_t_11; - char *__pyx_t_12; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("assign_item_from_object", 1); - - /* "View.MemoryView":508 - * """Only used if instantiated manually by the user, or if Cython doesn't - * know how to convert the type""" - * import struct # <<<<<<<<<<<<<< - * cdef char c - * cdef bytes bytesvalue - */ - __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_struct, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 508, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_struct = __pyx_t_1; - __pyx_t_1 = 0; - - /* "View.MemoryView":513 - * cdef Py_ssize_t i - * - * if isinstance(value, tuple): # <<<<<<<<<<<<<< - * bytesvalue = struct.pack(self.view.format, *value) - * else: - */ - __pyx_t_2 = PyTuple_Check(__pyx_v_value); - if (__pyx_t_2) { - - /* "View.MemoryView":514 - * - * if isinstance(value, tuple): - * bytesvalue = struct.pack(self.view.format, *value) # <<<<<<<<<<<<<< - * else: - * bytesvalue = struct.pack(self.view.format, value) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(1, 514, __pyx_L1_error) - __pyx_v_bytesvalue = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "View.MemoryView":513 - * cdef Py_ssize_t i - * - * if isinstance(value, tuple): # <<<<<<<<<<<<<< - * bytesvalue = struct.pack(self.view.format, *value) - * else: - */ - goto __pyx_L3; - } - - /* "View.MemoryView":516 - * bytesvalue = struct.pack(self.view.format, *value) - * else: - * bytesvalue = struct.pack(self.view.format, value) # <<<<<<<<<<<<<< - * - * for i, c in enumerate(bytesvalue): - */ - /*else*/ { - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 516, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 516, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_1, __pyx_v_value}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 516, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(1, 516, __pyx_L1_error) - __pyx_v_bytesvalue = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - } - __pyx_L3:; - - /* "View.MemoryView":518 - * bytesvalue = struct.pack(self.view.format, value) - * - * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< - * itemp[i] = c - * - */ - __pyx_t_7 = 0; - if (unlikely(__pyx_v_bytesvalue == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); - __PYX_ERR(1, 518, __pyx_L1_error) - } - __Pyx_INCREF(__pyx_v_bytesvalue); - __pyx_t_8 = __pyx_v_bytesvalue; - __pyx_t_10 = PyBytes_AS_STRING(__pyx_t_8); - __pyx_t_11 = (__pyx_t_10 + PyBytes_GET_SIZE(__pyx_t_8)); - for (__pyx_t_12 = __pyx_t_10; __pyx_t_12 < __pyx_t_11; __pyx_t_12++) { - __pyx_t_9 = __pyx_t_12; - __pyx_v_c = (__pyx_t_9[0]); - - /* "View.MemoryView":519 - * - * for i, c in enumerate(bytesvalue): - * itemp[i] = c # <<<<<<<<<<<<<< - * - * @cname('getbuffer') - */ - __pyx_v_i = __pyx_t_7; - - /* "View.MemoryView":518 - * bytesvalue = struct.pack(self.view.format, value) - * - * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< - * itemp[i] = c - * - */ - __pyx_t_7 = (__pyx_t_7 + 1); - - /* "View.MemoryView":519 - * - * for i, c in enumerate(bytesvalue): - * itemp[i] = c # <<<<<<<<<<<<<< - * - * @cname('getbuffer') - */ - (__pyx_v_itemp[__pyx_v_i]) = __pyx_v_c; - } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - - /* "View.MemoryView":505 - * return result - * - * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< - * """Only used if instantiated manually by the user, or if Cython doesn't - * know how to convert the type""" - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("View.MemoryView.memoryview.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_struct); - __Pyx_XDECREF(__pyx_v_bytesvalue); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":521 - * itemp[i] = c - * - * @cname('getbuffer') # <<<<<<<<<<<<<< - * def __getbuffer__(self, Py_buffer *info, int flags): - * if flags & PyBUF_WRITABLE and self.view.readonly: - */ - -/* Python wrapper */ -CYTHON_UNUSED static int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/ -CYTHON_UNUSED static int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - Py_ssize_t *__pyx_t_3; - char *__pyx_t_4; - void *__pyx_t_5; - int __pyx_t_6; - Py_ssize_t __pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - if (unlikely(__pyx_v_info == NULL)) { - PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); - return -1; - } - __Pyx_RefNannySetupContext("__getbuffer__", 0); - __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(__pyx_v_info->obj); - - /* "View.MemoryView":523 - * @cname('getbuffer') - * def __getbuffer__(self, Py_buffer *info, int flags): - * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< - * raise ValueError, "Cannot create writable memory view from read-only memoryview" - * - */ - __pyx_t_2 = ((__pyx_v_flags & PyBUF_WRITABLE) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_1 = __pyx_v_self->view.readonly; - __pyx_L4_bool_binop_done:; - if (unlikely(__pyx_t_1)) { - - /* "View.MemoryView":524 - * def __getbuffer__(self, Py_buffer *info, int flags): - * if flags & PyBUF_WRITABLE and self.view.readonly: - * raise ValueError, "Cannot create writable memory view from read-only memoryview" # <<<<<<<<<<<<<< - * - * if flags & PyBUF_ND: - */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Cannot_create_writable_memory_vi, 0, 0); - __PYX_ERR(1, 524, __pyx_L1_error) - - /* "View.MemoryView":523 - * @cname('getbuffer') - * def __getbuffer__(self, Py_buffer *info, int flags): - * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< - * raise ValueError, "Cannot create writable memory view from read-only memoryview" - * - */ - } - - /* "View.MemoryView":526 - * raise ValueError, "Cannot create writable memory view from read-only memoryview" - * - * if flags & PyBUF_ND: # <<<<<<<<<<<<<< - * info.shape = self.view.shape - * else: - */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":527 - * - * if flags & PyBUF_ND: - * info.shape = self.view.shape # <<<<<<<<<<<<<< - * else: - * info.shape = NULL - */ - __pyx_t_3 = __pyx_v_self->view.shape; - __pyx_v_info->shape = __pyx_t_3; - - /* "View.MemoryView":526 - * raise ValueError, "Cannot create writable memory view from read-only memoryview" - * - * if flags & PyBUF_ND: # <<<<<<<<<<<<<< - * info.shape = self.view.shape - * else: - */ - goto __pyx_L6; - } - - /* "View.MemoryView":529 - * info.shape = self.view.shape - * else: - * info.shape = NULL # <<<<<<<<<<<<<< - * - * if flags & PyBUF_STRIDES: - */ - /*else*/ { - __pyx_v_info->shape = NULL; - } - __pyx_L6:; - - /* "View.MemoryView":531 - * info.shape = NULL - * - * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< - * info.strides = self.view.strides - * else: - */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":532 - * - * if flags & PyBUF_STRIDES: - * info.strides = self.view.strides # <<<<<<<<<<<<<< - * else: - * info.strides = NULL - */ - __pyx_t_3 = __pyx_v_self->view.strides; - __pyx_v_info->strides = __pyx_t_3; - - /* "View.MemoryView":531 - * info.shape = NULL - * - * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< - * info.strides = self.view.strides - * else: - */ - goto __pyx_L7; - } - - /* "View.MemoryView":534 - * info.strides = self.view.strides - * else: - * info.strides = NULL # <<<<<<<<<<<<<< - * - * if flags & PyBUF_INDIRECT: - */ - /*else*/ { - __pyx_v_info->strides = NULL; - } - __pyx_L7:; - - /* "View.MemoryView":536 - * info.strides = NULL - * - * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< - * info.suboffsets = self.view.suboffsets - * else: - */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":537 - * - * if flags & PyBUF_INDIRECT: - * info.suboffsets = self.view.suboffsets # <<<<<<<<<<<<<< - * else: - * info.suboffsets = NULL - */ - __pyx_t_3 = __pyx_v_self->view.suboffsets; - __pyx_v_info->suboffsets = __pyx_t_3; - - /* "View.MemoryView":536 - * info.strides = NULL - * - * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< - * info.suboffsets = self.view.suboffsets - * else: - */ - goto __pyx_L8; - } - - /* "View.MemoryView":539 - * info.suboffsets = self.view.suboffsets - * else: - * info.suboffsets = NULL # <<<<<<<<<<<<<< - * - * if flags & PyBUF_FORMAT: - */ - /*else*/ { - __pyx_v_info->suboffsets = NULL; - } - __pyx_L8:; - - /* "View.MemoryView":541 - * info.suboffsets = NULL - * - * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< - * info.format = self.view.format - * else: - */ - __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":542 - * - * if flags & PyBUF_FORMAT: - * info.format = self.view.format # <<<<<<<<<<<<<< - * else: - * info.format = NULL - */ - __pyx_t_4 = __pyx_v_self->view.format; - __pyx_v_info->format = __pyx_t_4; - - /* "View.MemoryView":541 - * info.suboffsets = NULL - * - * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< - * info.format = self.view.format - * else: - */ - goto __pyx_L9; - } - - /* "View.MemoryView":544 - * info.format = self.view.format - * else: - * info.format = NULL # <<<<<<<<<<<<<< - * - * info.buf = self.view.buf - */ - /*else*/ { - __pyx_v_info->format = NULL; - } - __pyx_L9:; - - /* "View.MemoryView":546 - * info.format = NULL - * - * info.buf = self.view.buf # <<<<<<<<<<<<<< - * info.ndim = self.view.ndim - * info.itemsize = self.view.itemsize - */ - __pyx_t_5 = __pyx_v_self->view.buf; - __pyx_v_info->buf = __pyx_t_5; - - /* "View.MemoryView":547 - * - * info.buf = self.view.buf - * info.ndim = self.view.ndim # <<<<<<<<<<<<<< - * info.itemsize = self.view.itemsize - * info.len = self.view.len - */ - __pyx_t_6 = __pyx_v_self->view.ndim; - __pyx_v_info->ndim = __pyx_t_6; - - /* "View.MemoryView":548 - * info.buf = self.view.buf - * info.ndim = self.view.ndim - * info.itemsize = self.view.itemsize # <<<<<<<<<<<<<< - * info.len = self.view.len - * info.readonly = self.view.readonly - */ - __pyx_t_7 = __pyx_v_self->view.itemsize; - __pyx_v_info->itemsize = __pyx_t_7; - - /* "View.MemoryView":549 - * info.ndim = self.view.ndim - * info.itemsize = self.view.itemsize - * info.len = self.view.len # <<<<<<<<<<<<<< - * info.readonly = self.view.readonly - * info.obj = self - */ - __pyx_t_7 = __pyx_v_self->view.len; - __pyx_v_info->len = __pyx_t_7; - - /* "View.MemoryView":550 - * info.itemsize = self.view.itemsize - * info.len = self.view.len - * info.readonly = self.view.readonly # <<<<<<<<<<<<<< - * info.obj = self - * - */ - __pyx_t_1 = __pyx_v_self->view.readonly; - __pyx_v_info->readonly = __pyx_t_1; - - /* "View.MemoryView":551 - * info.len = self.view.len - * info.readonly = self.view.readonly - * info.obj = self # <<<<<<<<<<<<<< - * - * - */ - __Pyx_INCREF((PyObject *)__pyx_v_self); - __Pyx_GIVEREF((PyObject *)__pyx_v_self); - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); - __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - - /* "View.MemoryView":521 - * itemp[i] = c - * - * @cname('getbuffer') # <<<<<<<<<<<<<< - * def __getbuffer__(self, Py_buffer *info, int flags): - * if flags & PyBUF_WRITABLE and self.view.readonly: - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView.memoryview.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - if (__pyx_v_info->obj != NULL) { - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; - } - goto __pyx_L2; - __pyx_L0:; - if (__pyx_v_info->obj == Py_None) { - __Pyx_GOTREF(__pyx_v_info->obj); - __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0; - } - __pyx_L2:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":554 - * - * - * @property # <<<<<<<<<<<<<< - * def T(self): - * cdef _memoryviewslice result = memoryview_copy(self) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - struct __pyx_memoryviewslice_obj *__pyx_v_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":556 - * @property - * def T(self): - * cdef _memoryviewslice result = memoryview_copy(self) # <<<<<<<<<<<<<< - * transpose_memslice(&result.from_slice) - * return result - */ - __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 556, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(1, 556, __pyx_L1_error) - __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "View.MemoryView":557 - * def T(self): - * cdef _memoryviewslice result = memoryview_copy(self) - * transpose_memslice(&result.from_slice) # <<<<<<<<<<<<<< - * return result - * - */ - __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 557, __pyx_L1_error) - - /* "View.MemoryView":558 - * cdef _memoryviewslice result = memoryview_copy(self) - * transpose_memslice(&result.from_slice) - * return result # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_result); - __pyx_r = ((PyObject *)__pyx_v_result); - goto __pyx_L0; - - /* "View.MemoryView":554 - * - * - * @property # <<<<<<<<<<<<<< - * def T(self): - * cdef _memoryviewslice result = memoryview_copy(self) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("View.MemoryView.memoryview.T.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":560 - * return result - * - * @property # <<<<<<<<<<<<<< - * def base(self): - * return self._get_base() - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":562 - * @property - * def base(self): - * return self._get_base() # <<<<<<<<<<<<<< - * - * cdef _get_base(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->_get_base(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 562, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "View.MemoryView":560 - * return result - * - * @property # <<<<<<<<<<<<<< - * def base(self): - * return self._get_base() - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("View.MemoryView.memoryview.base.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":564 - * return self._get_base() - * - * cdef _get_base(self): # <<<<<<<<<<<<<< - * return self.obj - * - */ - -static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_get_base", 1); - - /* "View.MemoryView":565 - * - * cdef _get_base(self): - * return self.obj # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->obj); - __pyx_r = __pyx_v_self->obj; - goto __pyx_L0; - - /* "View.MemoryView":564 - * return self._get_base() - * - * cdef _get_base(self): # <<<<<<<<<<<<<< - * return self.obj - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":567 - * return self.obj - * - * @property # <<<<<<<<<<<<<< - * def shape(self): - * return tuple([length for length in self.view.shape[:self.view.ndim]]) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - Py_ssize_t __pyx_7genexpr__pyx_v_length; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t *__pyx_t_2; - Py_ssize_t *__pyx_t_3; - Py_ssize_t *__pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":569 - * @property - * def shape(self): - * return tuple([length for length in self.view.shape[:self.view.ndim]]) # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 569, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); - for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { - __pyx_t_2 = __pyx_t_4; - __pyx_7genexpr__pyx_v_length = (__pyx_t_2[0]); - __pyx_t_5 = PyInt_FromSsize_t(__pyx_7genexpr__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 569, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 569, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - } /* exit inner scope */ - __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 569, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - - /* "View.MemoryView":567 - * return self.obj - * - * @property # <<<<<<<<<<<<<< - * def shape(self): - * return tuple([length for length in self.view.shape[:self.view.ndim]]) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("View.MemoryView.memoryview.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":571 - * return tuple([length for length in self.view.shape[:self.view.ndim]]) - * - * @property # <<<<<<<<<<<<<< - * def strides(self): - * if self.view.strides == NULL: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - Py_ssize_t __pyx_8genexpr1__pyx_v_stride; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t *__pyx_t_3; - Py_ssize_t *__pyx_t_4; - Py_ssize_t *__pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":573 - * @property - * def strides(self): - * if self.view.strides == NULL: # <<<<<<<<<<<<<< - * - * raise ValueError, "Buffer view does not expose strides" - */ - __pyx_t_1 = (__pyx_v_self->view.strides == NULL); - if (unlikely(__pyx_t_1)) { - - /* "View.MemoryView":575 - * if self.view.strides == NULL: - * - * raise ValueError, "Buffer view does not expose strides" # <<<<<<<<<<<<<< - * - * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) - */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Buffer_view_does_not_expose_stri, 0, 0); - __PYX_ERR(1, 575, __pyx_L1_error) - - /* "View.MemoryView":573 - * @property - * def strides(self): - * if self.view.strides == NULL: # <<<<<<<<<<<<<< - * - * raise ValueError, "Buffer view does not expose strides" - */ - } - - /* "View.MemoryView":577 - * raise ValueError, "Buffer view does not expose strides" - * - * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - { /* enter inner scope */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 577, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim); - for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { - __pyx_t_3 = __pyx_t_5; - __pyx_8genexpr1__pyx_v_stride = (__pyx_t_3[0]); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_8genexpr1__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 577, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } /* exit inner scope */ - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; - goto __pyx_L0; - - /* "View.MemoryView":571 - * return tuple([length for length in self.view.shape[:self.view.ndim]]) - * - * @property # <<<<<<<<<<<<<< - * def strides(self): - * if self.view.strides == NULL: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("View.MemoryView.memoryview.strides.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":579 - * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) - * - * @property # <<<<<<<<<<<<<< - * def suboffsets(self): - * if self.view.suboffsets == NULL: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - Py_ssize_t __pyx_8genexpr2__pyx_v_suboffset; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - Py_ssize_t *__pyx_t_3; - Py_ssize_t *__pyx_t_4; - Py_ssize_t *__pyx_t_5; - PyObject *__pyx_t_6 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":581 - * @property - * def suboffsets(self): - * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< - * return (-1,) * self.view.ndim - * - */ - __pyx_t_1 = (__pyx_v_self->view.suboffsets == NULL); - if (__pyx_t_1) { - - /* "View.MemoryView":582 - * def suboffsets(self): - * if self.view.suboffsets == NULL: - * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< - * - * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PySequence_Multiply(__pyx_tuple__4, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 582, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":581 - * @property - * def suboffsets(self): - * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< - * return (-1,) * self.view.ndim - * - */ - } - - /* "View.MemoryView":584 - * return (-1,) * self.view.ndim - * - * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - { /* enter inner scope */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 584, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim); - for (__pyx_t_5 = __pyx_v_self->view.suboffsets; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { - __pyx_t_3 = __pyx_t_5; - __pyx_8genexpr2__pyx_v_suboffset = (__pyx_t_3[0]); - __pyx_t_6 = PyInt_FromSsize_t(__pyx_8genexpr2__pyx_v_suboffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 584, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - } /* exit inner scope */ - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; - goto __pyx_L0; - - /* "View.MemoryView":579 - * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) - * - * @property # <<<<<<<<<<<<<< - * def suboffsets(self): - * if self.view.suboffsets == NULL: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("View.MemoryView.memoryview.suboffsets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":586 - * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) - * - * @property # <<<<<<<<<<<<<< - * def ndim(self): - * return self.view.ndim - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":588 - * @property - * def ndim(self): - * return self.view.ndim # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 588, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "View.MemoryView":586 - * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) - * - * @property # <<<<<<<<<<<<<< - * def ndim(self): - * return self.view.ndim - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("View.MemoryView.memoryview.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":590 - * return self.view.ndim - * - * @property # <<<<<<<<<<<<<< - * def itemsize(self): - * return self.view.itemsize - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":592 - * @property - * def itemsize(self): - * return self.view.itemsize # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 592, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "View.MemoryView":590 - * return self.view.ndim - * - * @property # <<<<<<<<<<<<<< - * def itemsize(self): - * return self.view.itemsize - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("View.MemoryView.memoryview.itemsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":594 - * return self.view.itemsize - * - * @property # <<<<<<<<<<<<<< - * def nbytes(self): - * return self.size * self.view.itemsize - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":596 - * @property - * def nbytes(self): - * return self.size * self.view.itemsize # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 596, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 596, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 596, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "View.MemoryView":594 - * return self.view.itemsize - * - * @property # <<<<<<<<<<<<<< - * def nbytes(self): - * return self.size * self.view.itemsize - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("View.MemoryView.memoryview.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":598 - * return self.size * self.view.itemsize - * - * @property # <<<<<<<<<<<<<< - * def size(self): - * if self._size is None: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_v_length = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - Py_ssize_t *__pyx_t_2; - Py_ssize_t *__pyx_t_3; - Py_ssize_t *__pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__get__", 1); - - /* "View.MemoryView":600 - * @property - * def size(self): - * if self._size is None: # <<<<<<<<<<<<<< - * result = 1 - * - */ - __pyx_t_1 = (__pyx_v_self->_size == Py_None); - if (__pyx_t_1) { - - /* "View.MemoryView":601 - * def size(self): - * if self._size is None: - * result = 1 # <<<<<<<<<<<<<< - * - * for length in self.view.shape[:self.view.ndim]: - */ - __Pyx_INCREF(__pyx_int_1); - __pyx_v_result = __pyx_int_1; - - /* "View.MemoryView":603 - * result = 1 - * - * for length in self.view.shape[:self.view.ndim]: # <<<<<<<<<<<<<< - * result *= length - * - */ - __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); - for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { - __pyx_t_2 = __pyx_t_4; - __pyx_t_5 = PyInt_FromSsize_t((__pyx_t_2[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 603, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_5); - __pyx_t_5 = 0; - - /* "View.MemoryView":604 - * - * for length in self.view.shape[:self.view.ndim]: - * result *= length # <<<<<<<<<<<<<< - * - * self._size = result - */ - __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 604, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_5); - __pyx_t_5 = 0; - } - - /* "View.MemoryView":606 - * result *= length - * - * self._size = result # <<<<<<<<<<<<<< - * - * return self._size - */ - __Pyx_INCREF(__pyx_v_result); - __Pyx_GIVEREF(__pyx_v_result); - __Pyx_GOTREF(__pyx_v_self->_size); - __Pyx_DECREF(__pyx_v_self->_size); - __pyx_v_self->_size = __pyx_v_result; - - /* "View.MemoryView":600 - * @property - * def size(self): - * if self._size is None: # <<<<<<<<<<<<<< - * result = 1 - * - */ - } - - /* "View.MemoryView":608 - * self._size = result - * - * return self._size # <<<<<<<<<<<<<< - * - * def __len__(self): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->_size); - __pyx_r = __pyx_v_self->_size; - goto __pyx_L0; - - /* "View.MemoryView":598 - * return self.size * self.view.itemsize - * - * @property # <<<<<<<<<<<<<< - * def size(self): - * if self._size is None: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("View.MemoryView.memoryview.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_length); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":610 - * return self._size - * - * def __len__(self): # <<<<<<<<<<<<<< - * if self.view.ndim >= 1: - * return self.view.shape[0] - */ - -/* Python wrapper */ -static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self); /*proto*/ -static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - Py_ssize_t __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self) { - Py_ssize_t __pyx_r; - int __pyx_t_1; - - /* "View.MemoryView":611 - * - * def __len__(self): - * if self.view.ndim >= 1: # <<<<<<<<<<<<<< - * return self.view.shape[0] - * - */ - __pyx_t_1 = (__pyx_v_self->view.ndim >= 1); - if (__pyx_t_1) { - - /* "View.MemoryView":612 - * def __len__(self): - * if self.view.ndim >= 1: - * return self.view.shape[0] # <<<<<<<<<<<<<< - * - * return 0 - */ - __pyx_r = (__pyx_v_self->view.shape[0]); - goto __pyx_L0; - - /* "View.MemoryView":611 - * - * def __len__(self): - * if self.view.ndim >= 1: # <<<<<<<<<<<<<< - * return self.view.shape[0] - * - */ - } - - /* "View.MemoryView":614 - * return self.view.shape[0] - * - * return 0 # <<<<<<<<<<<<<< - * - * def __repr__(self): - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "View.MemoryView":610 - * return self._size - * - * def __len__(self): # <<<<<<<<<<<<<< - * if self.view.ndim >= 1: - * return self.view.shape[0] - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":616 - * return 0 - * - * def __repr__(self): # <<<<<<<<<<<<<< - * return "" % (self.base.__class__.__name__, - * id(self)) - */ - -/* Python wrapper */ -static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__repr__", 1); - - /* "View.MemoryView":617 - * - * def __repr__(self): - * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< - * id(self)) - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "View.MemoryView":618 - * def __repr__(self): - * return "" % (self.base.__class__.__name__, - * id(self)) # <<<<<<<<<<<<<< - * - * def __str__(self): - */ - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 618, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - - /* "View.MemoryView":617 - * - * def __repr__(self): - * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< - * id(self)) - * - */ - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":616 - * return 0 - * - * def __repr__(self): # <<<<<<<<<<<<<< - * return "" % (self.base.__class__.__name__, - * id(self)) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("View.MemoryView.memoryview.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":620 - * id(self)) - * - * def __str__(self): # <<<<<<<<<<<<<< - * return "" % (self.base.__class__.__name__,) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__str__", 1); - - /* "View.MemoryView":621 - * - * def __str__(self): - * return "" % (self.base.__class__.__name__,) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 621, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 621, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "View.MemoryView":620 - * id(self)) - * - * def __str__(self): # <<<<<<<<<<<<<< - * return "" % (self.base.__class__.__name__,) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.memoryview.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":624 - * - * - * def is_c_contig(self): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice *mslice - * cdef __Pyx_memviewslice tmp - */ - -/* Python wrapper */ -static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_c_contig (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("is_c_contig", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "is_c_contig", 0))) return NULL; - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self) { - __Pyx_memviewslice *__pyx_v_mslice; - __Pyx_memviewslice __pyx_v_tmp; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_memviewslice *__pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("is_c_contig", 1); - - /* "View.MemoryView":627 - * cdef __Pyx_memviewslice *mslice - * cdef __Pyx_memviewslice tmp - * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< - * return slice_is_contig(mslice[0], 'C', self.view.ndim) - * - */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 627, __pyx_L1_error) - __pyx_v_mslice = __pyx_t_1; - - /* "View.MemoryView":628 - * cdef __Pyx_memviewslice tmp - * mslice = get_slice_from_memview(self, &tmp) - * return slice_is_contig(mslice[0], 'C', self.view.ndim) # <<<<<<<<<<<<<< - * - * def is_f_contig(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 628, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":624 - * - * - * def is_c_contig(self): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice *mslice - * cdef __Pyx_memviewslice tmp - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.memoryview.is_c_contig", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":630 - * return slice_is_contig(mslice[0], 'C', self.view.ndim) - * - * def is_f_contig(self): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice *mslice - * cdef __Pyx_memviewslice tmp - */ - -/* Python wrapper */ -static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_f_contig (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("is_f_contig", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "is_f_contig", 0))) return NULL; - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self) { - __Pyx_memviewslice *__pyx_v_mslice; - __Pyx_memviewslice __pyx_v_tmp; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_memviewslice *__pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("is_f_contig", 1); - - /* "View.MemoryView":633 - * cdef __Pyx_memviewslice *mslice - * cdef __Pyx_memviewslice tmp - * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< - * return slice_is_contig(mslice[0], 'F', self.view.ndim) - * - */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)NULL))) __PYX_ERR(1, 633, __pyx_L1_error) - __pyx_v_mslice = __pyx_t_1; - - /* "View.MemoryView":634 - * cdef __Pyx_memviewslice tmp - * mslice = get_slice_from_memview(self, &tmp) - * return slice_is_contig(mslice[0], 'F', self.view.ndim) # <<<<<<<<<<<<<< - * - * def copy(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":630 - * return slice_is_contig(mslice[0], 'C', self.view.ndim) - * - * def is_f_contig(self): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice *mslice - * cdef __Pyx_memviewslice tmp - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.memoryview.is_f_contig", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":636 - * return slice_is_contig(mslice[0], 'F', self.view.ndim) - * - * def copy(self): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice mslice - * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS - */ - -/* Python wrapper */ -static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("copy (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL; - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self) { - __Pyx_memviewslice __pyx_v_mslice; - int __pyx_v_flags; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_memviewslice __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("copy", 1); - - /* "View.MemoryView":638 - * def copy(self): - * cdef __Pyx_memviewslice mslice - * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS # <<<<<<<<<<<<<< - * - * slice_copy(self, &mslice) - */ - __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS)); - - /* "View.MemoryView":640 - * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS - * - * slice_copy(self, &mslice) # <<<<<<<<<<<<<< - * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, - * self.view.itemsize, - */ - __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice)); - - /* "View.MemoryView":641 - * - * slice_copy(self, &mslice) - * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, # <<<<<<<<<<<<<< - * self.view.itemsize, - * flags|PyBUF_C_CONTIGUOUS, - */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 641, __pyx_L1_error) - __pyx_v_mslice = __pyx_t_1; - - /* "View.MemoryView":646 - * self.dtype_is_object) - * - * return memoryview_copy_from_slice(self, &mslice) # <<<<<<<<<<<<<< - * - * def copy_fortran(self): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 646, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":636 - * return slice_is_contig(mslice[0], 'F', self.view.ndim) - * - * def copy(self): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice mslice - * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.memoryview.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":648 - * return memoryview_copy_from_slice(self, &mslice) - * - * def copy_fortran(self): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice src, dst - * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS - */ - -/* Python wrapper */ -static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("copy_fortran (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("copy_fortran", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy_fortran", 0))) return NULL; - __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self) { - __Pyx_memviewslice __pyx_v_src; - __Pyx_memviewslice __pyx_v_dst; - int __pyx_v_flags; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_memviewslice __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("copy_fortran", 1); - - /* "View.MemoryView":650 - * def copy_fortran(self): - * cdef __Pyx_memviewslice src, dst - * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS # <<<<<<<<<<<<<< - * - * slice_copy(self, &src) - */ - __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS)); - - /* "View.MemoryView":652 - * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS - * - * slice_copy(self, &src) # <<<<<<<<<<<<<< - * dst = slice_copy_contig(&src, "fortran", self.view.ndim, - * self.view.itemsize, - */ - __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src)); - - /* "View.MemoryView":653 - * - * slice_copy(self, &src) - * dst = slice_copy_contig(&src, "fortran", self.view.ndim, # <<<<<<<<<<<<<< - * self.view.itemsize, - * flags|PyBUF_F_CONTIGUOUS, - */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 653, __pyx_L1_error) - __pyx_v_dst = __pyx_t_1; - - /* "View.MemoryView":658 - * self.dtype_is_object) - * - * return memoryview_copy_from_slice(self, &dst) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":648 - * return memoryview_copy_from_slice(self, &mslice) - * - * def copy_fortran(self): # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice src, dst - * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.memoryview.copy_fortran", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf___pyx_memoryview___reduce_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView.memoryview.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("View.MemoryView.memoryview.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf___pyx_memoryview_2__setstate_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView.memoryview.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":662 - * - * @cname('__pyx_memoryview_new') - * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< - * cdef memoryview result = memoryview(o, flags, dtype_is_object) - * result.typeinfo = typeinfo - */ - -static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, int __pyx_v_dtype_is_object, __Pyx_TypeInfo *__pyx_v_typeinfo) { - struct __pyx_memoryview_obj *__pyx_v_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("memoryview_cwrapper", 1); - - /* "View.MemoryView":663 - * @cname('__pyx_memoryview_new') - * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): - * cdef memoryview result = memoryview(o, flags, dtype_is_object) # <<<<<<<<<<<<<< - * result.typeinfo = typeinfo - * return result - */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 663, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 663, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_o); - __Pyx_GIVEREF(__pyx_v_o); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_o)) __PYX_ERR(1, 663, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(1, 663, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 663, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "View.MemoryView":664 - * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): - * cdef memoryview result = memoryview(o, flags, dtype_is_object) - * result.typeinfo = typeinfo # <<<<<<<<<<<<<< - * return result - * - */ - __pyx_v_result->typeinfo = __pyx_v_typeinfo; - - /* "View.MemoryView":665 - * cdef memoryview result = memoryview(o, flags, dtype_is_object) - * result.typeinfo = typeinfo - * return result # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_check') - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_result); - __pyx_r = ((PyObject *)__pyx_v_result); - goto __pyx_L0; - - /* "View.MemoryView":662 - * - * @cname('__pyx_memoryview_new') - * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo): # <<<<<<<<<<<<<< - * cdef memoryview result = memoryview(o, flags, dtype_is_object) - * result.typeinfo = typeinfo - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("View.MemoryView.memoryview_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":668 - * - * @cname('__pyx_memoryview_check') - * cdef inline bint memoryview_check(object o) noexcept: # <<<<<<<<<<<<<< - * return isinstance(o, memoryview) - * - */ - -static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { - int __pyx_r; - int __pyx_t_1; - - /* "View.MemoryView":669 - * @cname('__pyx_memoryview_check') - * cdef inline bint memoryview_check(object o) noexcept: - * return isinstance(o, memoryview) # <<<<<<<<<<<<<< - * - * cdef tuple _unellipsify(object index, int ndim): - */ - __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o, __pyx_memoryview_type); - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "View.MemoryView":668 - * - * @cname('__pyx_memoryview_check') - * cdef inline bint memoryview_check(object o) noexcept: # <<<<<<<<<<<<<< - * return isinstance(o, memoryview) - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":671 - * return isinstance(o, memoryview) - * - * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< - * """ - * Replace all ellipses with full slices and fill incomplete indices with - */ - -static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { - Py_ssize_t __pyx_v_idx; - PyObject *__pyx_v_tup = NULL; - PyObject *__pyx_v_result = NULL; - int __pyx_v_have_slices; - int __pyx_v_seen_ellipsis; - PyObject *__pyx_v_item = NULL; - Py_ssize_t __pyx_v_nslices; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - Py_ssize_t __pyx_t_4; - Py_ssize_t __pyx_t_5; - Py_UCS4 __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_unellipsify", 1); - - /* "View.MemoryView":677 - * """ - * cdef Py_ssize_t idx - * tup = index if isinstance(index, tuple) else (index,) # <<<<<<<<<<<<<< - * - * result = [slice(None)] * ndim - */ - __pyx_t_2 = PyTuple_Check(__pyx_v_index); - if (__pyx_t_2) { - __Pyx_INCREF(((PyObject*)__pyx_v_index)); - __pyx_t_1 = __pyx_v_index; - } else { - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_index); - __Pyx_GIVEREF(__pyx_v_index); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index)) __PYX_ERR(1, 677, __pyx_L1_error); - __pyx_t_1 = __pyx_t_3; - __pyx_t_3 = 0; - } - __pyx_v_tup = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "View.MemoryView":679 - * tup = index if isinstance(index, tuple) else (index,) - * - * result = [slice(None)] * ndim # <<<<<<<<<<<<<< - * have_slices = False - * seen_ellipsis = False - */ - __pyx_t_1 = PyList_New(1 * ((__pyx_v_ndim<0) ? 0:__pyx_v_ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 679, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - { Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < __pyx_v_ndim; __pyx_temp++) { - __Pyx_INCREF(__pyx_slice__5); - __Pyx_GIVEREF(__pyx_slice__5); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_slice__5)) __PYX_ERR(1, 679, __pyx_L1_error); - } - } - __pyx_v_result = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "View.MemoryView":680 - * - * result = [slice(None)] * ndim - * have_slices = False # <<<<<<<<<<<<<< - * seen_ellipsis = False - * idx = 0 - */ - __pyx_v_have_slices = 0; - - /* "View.MemoryView":681 - * result = [slice(None)] * ndim - * have_slices = False - * seen_ellipsis = False # <<<<<<<<<<<<<< - * idx = 0 - * for item in tup: - */ - __pyx_v_seen_ellipsis = 0; - - /* "View.MemoryView":682 - * have_slices = False - * seen_ellipsis = False - * idx = 0 # <<<<<<<<<<<<<< - * for item in tup: - * if item is Ellipsis: - */ - __pyx_v_idx = 0; - - /* "View.MemoryView":683 - * seen_ellipsis = False - * idx = 0 - * for item in tup: # <<<<<<<<<<<<<< - * if item is Ellipsis: - * if not seen_ellipsis: - */ - if (unlikely(__pyx_v_tup == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(1, 683, __pyx_L1_error) - } - __pyx_t_1 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_1); - __pyx_t_4 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 683, __pyx_L1_error) - #endif - if (__pyx_t_4 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(1, 683, __pyx_L1_error) - #else - __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 683, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - #endif - __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_3); - __pyx_t_3 = 0; - - /* "View.MemoryView":684 - * idx = 0 - * for item in tup: - * if item is Ellipsis: # <<<<<<<<<<<<<< - * if not seen_ellipsis: - * idx += ndim - len(tup) - */ - __pyx_t_2 = (__pyx_v_item == __pyx_builtin_Ellipsis); - if (__pyx_t_2) { - - /* "View.MemoryView":685 - * for item in tup: - * if item is Ellipsis: - * if not seen_ellipsis: # <<<<<<<<<<<<<< - * idx += ndim - len(tup) - * seen_ellipsis = True - */ - __pyx_t_2 = (!__pyx_v_seen_ellipsis); - if (__pyx_t_2) { - - /* "View.MemoryView":686 - * if item is Ellipsis: - * if not seen_ellipsis: - * idx += ndim - len(tup) # <<<<<<<<<<<<<< - * seen_ellipsis = True - * have_slices = True - */ - if (unlikely(__pyx_v_tup == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 686, __pyx_L1_error) - } - __pyx_t_5 = __Pyx_PyTuple_GET_SIZE(__pyx_v_tup); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 686, __pyx_L1_error) - __pyx_v_idx = (__pyx_v_idx + (__pyx_v_ndim - __pyx_t_5)); - - /* "View.MemoryView":687 - * if not seen_ellipsis: - * idx += ndim - len(tup) - * seen_ellipsis = True # <<<<<<<<<<<<<< - * have_slices = True - * else: - */ - __pyx_v_seen_ellipsis = 1; - - /* "View.MemoryView":685 - * for item in tup: - * if item is Ellipsis: - * if not seen_ellipsis: # <<<<<<<<<<<<<< - * idx += ndim - len(tup) - * seen_ellipsis = True - */ - } - - /* "View.MemoryView":688 - * idx += ndim - len(tup) - * seen_ellipsis = True - * have_slices = True # <<<<<<<<<<<<<< - * else: - * if isinstance(item, slice): - */ - __pyx_v_have_slices = 1; - - /* "View.MemoryView":684 - * idx = 0 - * for item in tup: - * if item is Ellipsis: # <<<<<<<<<<<<<< - * if not seen_ellipsis: - * idx += ndim - len(tup) - */ - goto __pyx_L5; - } - - /* "View.MemoryView":690 - * have_slices = True - * else: - * if isinstance(item, slice): # <<<<<<<<<<<<<< - * have_slices = True - * elif not PyIndex_Check(item): - */ - /*else*/ { - __pyx_t_2 = PySlice_Check(__pyx_v_item); - if (__pyx_t_2) { - - /* "View.MemoryView":691 - * else: - * if isinstance(item, slice): - * have_slices = True # <<<<<<<<<<<<<< - * elif not PyIndex_Check(item): - * raise TypeError, f"Cannot index with type '{type(item)}'" - */ - __pyx_v_have_slices = 1; - - /* "View.MemoryView":690 - * have_slices = True - * else: - * if isinstance(item, slice): # <<<<<<<<<<<<<< - * have_slices = True - * elif not PyIndex_Check(item): - */ - goto __pyx_L7; - } - - /* "View.MemoryView":692 - * if isinstance(item, slice): - * have_slices = True - * elif not PyIndex_Check(item): # <<<<<<<<<<<<<< - * raise TypeError, f"Cannot index with type '{type(item)}'" - * result[idx] = item - */ - __pyx_t_2 = (!(PyIndex_Check(__pyx_v_item) != 0)); - if (unlikely(__pyx_t_2)) { - - /* "View.MemoryView":693 - * have_slices = True - * elif not PyIndex_Check(item): - * raise TypeError, f"Cannot index with type '{type(item)}'" # <<<<<<<<<<<<<< - * result[idx] = item - * idx += 1 - */ - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = 0; - __pyx_t_6 = 127; - __Pyx_INCREF(__pyx_kp_u_Cannot_index_with_type); - __pyx_t_5 += 24; - __Pyx_GIVEREF(__pyx_kp_u_Cannot_index_with_type); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Cannot_index_with_type); - __pyx_t_7 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_item)), __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7); - __pyx_t_7 = 0; - __Pyx_INCREF(__pyx_kp_u__6); - __pyx_t_5 += 1; - __Pyx_GIVEREF(__pyx_kp_u__6); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__6); - __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 693, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_7, 0, 0); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __PYX_ERR(1, 693, __pyx_L1_error) - - /* "View.MemoryView":692 - * if isinstance(item, slice): - * have_slices = True - * elif not PyIndex_Check(item): # <<<<<<<<<<<<<< - * raise TypeError, f"Cannot index with type '{type(item)}'" - * result[idx] = item - */ - } - __pyx_L7:; - - /* "View.MemoryView":694 - * elif not PyIndex_Check(item): - * raise TypeError, f"Cannot index with type '{type(item)}'" - * result[idx] = item # <<<<<<<<<<<<<< - * idx += 1 - * - */ - if (unlikely((__Pyx_SetItemInt(__pyx_v_result, __pyx_v_idx, __pyx_v_item, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1) < 0))) __PYX_ERR(1, 694, __pyx_L1_error) - } - __pyx_L5:; - - /* "View.MemoryView":695 - * raise TypeError, f"Cannot index with type '{type(item)}'" - * result[idx] = item - * idx += 1 # <<<<<<<<<<<<<< - * - * nslices = ndim - idx - */ - __pyx_v_idx = (__pyx_v_idx + 1); - - /* "View.MemoryView":683 - * seen_ellipsis = False - * idx = 0 - * for item in tup: # <<<<<<<<<<<<<< - * if item is Ellipsis: - * if not seen_ellipsis: - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "View.MemoryView":697 - * idx += 1 - * - * nslices = ndim - idx # <<<<<<<<<<<<<< - * return have_slices or nslices, tuple(result) - * - */ - __pyx_v_nslices = (__pyx_v_ndim - __pyx_v_idx); - - /* "View.MemoryView":698 - * - * nslices = ndim - idx - * return have_slices or nslices, tuple(result) # <<<<<<<<<<<<<< - * - * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: - */ - __Pyx_XDECREF(__pyx_r); - if (!__pyx_v_have_slices) { - } else { - __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = __pyx_t_7; - __pyx_t_7 = 0; - goto __pyx_L9_bool_binop_done; - } - __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = __pyx_t_7; - __pyx_t_7 = 0; - __pyx_L9_bool_binop_done:; - __pyx_t_7 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 698, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(1, 698, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_7 = 0; - __pyx_r = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "View.MemoryView":671 - * return isinstance(o, memoryview) - * - * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< - * """ - * Replace all ellipses with full slices and fill incomplete indices with - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("View.MemoryView._unellipsify", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_tup); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XDECREF(__pyx_v_item); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":700 - * return have_slices or nslices, tuple(result) - * - * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: # <<<<<<<<<<<<<< - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: - */ - -static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ndim) { - Py_ssize_t __pyx_v_suboffset; - int __pyx_r; - Py_ssize_t *__pyx_t_1; - Py_ssize_t *__pyx_t_2; - Py_ssize_t *__pyx_t_3; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - - /* "View.MemoryView":701 - * - * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: - * for suboffset in suboffsets[:ndim]: # <<<<<<<<<<<<<< - * if suboffset >= 0: - * raise ValueError, "Indirect dimensions not supported" - */ - __pyx_t_2 = (__pyx_v_suboffsets + __pyx_v_ndim); - for (__pyx_t_3 = __pyx_v_suboffsets; __pyx_t_3 < __pyx_t_2; __pyx_t_3++) { - __pyx_t_1 = __pyx_t_3; - __pyx_v_suboffset = (__pyx_t_1[0]); - - /* "View.MemoryView":702 - * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: # <<<<<<<<<<<<<< - * raise ValueError, "Indirect dimensions not supported" - * return 0 # return type just used as an error flag - */ - __pyx_t_4 = (__pyx_v_suboffset >= 0); - if (unlikely(__pyx_t_4)) { - - /* "View.MemoryView":703 - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: - * raise ValueError, "Indirect dimensions not supported" # <<<<<<<<<<<<<< - * return 0 # return type just used as an error flag - * - */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_Indirect_dimensions_not_supporte, 0, 0); - __PYX_ERR(1, 703, __pyx_L1_error) - - /* "View.MemoryView":702 - * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: # <<<<<<<<<<<<<< - * raise ValueError, "Indirect dimensions not supported" - * return 0 # return type just used as an error flag - */ - } - } - - /* "View.MemoryView":704 - * if suboffset >= 0: - * raise ValueError, "Indirect dimensions not supported" - * return 0 # return type just used as an error flag # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "View.MemoryView":700 - * return have_slices or nslices, tuple(result) - * - * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: # <<<<<<<<<<<<<< - * for suboffset in suboffsets[:ndim]: - * if suboffset >= 0: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView.assert_direct_dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":711 - * - * @cname('__pyx_memview_slice') - * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< - * cdef int new_ndim = 0, suboffset_dim = -1, dim - * cdef bint negative_step - */ - -static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *__pyx_v_memview, PyObject *__pyx_v_indices) { - int __pyx_v_new_ndim; - int __pyx_v_suboffset_dim; - int __pyx_v_dim; - __Pyx_memviewslice __pyx_v_src; - __Pyx_memviewslice __pyx_v_dst; - __Pyx_memviewslice *__pyx_v_p_src; - struct __pyx_memoryviewslice_obj *__pyx_v_memviewsliceobj = 0; - __Pyx_memviewslice *__pyx_v_p_dst; - int *__pyx_v_p_suboffset_dim; - Py_ssize_t __pyx_v_start; - Py_ssize_t __pyx_v_stop; - Py_ssize_t __pyx_v_step; - Py_ssize_t __pyx_v_cindex; - int __pyx_v_have_start; - int __pyx_v_have_stop; - int __pyx_v_have_step; - PyObject *__pyx_v_index = NULL; - struct __pyx_memoryview_obj *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - struct __pyx_memoryview_obj *__pyx_t_3; - char *__pyx_t_4; - int __pyx_t_5; - Py_ssize_t __pyx_t_6; - PyObject *(*__pyx_t_7)(PyObject *); - PyObject *__pyx_t_8 = NULL; - Py_ssize_t __pyx_t_9; - int __pyx_t_10; - Py_ssize_t __pyx_t_11; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("memview_slice", 1); - - /* "View.MemoryView":712 - * @cname('__pyx_memview_slice') - * cdef memoryview memview_slice(memoryview memview, object indices): - * cdef int new_ndim = 0, suboffset_dim = -1, dim # <<<<<<<<<<<<<< - * cdef bint negative_step - * cdef __Pyx_memviewslice src, dst - */ - __pyx_v_new_ndim = 0; - __pyx_v_suboffset_dim = -1; - - /* "View.MemoryView":719 - * - * - * memset(&dst, 0, sizeof(dst)) # <<<<<<<<<<<<<< - * - * cdef _memoryviewslice memviewsliceobj - */ - (void)(memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst)))); - - /* "View.MemoryView":723 - * cdef _memoryviewslice memviewsliceobj - * - * assert memview.view.ndim > 0 # <<<<<<<<<<<<<< - * - * if isinstance(memview, _memoryviewslice): - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_1 = (__pyx_v_memview->view.ndim > 0); - if (unlikely(!__pyx_t_1)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(1, 723, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(1, 723, __pyx_L1_error) - #endif - - /* "View.MemoryView":725 - * assert memview.view.ndim > 0 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * memviewsliceobj = memview - * p_src = &memviewsliceobj.from_slice - */ - __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); - if (__pyx_t_1) { - - /* "View.MemoryView":726 - * - * if isinstance(memview, _memoryviewslice): - * memviewsliceobj = memview # <<<<<<<<<<<<<< - * p_src = &memviewsliceobj.from_slice - * else: - */ - if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 726, __pyx_L1_error) - __pyx_t_2 = ((PyObject *)__pyx_v_memview); - __Pyx_INCREF(__pyx_t_2); - __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "View.MemoryView":727 - * if isinstance(memview, _memoryviewslice): - * memviewsliceobj = memview - * p_src = &memviewsliceobj.from_slice # <<<<<<<<<<<<<< - * else: - * slice_copy(memview, &src) - */ - __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice); - - /* "View.MemoryView":725 - * assert memview.view.ndim > 0 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * memviewsliceobj = memview - * p_src = &memviewsliceobj.from_slice - */ - goto __pyx_L3; - } - - /* "View.MemoryView":729 - * p_src = &memviewsliceobj.from_slice - * else: - * slice_copy(memview, &src) # <<<<<<<<<<<<<< - * p_src = &src - * - */ - /*else*/ { - __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src)); - - /* "View.MemoryView":730 - * else: - * slice_copy(memview, &src) - * p_src = &src # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_p_src = (&__pyx_v_src); - } - __pyx_L3:; - - /* "View.MemoryView":736 - * - * - * dst.memview = p_src.memview # <<<<<<<<<<<<<< - * dst.data = p_src.data - * - */ - __pyx_t_3 = __pyx_v_p_src->memview; - __pyx_v_dst.memview = __pyx_t_3; - - /* "View.MemoryView":737 - * - * dst.memview = p_src.memview - * dst.data = p_src.data # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_4 = __pyx_v_p_src->data; - __pyx_v_dst.data = __pyx_t_4; - - /* "View.MemoryView":742 - * - * - * cdef __Pyx_memviewslice *p_dst = &dst # <<<<<<<<<<<<<< - * cdef int *p_suboffset_dim = &suboffset_dim - * cdef Py_ssize_t start, stop, step, cindex - */ - __pyx_v_p_dst = (&__pyx_v_dst); - - /* "View.MemoryView":743 - * - * cdef __Pyx_memviewslice *p_dst = &dst - * cdef int *p_suboffset_dim = &suboffset_dim # <<<<<<<<<<<<<< - * cdef Py_ssize_t start, stop, step, cindex - * cdef bint have_start, have_stop, have_step - */ - __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim); - - /* "View.MemoryView":747 - * cdef bint have_start, have_stop, have_step - * - * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< - * if PyIndex_Check(index): - * cindex = index - */ - __pyx_t_5 = 0; - if (likely(PyList_CheckExact(__pyx_v_indices)) || PyTuple_CheckExact(__pyx_v_indices)) { - __pyx_t_2 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_2); - __pyx_t_6 = 0; - __pyx_t_7 = NULL; - } else { - __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 747, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 747, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_7)) { - if (likely(PyList_CheckExact(__pyx_t_2))) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 747, __pyx_L1_error) - #endif - if (__pyx_t_6 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_8 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(1, 747, __pyx_L1_error) - #else - __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 747, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - #endif - } else { - { - Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 747, __pyx_L1_error) - #endif - if (__pyx_t_6 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_8); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(1, 747, __pyx_L1_error) - #else - __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 747, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - #endif - } - } else { - __pyx_t_8 = __pyx_t_7(__pyx_t_2); - if (unlikely(!__pyx_t_8)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(1, 747, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_8); - } - __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_8); - __pyx_t_8 = 0; - __pyx_v_dim = __pyx_t_5; - __pyx_t_5 = (__pyx_t_5 + 1); - - /* "View.MemoryView":748 - * - * for dim, index in enumerate(indices): - * if PyIndex_Check(index): # <<<<<<<<<<<<<< - * cindex = index - * slice_memviewslice( - */ - __pyx_t_1 = (PyIndex_Check(__pyx_v_index) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":749 - * for dim, index in enumerate(indices): - * if PyIndex_Check(index): - * cindex = index # <<<<<<<<<<<<<< - * slice_memviewslice( - * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], - */ - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 749, __pyx_L1_error) - __pyx_v_cindex = __pyx_t_9; - - /* "View.MemoryView":750 - * if PyIndex_Check(index): - * cindex = index - * slice_memviewslice( # <<<<<<<<<<<<<< - * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], - * dim, new_ndim, p_suboffset_dim, - */ - __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_cindex, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 750, __pyx_L1_error) - - /* "View.MemoryView":748 - * - * for dim, index in enumerate(indices): - * if PyIndex_Check(index): # <<<<<<<<<<<<<< - * cindex = index - * slice_memviewslice( - */ - goto __pyx_L6; - } - - /* "View.MemoryView":756 - * 0, 0, 0, # have_{start,stop,step} - * False) - * elif index is None: # <<<<<<<<<<<<<< - * p_dst.shape[new_ndim] = 1 - * p_dst.strides[new_ndim] = 0 - */ - __pyx_t_1 = (__pyx_v_index == Py_None); - if (__pyx_t_1) { - - /* "View.MemoryView":757 - * False) - * elif index is None: - * p_dst.shape[new_ndim] = 1 # <<<<<<<<<<<<<< - * p_dst.strides[new_ndim] = 0 - * p_dst.suboffsets[new_ndim] = -1 - */ - (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1; - - /* "View.MemoryView":758 - * elif index is None: - * p_dst.shape[new_ndim] = 1 - * p_dst.strides[new_ndim] = 0 # <<<<<<<<<<<<<< - * p_dst.suboffsets[new_ndim] = -1 - * new_ndim += 1 - */ - (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0; - - /* "View.MemoryView":759 - * p_dst.shape[new_ndim] = 1 - * p_dst.strides[new_ndim] = 0 - * p_dst.suboffsets[new_ndim] = -1 # <<<<<<<<<<<<<< - * new_ndim += 1 - * else: - */ - (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L; - - /* "View.MemoryView":760 - * p_dst.strides[new_ndim] = 0 - * p_dst.suboffsets[new_ndim] = -1 - * new_ndim += 1 # <<<<<<<<<<<<<< - * else: - * start = index.start or 0 - */ - __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); - - /* "View.MemoryView":756 - * 0, 0, 0, # have_{start,stop,step} - * False) - * elif index is None: # <<<<<<<<<<<<<< - * p_dst.shape[new_ndim] = 1 - * p_dst.strides[new_ndim] = 0 - */ - goto __pyx_L6; - } - - /* "View.MemoryView":762 - * new_ndim += 1 - * else: - * start = index.start or 0 # <<<<<<<<<<<<<< - * stop = index.stop or 0 - * step = index.step or 0 - */ - /*else*/ { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 762, __pyx_L1_error) - if (!__pyx_t_1) { - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 762, __pyx_L1_error) - __pyx_t_9 = __pyx_t_11; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L7_bool_binop_done; - } - __pyx_t_9 = 0; - __pyx_L7_bool_binop_done:; - __pyx_v_start = __pyx_t_9; - - /* "View.MemoryView":763 - * else: - * start = index.start or 0 - * stop = index.stop or 0 # <<<<<<<<<<<<<< - * step = index.step or 0 - * - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 763, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 763, __pyx_L1_error) - if (!__pyx_t_1) { - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 763, __pyx_L1_error) - __pyx_t_9 = __pyx_t_11; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L9_bool_binop_done; - } - __pyx_t_9 = 0; - __pyx_L9_bool_binop_done:; - __pyx_v_stop = __pyx_t_9; - - /* "View.MemoryView":764 - * start = index.start or 0 - * stop = index.stop or 0 - * step = index.step or 0 # <<<<<<<<<<<<<< - * - * have_start = index.start is not None - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 764, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 764, __pyx_L1_error) - if (!__pyx_t_1) { - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 764, __pyx_L1_error) - __pyx_t_9 = __pyx_t_11; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - goto __pyx_L11_bool_binop_done; - } - __pyx_t_9 = 0; - __pyx_L11_bool_binop_done:; - __pyx_v_step = __pyx_t_9; - - /* "View.MemoryView":766 - * step = index.step or 0 - * - * have_start = index.start is not None # <<<<<<<<<<<<<< - * have_stop = index.stop is not None - * have_step = index.step is not None - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 766, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = (__pyx_t_8 != Py_None); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_have_start = __pyx_t_1; - - /* "View.MemoryView":767 - * - * have_start = index.start is not None - * have_stop = index.stop is not None # <<<<<<<<<<<<<< - * have_step = index.step is not None - * - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 767, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = (__pyx_t_8 != Py_None); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_have_stop = __pyx_t_1; - - /* "View.MemoryView":768 - * have_start = index.start is not None - * have_stop = index.stop is not None - * have_step = index.step is not None # <<<<<<<<<<<<<< - * - * slice_memviewslice( - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 768, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = (__pyx_t_8 != Py_None); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_have_step = __pyx_t_1; - - /* "View.MemoryView":770 - * have_step = index.step is not None - * - * slice_memviewslice( # <<<<<<<<<<<<<< - * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], - * dim, new_ndim, p_suboffset_dim, - */ - __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 770, __pyx_L1_error) - - /* "View.MemoryView":776 - * have_start, have_stop, have_step, - * True) - * new_ndim += 1 # <<<<<<<<<<<<<< - * - * if isinstance(memview, _memoryviewslice): - */ - __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); - } - __pyx_L6:; - - /* "View.MemoryView":747 - * cdef bint have_start, have_stop, have_step - * - * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< - * if PyIndex_Check(index): - * cindex = index - */ - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "View.MemoryView":778 - * new_ndim += 1 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * return memoryview_fromslice(dst, new_ndim, - * memviewsliceobj.to_object_func, - */ - __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); - if (__pyx_t_1) { - - /* "View.MemoryView":779 - * - * if isinstance(memview, _memoryviewslice): - * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< - * memviewsliceobj.to_object_func, - * memviewsliceobj.to_dtype_func, - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - - /* "View.MemoryView":780 - * if isinstance(memview, _memoryviewslice): - * return memoryview_fromslice(dst, new_ndim, - * memviewsliceobj.to_object_func, # <<<<<<<<<<<<<< - * memviewsliceobj.to_dtype_func, - * memview.dtype_is_object) - */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 780, __pyx_L1_error) } - - /* "View.MemoryView":781 - * return memoryview_fromslice(dst, new_ndim, - * memviewsliceobj.to_object_func, - * memviewsliceobj.to_dtype_func, # <<<<<<<<<<<<<< - * memview.dtype_is_object) - * else: - */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 781, __pyx_L1_error) } - - /* "View.MemoryView":779 - * - * if isinstance(memview, _memoryviewslice): - * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< - * memviewsliceobj.to_object_func, - * memviewsliceobj.to_dtype_func, - */ - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 779, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_memoryview_type))))) __PYX_ERR(1, 779, __pyx_L1_error) - __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_2); - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":778 - * new_ndim += 1 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * return memoryview_fromslice(dst, new_ndim, - * memviewsliceobj.to_object_func, - */ - } - - /* "View.MemoryView":784 - * memview.dtype_is_object) - * else: - * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< - * memview.dtype_is_object) - * - */ - /*else*/ { - __Pyx_XDECREF((PyObject *)__pyx_r); - - /* "View.MemoryView":785 - * else: - * return memoryview_fromslice(dst, new_ndim, NULL, NULL, - * memview.dtype_is_object) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 784, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - - /* "View.MemoryView":784 - * memview.dtype_is_object) - * else: - * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< - * memview.dtype_is_object) - * - */ - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_memoryview_type))))) __PYX_ERR(1, 784, __pyx_L1_error) - __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_2); - __pyx_t_2 = 0; - goto __pyx_L0; - } - - /* "View.MemoryView":711 - * - * @cname('__pyx_memview_slice') - * cdef memoryview memview_slice(memoryview memview, object indices): # <<<<<<<<<<<<<< - * cdef int new_ndim = 0, suboffset_dim = -1, dim - * cdef bint negative_step - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("View.MemoryView.memview_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_memviewsliceobj); - __Pyx_XDECREF(__pyx_v_index); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":793 - * - * @cname('__pyx_memoryview_slice_memviewslice') - * cdef int slice_memviewslice( # <<<<<<<<<<<<<< - * __Pyx_memviewslice *dst, - * Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset, - */ - -static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, Py_ssize_t __pyx_v_shape, Py_ssize_t __pyx_v_stride, Py_ssize_t __pyx_v_suboffset, int __pyx_v_dim, int __pyx_v_new_ndim, int *__pyx_v_suboffset_dim, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_stop, Py_ssize_t __pyx_v_step, int __pyx_v_have_start, int __pyx_v_have_stop, int __pyx_v_have_step, int __pyx_v_is_slice) { - Py_ssize_t __pyx_v_new_shape; - int __pyx_v_negative_step; - int __pyx_r; - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save; - #endif - - /* "View.MemoryView":813 - * cdef bint negative_step - * - * if not is_slice: # <<<<<<<<<<<<<< - * - * if start < 0: - */ - __pyx_t_1 = (!__pyx_v_is_slice); - if (__pyx_t_1) { - - /* "View.MemoryView":815 - * if not is_slice: - * - * if start < 0: # <<<<<<<<<<<<<< - * start += shape - * if not 0 <= start < shape: - */ - __pyx_t_1 = (__pyx_v_start < 0); - if (__pyx_t_1) { - - /* "View.MemoryView":816 - * - * if start < 0: - * start += shape # <<<<<<<<<<<<<< - * if not 0 <= start < shape: - * _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim) - */ - __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - - /* "View.MemoryView":815 - * if not is_slice: - * - * if start < 0: # <<<<<<<<<<<<<< - * start += shape - * if not 0 <= start < shape: - */ - } - - /* "View.MemoryView":817 - * if start < 0: - * start += shape - * if not 0 <= start < shape: # <<<<<<<<<<<<<< - * _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim) - * else: - */ - __pyx_t_1 = (0 <= __pyx_v_start); - if (__pyx_t_1) { - __pyx_t_1 = (__pyx_v_start < __pyx_v_shape); - } - __pyx_t_2 = (!__pyx_t_1); - if (__pyx_t_2) { - - /* "View.MemoryView":818 - * start += shape - * if not 0 <= start < shape: - * _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim) # <<<<<<<<<<<<<< - * else: - * - */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_kp_s_Index_out_of_bounds_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 818, __pyx_L1_error) - - /* "View.MemoryView":817 - * if start < 0: - * start += shape - * if not 0 <= start < shape: # <<<<<<<<<<<<<< - * _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim) - * else: - */ - } - - /* "View.MemoryView":813 - * cdef bint negative_step - * - * if not is_slice: # <<<<<<<<<<<<<< - * - * if start < 0: - */ - goto __pyx_L3; - } - - /* "View.MemoryView":821 - * else: - * - * if have_step: # <<<<<<<<<<<<<< - * negative_step = step < 0 - * if step == 0: - */ - /*else*/ { - __pyx_t_2 = (__pyx_v_have_step != 0); - if (__pyx_t_2) { - - /* "View.MemoryView":822 - * - * if have_step: - * negative_step = step < 0 # <<<<<<<<<<<<<< - * if step == 0: - * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) - */ - __pyx_v_negative_step = (__pyx_v_step < 0); - - /* "View.MemoryView":823 - * if have_step: - * negative_step = step < 0 - * if step == 0: # <<<<<<<<<<<<<< - * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) - * else: - */ - __pyx_t_2 = (__pyx_v_step == 0); - if (__pyx_t_2) { - - /* "View.MemoryView":824 - * negative_step = step < 0 - * if step == 0: - * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) # <<<<<<<<<<<<<< - * else: - * negative_step = False - */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_kp_s_Step_may_not_be_zero_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 824, __pyx_L1_error) - - /* "View.MemoryView":823 - * if have_step: - * negative_step = step < 0 - * if step == 0: # <<<<<<<<<<<<<< - * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) - * else: - */ - } - - /* "View.MemoryView":821 - * else: - * - * if have_step: # <<<<<<<<<<<<<< - * negative_step = step < 0 - * if step == 0: - */ - goto __pyx_L6; - } - - /* "View.MemoryView":826 - * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) - * else: - * negative_step = False # <<<<<<<<<<<<<< - * step = 1 - * - */ - /*else*/ { - __pyx_v_negative_step = 0; - - /* "View.MemoryView":827 - * else: - * negative_step = False - * step = 1 # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_step = 1; - } - __pyx_L6:; - - /* "View.MemoryView":830 - * - * - * if have_start: # <<<<<<<<<<<<<< - * if start < 0: - * start += shape - */ - __pyx_t_2 = (__pyx_v_have_start != 0); - if (__pyx_t_2) { - - /* "View.MemoryView":831 - * - * if have_start: - * if start < 0: # <<<<<<<<<<<<<< - * start += shape - * if start < 0: - */ - __pyx_t_2 = (__pyx_v_start < 0); - if (__pyx_t_2) { - - /* "View.MemoryView":832 - * if have_start: - * if start < 0: - * start += shape # <<<<<<<<<<<<<< - * if start < 0: - * start = 0 - */ - __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - - /* "View.MemoryView":833 - * if start < 0: - * start += shape - * if start < 0: # <<<<<<<<<<<<<< - * start = 0 - * elif start >= shape: - */ - __pyx_t_2 = (__pyx_v_start < 0); - if (__pyx_t_2) { - - /* "View.MemoryView":834 - * start += shape - * if start < 0: - * start = 0 # <<<<<<<<<<<<<< - * elif start >= shape: - * if negative_step: - */ - __pyx_v_start = 0; - - /* "View.MemoryView":833 - * if start < 0: - * start += shape - * if start < 0: # <<<<<<<<<<<<<< - * start = 0 - * elif start >= shape: - */ - } - - /* "View.MemoryView":831 - * - * if have_start: - * if start < 0: # <<<<<<<<<<<<<< - * start += shape - * if start < 0: - */ - goto __pyx_L9; - } - - /* "View.MemoryView":835 - * if start < 0: - * start = 0 - * elif start >= shape: # <<<<<<<<<<<<<< - * if negative_step: - * start = shape - 1 - */ - __pyx_t_2 = (__pyx_v_start >= __pyx_v_shape); - if (__pyx_t_2) { - - /* "View.MemoryView":836 - * start = 0 - * elif start >= shape: - * if negative_step: # <<<<<<<<<<<<<< - * start = shape - 1 - * else: - */ - if (__pyx_v_negative_step) { - - /* "View.MemoryView":837 - * elif start >= shape: - * if negative_step: - * start = shape - 1 # <<<<<<<<<<<<<< - * else: - * start = shape - */ - __pyx_v_start = (__pyx_v_shape - 1); - - /* "View.MemoryView":836 - * start = 0 - * elif start >= shape: - * if negative_step: # <<<<<<<<<<<<<< - * start = shape - 1 - * else: - */ - goto __pyx_L11; - } - - /* "View.MemoryView":839 - * start = shape - 1 - * else: - * start = shape # <<<<<<<<<<<<<< - * else: - * if negative_step: - */ - /*else*/ { - __pyx_v_start = __pyx_v_shape; - } - __pyx_L11:; - - /* "View.MemoryView":835 - * if start < 0: - * start = 0 - * elif start >= shape: # <<<<<<<<<<<<<< - * if negative_step: - * start = shape - 1 - */ - } - __pyx_L9:; - - /* "View.MemoryView":830 - * - * - * if have_start: # <<<<<<<<<<<<<< - * if start < 0: - * start += shape - */ - goto __pyx_L8; - } - - /* "View.MemoryView":841 - * start = shape - * else: - * if negative_step: # <<<<<<<<<<<<<< - * start = shape - 1 - * else: - */ - /*else*/ { - if (__pyx_v_negative_step) { - - /* "View.MemoryView":842 - * else: - * if negative_step: - * start = shape - 1 # <<<<<<<<<<<<<< - * else: - * start = 0 - */ - __pyx_v_start = (__pyx_v_shape - 1); - - /* "View.MemoryView":841 - * start = shape - * else: - * if negative_step: # <<<<<<<<<<<<<< - * start = shape - 1 - * else: - */ - goto __pyx_L12; - } - - /* "View.MemoryView":844 - * start = shape - 1 - * else: - * start = 0 # <<<<<<<<<<<<<< - * - * if have_stop: - */ - /*else*/ { - __pyx_v_start = 0; - } - __pyx_L12:; - } - __pyx_L8:; - - /* "View.MemoryView":846 - * start = 0 - * - * if have_stop: # <<<<<<<<<<<<<< - * if stop < 0: - * stop += shape - */ - __pyx_t_2 = (__pyx_v_have_stop != 0); - if (__pyx_t_2) { - - /* "View.MemoryView":847 - * - * if have_stop: - * if stop < 0: # <<<<<<<<<<<<<< - * stop += shape - * if stop < 0: - */ - __pyx_t_2 = (__pyx_v_stop < 0); - if (__pyx_t_2) { - - /* "View.MemoryView":848 - * if have_stop: - * if stop < 0: - * stop += shape # <<<<<<<<<<<<<< - * if stop < 0: - * stop = 0 - */ - __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape); - - /* "View.MemoryView":849 - * if stop < 0: - * stop += shape - * if stop < 0: # <<<<<<<<<<<<<< - * stop = 0 - * elif stop > shape: - */ - __pyx_t_2 = (__pyx_v_stop < 0); - if (__pyx_t_2) { - - /* "View.MemoryView":850 - * stop += shape - * if stop < 0: - * stop = 0 # <<<<<<<<<<<<<< - * elif stop > shape: - * stop = shape - */ - __pyx_v_stop = 0; - - /* "View.MemoryView":849 - * if stop < 0: - * stop += shape - * if stop < 0: # <<<<<<<<<<<<<< - * stop = 0 - * elif stop > shape: - */ - } - - /* "View.MemoryView":847 - * - * if have_stop: - * if stop < 0: # <<<<<<<<<<<<<< - * stop += shape - * if stop < 0: - */ - goto __pyx_L14; - } - - /* "View.MemoryView":851 - * if stop < 0: - * stop = 0 - * elif stop > shape: # <<<<<<<<<<<<<< - * stop = shape - * else: - */ - __pyx_t_2 = (__pyx_v_stop > __pyx_v_shape); - if (__pyx_t_2) { - - /* "View.MemoryView":852 - * stop = 0 - * elif stop > shape: - * stop = shape # <<<<<<<<<<<<<< - * else: - * if negative_step: - */ - __pyx_v_stop = __pyx_v_shape; - - /* "View.MemoryView":851 - * if stop < 0: - * stop = 0 - * elif stop > shape: # <<<<<<<<<<<<<< - * stop = shape - * else: - */ - } - __pyx_L14:; - - /* "View.MemoryView":846 - * start = 0 - * - * if have_stop: # <<<<<<<<<<<<<< - * if stop < 0: - * stop += shape - */ - goto __pyx_L13; - } - - /* "View.MemoryView":854 - * stop = shape - * else: - * if negative_step: # <<<<<<<<<<<<<< - * stop = -1 - * else: - */ - /*else*/ { - if (__pyx_v_negative_step) { - - /* "View.MemoryView":855 - * else: - * if negative_step: - * stop = -1 # <<<<<<<<<<<<<< - * else: - * stop = shape - */ - __pyx_v_stop = -1L; - - /* "View.MemoryView":854 - * stop = shape - * else: - * if negative_step: # <<<<<<<<<<<<<< - * stop = -1 - * else: - */ - goto __pyx_L16; - } - - /* "View.MemoryView":857 - * stop = -1 - * else: - * stop = shape # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - __pyx_v_stop = __pyx_v_shape; - } - __pyx_L16:; - } - __pyx_L13:; - - /* "View.MemoryView":861 - * - * with cython.cdivision(True): - * new_shape = (stop - start) // step # <<<<<<<<<<<<<< - * - * if (stop - start) - step * new_shape: - */ - __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step); - - /* "View.MemoryView":863 - * new_shape = (stop - start) // step - * - * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< - * new_shape += 1 - * - */ - __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0); - if (__pyx_t_2) { - - /* "View.MemoryView":864 - * - * if (stop - start) - step * new_shape: - * new_shape += 1 # <<<<<<<<<<<<<< - * - * if new_shape < 0: - */ - __pyx_v_new_shape = (__pyx_v_new_shape + 1); - - /* "View.MemoryView":863 - * new_shape = (stop - start) // step - * - * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< - * new_shape += 1 - * - */ - } - - /* "View.MemoryView":866 - * new_shape += 1 - * - * if new_shape < 0: # <<<<<<<<<<<<<< - * new_shape = 0 - * - */ - __pyx_t_2 = (__pyx_v_new_shape < 0); - if (__pyx_t_2) { - - /* "View.MemoryView":867 - * - * if new_shape < 0: - * new_shape = 0 # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_new_shape = 0; - - /* "View.MemoryView":866 - * new_shape += 1 - * - * if new_shape < 0: # <<<<<<<<<<<<<< - * new_shape = 0 - * - */ - } - - /* "View.MemoryView":870 - * - * - * dst.strides[new_ndim] = stride * step # <<<<<<<<<<<<<< - * dst.shape[new_ndim] = new_shape - * dst.suboffsets[new_ndim] = suboffset - */ - (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step); - - /* "View.MemoryView":871 - * - * dst.strides[new_ndim] = stride * step - * dst.shape[new_ndim] = new_shape # <<<<<<<<<<<<<< - * dst.suboffsets[new_ndim] = suboffset - * - */ - (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape; - - /* "View.MemoryView":872 - * dst.strides[new_ndim] = stride * step - * dst.shape[new_ndim] = new_shape - * dst.suboffsets[new_ndim] = suboffset # <<<<<<<<<<<<<< - * - * - */ - (__pyx_v_dst->suboffsets[__pyx_v_new_ndim]) = __pyx_v_suboffset; - } - __pyx_L3:; - - /* "View.MemoryView":875 - * - * - * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< - * dst.data += start * stride - * else: - */ - __pyx_t_2 = ((__pyx_v_suboffset_dim[0]) < 0); - if (__pyx_t_2) { - - /* "View.MemoryView":876 - * - * if suboffset_dim[0] < 0: - * dst.data += start * stride # <<<<<<<<<<<<<< - * else: - * dst.suboffsets[suboffset_dim[0]] += start * stride - */ - __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride)); - - /* "View.MemoryView":875 - * - * - * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< - * dst.data += start * stride - * else: - */ - goto __pyx_L19; - } - - /* "View.MemoryView":878 - * dst.data += start * stride - * else: - * dst.suboffsets[suboffset_dim[0]] += start * stride # <<<<<<<<<<<<<< - * - * if suboffset >= 0: - */ - /*else*/ { - __pyx_t_3 = (__pyx_v_suboffset_dim[0]); - (__pyx_v_dst->suboffsets[__pyx_t_3]) = ((__pyx_v_dst->suboffsets[__pyx_t_3]) + (__pyx_v_start * __pyx_v_stride)); - } - __pyx_L19:; - - /* "View.MemoryView":880 - * dst.suboffsets[suboffset_dim[0]] += start * stride - * - * if suboffset >= 0: # <<<<<<<<<<<<<< - * if not is_slice: - * if new_ndim == 0: - */ - __pyx_t_2 = (__pyx_v_suboffset >= 0); - if (__pyx_t_2) { - - /* "View.MemoryView":881 - * - * if suboffset >= 0: - * if not is_slice: # <<<<<<<<<<<<<< - * if new_ndim == 0: - * dst.data = ( dst.data)[0] + suboffset - */ - __pyx_t_2 = (!__pyx_v_is_slice); - if (__pyx_t_2) { - - /* "View.MemoryView":882 - * if suboffset >= 0: - * if not is_slice: - * if new_ndim == 0: # <<<<<<<<<<<<<< - * dst.data = ( dst.data)[0] + suboffset - * else: - */ - __pyx_t_2 = (__pyx_v_new_ndim == 0); - if (__pyx_t_2) { - - /* "View.MemoryView":883 - * if not is_slice: - * if new_ndim == 0: - * dst.data = ( dst.data)[0] + suboffset # <<<<<<<<<<<<<< - * else: - * _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d " - */ - __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset); - - /* "View.MemoryView":882 - * if suboffset >= 0: - * if not is_slice: - * if new_ndim == 0: # <<<<<<<<<<<<<< - * dst.data = ( dst.data)[0] + suboffset - * else: - */ - goto __pyx_L22; - } - - /* "View.MemoryView":885 - * dst.data = ( dst.data)[0] + suboffset - * else: - * _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d " # <<<<<<<<<<<<<< - * "must be indexed and not sliced", dim) - * else: - */ - /*else*/ { - - /* "View.MemoryView":886 - * else: - * _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d " - * "must be indexed and not sliced", dim) # <<<<<<<<<<<<<< - * else: - * suboffset_dim[0] = new_ndim - */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_kp_s_All_dimensions_preceding_dimensi, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 885, __pyx_L1_error) - } - __pyx_L22:; - - /* "View.MemoryView":881 - * - * if suboffset >= 0: - * if not is_slice: # <<<<<<<<<<<<<< - * if new_ndim == 0: - * dst.data = ( dst.data)[0] + suboffset - */ - goto __pyx_L21; - } - - /* "View.MemoryView":888 - * "must be indexed and not sliced", dim) - * else: - * suboffset_dim[0] = new_ndim # <<<<<<<<<<<<<< - * - * return 0 - */ - /*else*/ { - (__pyx_v_suboffset_dim[0]) = __pyx_v_new_ndim; - } - __pyx_L21:; - - /* "View.MemoryView":880 - * dst.suboffsets[suboffset_dim[0]] += start * stride - * - * if suboffset >= 0: # <<<<<<<<<<<<<< - * if not is_slice: - * if new_ndim == 0: - */ - } - - /* "View.MemoryView":890 - * suboffset_dim[0] = new_ndim - * - * return 0 # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "View.MemoryView":793 - * - * @cname('__pyx_memoryview_slice_memviewslice') - * cdef int slice_memviewslice( # <<<<<<<<<<<<<< - * __Pyx_memviewslice *dst, - * Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset, - */ - - /* function exit code */ - __pyx_L1_error:; - #ifdef WITH_THREAD - __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - __Pyx_AddTraceback("View.MemoryView.slice_memviewslice", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":896 - * - * @cname('__pyx_pybuffer_index') - * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< - * Py_ssize_t dim) except NULL: - * cdef Py_ssize_t shape, stride, suboffset = -1 - */ - -static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, Py_ssize_t __pyx_v_index, Py_ssize_t __pyx_v_dim) { - Py_ssize_t __pyx_v_shape; - Py_ssize_t __pyx_v_stride; - Py_ssize_t __pyx_v_suboffset; - Py_ssize_t __pyx_v_itemsize; - char *__pyx_v_resultp; - char *__pyx_r; - __Pyx_RefNannyDeclarations - Py_ssize_t __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - Py_UCS4 __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("pybuffer_index", 1); - - /* "View.MemoryView":898 - * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, - * Py_ssize_t dim) except NULL: - * cdef Py_ssize_t shape, stride, suboffset = -1 # <<<<<<<<<<<<<< - * cdef Py_ssize_t itemsize = view.itemsize - * cdef char *resultp - */ - __pyx_v_suboffset = -1L; - - /* "View.MemoryView":899 - * Py_ssize_t dim) except NULL: - * cdef Py_ssize_t shape, stride, suboffset = -1 - * cdef Py_ssize_t itemsize = view.itemsize # <<<<<<<<<<<<<< - * cdef char *resultp - * - */ - __pyx_t_1 = __pyx_v_view->itemsize; - __pyx_v_itemsize = __pyx_t_1; - - /* "View.MemoryView":902 - * cdef char *resultp - * - * if view.ndim == 0: # <<<<<<<<<<<<<< - * shape = view.len // itemsize - * stride = itemsize - */ - __pyx_t_2 = (__pyx_v_view->ndim == 0); - if (__pyx_t_2) { - - /* "View.MemoryView":903 - * - * if view.ndim == 0: - * shape = view.len // itemsize # <<<<<<<<<<<<<< - * stride = itemsize - * else: - */ - if (unlikely(__pyx_v_itemsize == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(1, 903, __pyx_L1_error) - } - else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { - PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - __PYX_ERR(1, 903, __pyx_L1_error) - } - __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize); - - /* "View.MemoryView":904 - * if view.ndim == 0: - * shape = view.len // itemsize - * stride = itemsize # <<<<<<<<<<<<<< - * else: - * shape = view.shape[dim] - */ - __pyx_v_stride = __pyx_v_itemsize; - - /* "View.MemoryView":902 - * cdef char *resultp - * - * if view.ndim == 0: # <<<<<<<<<<<<<< - * shape = view.len // itemsize - * stride = itemsize - */ - goto __pyx_L3; - } - - /* "View.MemoryView":906 - * stride = itemsize - * else: - * shape = view.shape[dim] # <<<<<<<<<<<<<< - * stride = view.strides[dim] - * if view.suboffsets != NULL: - */ - /*else*/ { - __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]); - - /* "View.MemoryView":907 - * else: - * shape = view.shape[dim] - * stride = view.strides[dim] # <<<<<<<<<<<<<< - * if view.suboffsets != NULL: - * suboffset = view.suboffsets[dim] - */ - __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]); - - /* "View.MemoryView":908 - * shape = view.shape[dim] - * stride = view.strides[dim] - * if view.suboffsets != NULL: # <<<<<<<<<<<<<< - * suboffset = view.suboffsets[dim] - * - */ - __pyx_t_2 = (__pyx_v_view->suboffsets != NULL); - if (__pyx_t_2) { - - /* "View.MemoryView":909 - * stride = view.strides[dim] - * if view.suboffsets != NULL: - * suboffset = view.suboffsets[dim] # <<<<<<<<<<<<<< - * - * if index < 0: - */ - __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]); - - /* "View.MemoryView":908 - * shape = view.shape[dim] - * stride = view.strides[dim] - * if view.suboffsets != NULL: # <<<<<<<<<<<<<< - * suboffset = view.suboffsets[dim] - * - */ - } - } - __pyx_L3:; - - /* "View.MemoryView":911 - * suboffset = view.suboffsets[dim] - * - * if index < 0: # <<<<<<<<<<<<<< - * index += view.shape[dim] - * if index < 0: - */ - __pyx_t_2 = (__pyx_v_index < 0); - if (__pyx_t_2) { - - /* "View.MemoryView":912 - * - * if index < 0: - * index += view.shape[dim] # <<<<<<<<<<<<<< - * if index < 0: - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" - */ - __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim])); - - /* "View.MemoryView":913 - * if index < 0: - * index += view.shape[dim] - * if index < 0: # <<<<<<<<<<<<<< - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" - * - */ - __pyx_t_2 = (__pyx_v_index < 0); - if (unlikely(__pyx_t_2)) { - - /* "View.MemoryView":914 - * index += view.shape[dim] - * if index < 0: - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" # <<<<<<<<<<<<<< - * - * if index >= shape: - */ - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 914, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = 0; - __pyx_t_4 = 127; - __Pyx_INCREF(__pyx_kp_u_Out_of_bounds_on_buffer_access_a); - __pyx_t_1 += 37; - __Pyx_GIVEREF(__pyx_kp_u_Out_of_bounds_on_buffer_access_a); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_Out_of_bounds_on_buffer_access_a); - __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 914, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_INCREF(__pyx_kp_u__7); - __pyx_t_1 += 1; - __Pyx_GIVEREF(__pyx_kp_u__7); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__7); - __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 914, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_5, 0, 0); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(1, 914, __pyx_L1_error) - - /* "View.MemoryView":913 - * if index < 0: - * index += view.shape[dim] - * if index < 0: # <<<<<<<<<<<<<< - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" - * - */ - } - - /* "View.MemoryView":911 - * suboffset = view.suboffsets[dim] - * - * if index < 0: # <<<<<<<<<<<<<< - * index += view.shape[dim] - * if index < 0: - */ - } - - /* "View.MemoryView":916 - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" - * - * if index >= shape: # <<<<<<<<<<<<<< - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" - * - */ - __pyx_t_2 = (__pyx_v_index >= __pyx_v_shape); - if (unlikely(__pyx_t_2)) { - - /* "View.MemoryView":917 - * - * if index >= shape: - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" # <<<<<<<<<<<<<< - * - * resultp = bufp + index * stride - */ - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 917, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = 0; - __pyx_t_4 = 127; - __Pyx_INCREF(__pyx_kp_u_Out_of_bounds_on_buffer_access_a); - __pyx_t_1 += 37; - __Pyx_GIVEREF(__pyx_kp_u_Out_of_bounds_on_buffer_access_a); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Out_of_bounds_on_buffer_access_a); - __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 917, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); - __pyx_t_3 = 0; - __Pyx_INCREF(__pyx_kp_u__7); - __pyx_t_1 += 1; - __Pyx_GIVEREF(__pyx_kp_u__7); - PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__7); - __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 917, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_3, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 917, __pyx_L1_error) - - /* "View.MemoryView":916 - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" - * - * if index >= shape: # <<<<<<<<<<<<<< - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" - * - */ - } - - /* "View.MemoryView":919 - * raise IndexError, f"Out of bounds on buffer access (axis {dim})" - * - * resultp = bufp + index * stride # <<<<<<<<<<<<<< - * if suboffset >= 0: - * resultp = ( resultp)[0] + suboffset - */ - __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride)); - - /* "View.MemoryView":920 - * - * resultp = bufp + index * stride - * if suboffset >= 0: # <<<<<<<<<<<<<< - * resultp = ( resultp)[0] + suboffset - * - */ - __pyx_t_2 = (__pyx_v_suboffset >= 0); - if (__pyx_t_2) { - - /* "View.MemoryView":921 - * resultp = bufp + index * stride - * if suboffset >= 0: - * resultp = ( resultp)[0] + suboffset # <<<<<<<<<<<<<< - * - * return resultp - */ - __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset); - - /* "View.MemoryView":920 - * - * resultp = bufp + index * stride - * if suboffset >= 0: # <<<<<<<<<<<<<< - * resultp = ( resultp)[0] + suboffset - * - */ - } - - /* "View.MemoryView":923 - * resultp = ( resultp)[0] + suboffset - * - * return resultp # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = __pyx_v_resultp; - goto __pyx_L0; - - /* "View.MemoryView":896 - * - * @cname('__pyx_pybuffer_index') - * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, # <<<<<<<<<<<<<< - * Py_ssize_t dim) except NULL: - * cdef Py_ssize_t shape, stride, suboffset = -1 - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("View.MemoryView.pybuffer_index", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":929 - * - * @cname('__pyx_memslice_transpose') - * cdef int transpose_memslice(__Pyx_memviewslice *memslice) except -1 nogil: # <<<<<<<<<<<<<< - * cdef int ndim = memslice.memview.view.ndim - * - */ - -static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { - int __pyx_v_ndim; - Py_ssize_t *__pyx_v_shape; - Py_ssize_t *__pyx_v_strides; - int __pyx_v_i; - int __pyx_v_j; - int __pyx_r; - int __pyx_t_1; - Py_ssize_t *__pyx_t_2; - long __pyx_t_3; - long __pyx_t_4; - Py_ssize_t __pyx_t_5; - Py_ssize_t __pyx_t_6; - int __pyx_t_7; - int __pyx_t_8; - int __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save; - #endif - - /* "View.MemoryView":930 - * @cname('__pyx_memslice_transpose') - * cdef int transpose_memslice(__Pyx_memviewslice *memslice) except -1 nogil: - * cdef int ndim = memslice.memview.view.ndim # <<<<<<<<<<<<<< - * - * cdef Py_ssize_t *shape = memslice.shape - */ - __pyx_t_1 = __pyx_v_memslice->memview->view.ndim; - __pyx_v_ndim = __pyx_t_1; - - /* "View.MemoryView":932 - * cdef int ndim = memslice.memview.view.ndim - * - * cdef Py_ssize_t *shape = memslice.shape # <<<<<<<<<<<<<< - * cdef Py_ssize_t *strides = memslice.strides - * - */ - __pyx_t_2 = __pyx_v_memslice->shape; - __pyx_v_shape = __pyx_t_2; - - /* "View.MemoryView":933 - * - * cdef Py_ssize_t *shape = memslice.shape - * cdef Py_ssize_t *strides = memslice.strides # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = __pyx_v_memslice->strides; - __pyx_v_strides = __pyx_t_2; - - /* "View.MemoryView":937 - * - * cdef int i, j - * for i in range(ndim // 2): # <<<<<<<<<<<<<< - * j = ndim - 1 - i - * strides[i], strides[j] = strides[j], strides[i] - */ - __pyx_t_3 = __Pyx_div_long(__pyx_v_ndim, 2); - __pyx_t_4 = __pyx_t_3; - for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_4; __pyx_t_1+=1) { - __pyx_v_i = __pyx_t_1; - - /* "View.MemoryView":938 - * cdef int i, j - * for i in range(ndim // 2): - * j = ndim - 1 - i # <<<<<<<<<<<<<< - * strides[i], strides[j] = strides[j], strides[i] - * shape[i], shape[j] = shape[j], shape[i] - */ - __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i); - - /* "View.MemoryView":939 - * for i in range(ndim // 2): - * j = ndim - 1 - i - * strides[i], strides[j] = strides[j], strides[i] # <<<<<<<<<<<<<< - * shape[i], shape[j] = shape[j], shape[i] - * - */ - __pyx_t_5 = (__pyx_v_strides[__pyx_v_j]); - __pyx_t_6 = (__pyx_v_strides[__pyx_v_i]); - (__pyx_v_strides[__pyx_v_i]) = __pyx_t_5; - (__pyx_v_strides[__pyx_v_j]) = __pyx_t_6; - - /* "View.MemoryView":940 - * j = ndim - 1 - i - * strides[i], strides[j] = strides[j], strides[i] - * shape[i], shape[j] = shape[j], shape[i] # <<<<<<<<<<<<<< - * - * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: - */ - __pyx_t_6 = (__pyx_v_shape[__pyx_v_j]); - __pyx_t_5 = (__pyx_v_shape[__pyx_v_i]); - (__pyx_v_shape[__pyx_v_i]) = __pyx_t_6; - (__pyx_v_shape[__pyx_v_j]) = __pyx_t_5; - - /* "View.MemoryView":942 - * shape[i], shape[j] = shape[j], shape[i] - * - * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< - * _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions") - * - */ - __pyx_t_8 = ((__pyx_v_memslice->suboffsets[__pyx_v_i]) >= 0); - if (!__pyx_t_8) { - } else { - __pyx_t_7 = __pyx_t_8; - goto __pyx_L6_bool_binop_done; - } - __pyx_t_8 = ((__pyx_v_memslice->suboffsets[__pyx_v_j]) >= 0); - __pyx_t_7 = __pyx_t_8; - __pyx_L6_bool_binop_done:; - if (__pyx_t_7) { - - /* "View.MemoryView":943 - * - * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: - * _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions") # <<<<<<<<<<<<<< - * - * return 0 - */ - __pyx_t_9 = __pyx_memoryview_err(PyExc_ValueError, __pyx_kp_s_Cannot_transpose_memoryview_with); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 943, __pyx_L1_error) - - /* "View.MemoryView":942 - * shape[i], shape[j] = shape[j], shape[i] - * - * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< - * _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions") - * - */ - } - } - - /* "View.MemoryView":945 - * _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions") - * - * return 0 # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "View.MemoryView":929 - * - * @cname('__pyx_memslice_transpose') - * cdef int transpose_memslice(__Pyx_memviewslice *memslice) except -1 nogil: # <<<<<<<<<<<<<< - * cdef int ndim = memslice.memview.view.ndim - * - */ - - /* function exit code */ - __pyx_L1_error:; - #ifdef WITH_THREAD - __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - __Pyx_AddTraceback("View.MemoryView.transpose_memslice", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":963 - * cdef int (*to_dtype_func)(char *, object) except 0 - * - * def __dealloc__(self): # <<<<<<<<<<<<<< - * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) - * - */ - -/* Python wrapper */ -static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { - - /* "View.MemoryView":964 - * - * def __dealloc__(self): - * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) # <<<<<<<<<<<<<< - * - * cdef convert_item_to_object(self, char *itemp): - */ - __PYX_XCLEAR_MEMVIEW((&__pyx_v_self->from_slice), 1); - - /* "View.MemoryView":963 - * cdef int (*to_dtype_func)(char *, object) except 0 - * - * def __dealloc__(self): # <<<<<<<<<<<<<< - * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) - * - */ - - /* function exit code */ -} - -/* "View.MemoryView":966 - * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) - * - * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< - * if self.to_object_func != NULL: - * return self.to_object_func(itemp) - */ - -static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("convert_item_to_object", 1); - - /* "View.MemoryView":967 - * - * cdef convert_item_to_object(self, char *itemp): - * if self.to_object_func != NULL: # <<<<<<<<<<<<<< - * return self.to_object_func(itemp) - * else: - */ - __pyx_t_1 = (__pyx_v_self->to_object_func != NULL); - if (__pyx_t_1) { - - /* "View.MemoryView":968 - * cdef convert_item_to_object(self, char *itemp): - * if self.to_object_func != NULL: - * return self.to_object_func(itemp) # <<<<<<<<<<<<<< - * else: - * return memoryview.convert_item_to_object(self, itemp) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 968, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "View.MemoryView":967 - * - * cdef convert_item_to_object(self, char *itemp): - * if self.to_object_func != NULL: # <<<<<<<<<<<<<< - * return self.to_object_func(itemp) - * else: - */ - } - - /* "View.MemoryView":970 - * return self.to_object_func(itemp) - * else: - * return memoryview.convert_item_to_object(self, itemp) # <<<<<<<<<<<<<< - * - * cdef assign_item_from_object(self, char *itemp, object value): - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 970, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - } - - /* "View.MemoryView":966 - * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) - * - * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< - * if self.to_object_func != NULL: - * return self.to_object_func(itemp) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView._memoryviewslice.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":972 - * return memoryview.convert_item_to_object(self, itemp) - * - * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< - * if self.to_dtype_func != NULL: - * self.to_dtype_func(itemp, value) - */ - -static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("assign_item_from_object", 1); - - /* "View.MemoryView":973 - * - * cdef assign_item_from_object(self, char *itemp, object value): - * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< - * self.to_dtype_func(itemp, value) - * else: - */ - __pyx_t_1 = (__pyx_v_self->to_dtype_func != NULL); - if (__pyx_t_1) { - - /* "View.MemoryView":974 - * cdef assign_item_from_object(self, char *itemp, object value): - * if self.to_dtype_func != NULL: - * self.to_dtype_func(itemp, value) # <<<<<<<<<<<<<< - * else: - * memoryview.assign_item_from_object(self, itemp, value) - */ - __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 974, __pyx_L1_error) - - /* "View.MemoryView":973 - * - * cdef assign_item_from_object(self, char *itemp, object value): - * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< - * self.to_dtype_func(itemp, value) - * else: - */ - goto __pyx_L3; - } - - /* "View.MemoryView":976 - * self.to_dtype_func(itemp, value) - * else: - * memoryview.assign_item_from_object(self, itemp, value) # <<<<<<<<<<<<<< - * - * cdef _get_base(self): - */ - /*else*/ { - __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 976, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_L3:; - - /* "View.MemoryView":972 - * return memoryview.convert_item_to_object(self, itemp) - * - * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< - * if self.to_dtype_func != NULL: - * self.to_dtype_func(itemp, value) - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("View.MemoryView._memoryviewslice.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":978 - * memoryview.assign_item_from_object(self, itemp, value) - * - * cdef _get_base(self): # <<<<<<<<<<<<<< - * return self.from_object - * - */ - -static PyObject *__pyx_memoryviewslice__get_base(struct __pyx_memoryviewslice_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_get_base", 1); - - /* "View.MemoryView":979 - * - * cdef _get_base(self): - * return self.from_object # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_self->from_object); - __pyx_r = __pyx_v_self->from_object; - goto __pyx_L0; - - /* "View.MemoryView":978 - * memoryview.assign_item_from_object(self, itemp, value) - * - * cdef _get_base(self): # <<<<<<<<<<<<<< - * return self.from_object - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf___pyx_memoryviewslice___reduce_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf___pyx_memoryviewslice_2__setstate_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":999 - * - * @cname('__pyx_memoryview_fromslice') - * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< - * int ndim, - * object (*to_object_func)(char *), - */ - -static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewslice, int __pyx_v_ndim, PyObject *(*__pyx_v_to_object_func)(char *), int (*__pyx_v_to_dtype_func)(char *, PyObject *), int __pyx_v_dtype_is_object) { - struct __pyx_memoryviewslice_obj *__pyx_v_result = 0; - Py_ssize_t __pyx_v_suboffset; - PyObject *__pyx_v_length = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - __Pyx_TypeInfo *__pyx_t_4; - Py_buffer __pyx_t_5; - Py_ssize_t *__pyx_t_6; - Py_ssize_t *__pyx_t_7; - Py_ssize_t *__pyx_t_8; - Py_ssize_t __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("memoryview_fromslice", 1); - - /* "View.MemoryView":1007 - * cdef _memoryviewslice result - * - * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< - * return None - * - */ - __pyx_t_1 = (((PyObject *)__pyx_v_memviewslice.memview) == Py_None); - if (__pyx_t_1) { - - /* "View.MemoryView":1008 - * - * if memviewslice.memview == Py_None: - * return None # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "View.MemoryView":1007 - * cdef _memoryviewslice result - * - * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< - * return None - * - */ - } - - /* "View.MemoryView":1013 - * - * - * result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object) # <<<<<<<<<<<<<< - * - * result.from_slice = memviewslice - */ - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1013, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(Py_None); - __Pyx_GIVEREF(Py_None); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None)) __PYX_ERR(1, 1013, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_0); - __Pyx_GIVEREF(__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0)) __PYX_ERR(1, 1013, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error); - __pyx_t_2 = 0; - __pyx_t_2 = ((PyObject *)__pyx_tp_new__memoryviewslice(((PyTypeObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "View.MemoryView":1015 - * result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object) - * - * result.from_slice = memviewslice # <<<<<<<<<<<<<< - * __PYX_INC_MEMVIEW(&memviewslice, 1) - * - */ - __pyx_v_result->from_slice = __pyx_v_memviewslice; - - /* "View.MemoryView":1016 - * - * result.from_slice = memviewslice - * __PYX_INC_MEMVIEW(&memviewslice, 1) # <<<<<<<<<<<<<< - * - * result.from_object = ( memviewslice.memview)._get_base() - */ - __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1); - - /* "View.MemoryView":1018 - * __PYX_INC_MEMVIEW(&memviewslice, 1) - * - * result.from_object = ( memviewslice.memview)._get_base() # <<<<<<<<<<<<<< - * result.typeinfo = memviewslice.memview.typeinfo - * - */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->__pyx_vtab)->_get_base(((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1018, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_result->from_object); - __Pyx_DECREF(__pyx_v_result->from_object); - __pyx_v_result->from_object = __pyx_t_2; - __pyx_t_2 = 0; - - /* "View.MemoryView":1019 - * - * result.from_object = ( memviewslice.memview)._get_base() - * result.typeinfo = memviewslice.memview.typeinfo # <<<<<<<<<<<<<< - * - * result.view = memviewslice.memview.view - */ - __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo; - __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4; - - /* "View.MemoryView":1021 - * result.typeinfo = memviewslice.memview.typeinfo - * - * result.view = memviewslice.memview.view # <<<<<<<<<<<<<< - * result.view.buf = memviewslice.data - * result.view.ndim = ndim - */ - __pyx_t_5 = __pyx_v_memviewslice.memview->view; - __pyx_v_result->__pyx_base.view = __pyx_t_5; - - /* "View.MemoryView":1022 - * - * result.view = memviewslice.memview.view - * result.view.buf = memviewslice.data # <<<<<<<<<<<<<< - * result.view.ndim = ndim - * (<__pyx_buffer *> &result.view).obj = Py_None - */ - __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data); - - /* "View.MemoryView":1023 - * result.view = memviewslice.memview.view - * result.view.buf = memviewslice.data - * result.view.ndim = ndim # <<<<<<<<<<<<<< - * (<__pyx_buffer *> &result.view).obj = Py_None - * Py_INCREF(Py_None) - */ - __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim; - - /* "View.MemoryView":1024 - * result.view.buf = memviewslice.data - * result.view.ndim = ndim - * (<__pyx_buffer *> &result.view).obj = Py_None # <<<<<<<<<<<<<< - * Py_INCREF(Py_None) - * - */ - ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None; - - /* "View.MemoryView":1025 - * result.view.ndim = ndim - * (<__pyx_buffer *> &result.view).obj = Py_None - * Py_INCREF(Py_None) # <<<<<<<<<<<<<< - * - * if (memviewslice.memview).flags & PyBUF_WRITABLE: - */ - Py_INCREF(Py_None); - - /* "View.MemoryView":1027 - * Py_INCREF(Py_None) - * - * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< - * result.flags = PyBUF_RECORDS - * else: - */ - __pyx_t_1 = ((((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->flags & PyBUF_WRITABLE) != 0); - if (__pyx_t_1) { - - /* "View.MemoryView":1028 - * - * if (memviewslice.memview).flags & PyBUF_WRITABLE: - * result.flags = PyBUF_RECORDS # <<<<<<<<<<<<<< - * else: - * result.flags = PyBUF_RECORDS_RO - */ - __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS; - - /* "View.MemoryView":1027 - * Py_INCREF(Py_None) - * - * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< - * result.flags = PyBUF_RECORDS - * else: - */ - goto __pyx_L4; - } - - /* "View.MemoryView":1030 - * result.flags = PyBUF_RECORDS - * else: - * result.flags = PyBUF_RECORDS_RO # <<<<<<<<<<<<<< - * - * result.view.shape = result.from_slice.shape - */ - /*else*/ { - __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS_RO; - } - __pyx_L4:; - - /* "View.MemoryView":1032 - * result.flags = PyBUF_RECORDS_RO - * - * result.view.shape = result.from_slice.shape # <<<<<<<<<<<<<< - * result.view.strides = result.from_slice.strides - * - */ - __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape); - - /* "View.MemoryView":1033 - * - * result.view.shape = result.from_slice.shape - * result.view.strides = result.from_slice.strides # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides); - - /* "View.MemoryView":1036 - * - * - * result.view.suboffsets = NULL # <<<<<<<<<<<<<< - * for suboffset in result.from_slice.suboffsets[:ndim]: - * if suboffset >= 0: - */ - __pyx_v_result->__pyx_base.view.suboffsets = NULL; - - /* "View.MemoryView":1037 - * - * result.view.suboffsets = NULL - * for suboffset in result.from_slice.suboffsets[:ndim]: # <<<<<<<<<<<<<< - * if suboffset >= 0: - * result.view.suboffsets = result.from_slice.suboffsets - */ - __pyx_t_7 = (__pyx_v_result->from_slice.suboffsets + __pyx_v_ndim); - for (__pyx_t_8 = __pyx_v_result->from_slice.suboffsets; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { - __pyx_t_6 = __pyx_t_8; - __pyx_v_suboffset = (__pyx_t_6[0]); - - /* "View.MemoryView":1038 - * result.view.suboffsets = NULL - * for suboffset in result.from_slice.suboffsets[:ndim]: - * if suboffset >= 0: # <<<<<<<<<<<<<< - * result.view.suboffsets = result.from_slice.suboffsets - * break - */ - __pyx_t_1 = (__pyx_v_suboffset >= 0); - if (__pyx_t_1) { - - /* "View.MemoryView":1039 - * for suboffset in result.from_slice.suboffsets[:ndim]: - * if suboffset >= 0: - * result.view.suboffsets = result.from_slice.suboffsets # <<<<<<<<<<<<<< - * break - * - */ - __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets); - - /* "View.MemoryView":1040 - * if suboffset >= 0: - * result.view.suboffsets = result.from_slice.suboffsets - * break # <<<<<<<<<<<<<< - * - * result.view.len = result.view.itemsize - */ - goto __pyx_L6_break; - - /* "View.MemoryView":1038 - * result.view.suboffsets = NULL - * for suboffset in result.from_slice.suboffsets[:ndim]: - * if suboffset >= 0: # <<<<<<<<<<<<<< - * result.view.suboffsets = result.from_slice.suboffsets - * break - */ - } - } - __pyx_L6_break:; - - /* "View.MemoryView":1042 - * break - * - * result.view.len = result.view.itemsize # <<<<<<<<<<<<<< - * for length in result.view.shape[:ndim]: - * result.view.len *= length - */ - __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize; - __pyx_v_result->__pyx_base.view.len = __pyx_t_9; - - /* "View.MemoryView":1043 - * - * result.view.len = result.view.itemsize - * for length in result.view.shape[:ndim]: # <<<<<<<<<<<<<< - * result.view.len *= length - * - */ - __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim); - for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { - __pyx_t_6 = __pyx_t_8; - __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1043, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2); - __pyx_t_2 = 0; - - /* "View.MemoryView":1044 - * result.view.len = result.view.itemsize - * for length in result.view.shape[:ndim]: - * result.view.len *= length # <<<<<<<<<<<<<< - * - * result.to_object_func = to_object_func - */ - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1044, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1044, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_result->__pyx_base.view.len = __pyx_t_9; - } - - /* "View.MemoryView":1046 - * result.view.len *= length - * - * result.to_object_func = to_object_func # <<<<<<<<<<<<<< - * result.to_dtype_func = to_dtype_func - * - */ - __pyx_v_result->to_object_func = __pyx_v_to_object_func; - - /* "View.MemoryView":1047 - * - * result.to_object_func = to_object_func - * result.to_dtype_func = to_dtype_func # <<<<<<<<<<<<<< - * - * return result - */ - __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func; - - /* "View.MemoryView":1049 - * result.to_dtype_func = to_dtype_func - * - * return result # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_get_slice_from_memoryview') - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_result); - __pyx_r = ((PyObject *)__pyx_v_result); - goto __pyx_L0; - - /* "View.MemoryView":999 - * - * @cname('__pyx_memoryview_fromslice') - * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice, # <<<<<<<<<<<<<< - * int ndim, - * object (*to_object_func)(char *), - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("View.MemoryView.memoryview_fromslice", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); - __Pyx_XDECREF(__pyx_v_length); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":1052 - * - * @cname('__pyx_memoryview_get_slice_from_memoryview') - * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< - * __Pyx_memviewslice *mslice) except NULL: - * cdef _memoryviewslice obj - */ - -static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_mslice) { - struct __pyx_memoryviewslice_obj *__pyx_v_obj = 0; - __Pyx_memviewslice *__pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_slice_from_memview", 1); - - /* "View.MemoryView":1055 - * __Pyx_memviewslice *mslice) except NULL: - * cdef _memoryviewslice obj - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * obj = memview - * return &obj.from_slice - */ - __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); - if (__pyx_t_1) { - - /* "View.MemoryView":1056 - * cdef _memoryviewslice obj - * if isinstance(memview, _memoryviewslice): - * obj = memview # <<<<<<<<<<<<<< - * return &obj.from_slice - * else: - */ - if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 1056, __pyx_L1_error) - __pyx_t_2 = ((PyObject *)__pyx_v_memview); - __Pyx_INCREF(__pyx_t_2); - __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); - __pyx_t_2 = 0; - - /* "View.MemoryView":1057 - * if isinstance(memview, _memoryviewslice): - * obj = memview - * return &obj.from_slice # <<<<<<<<<<<<<< - * else: - * slice_copy(memview, mslice) - */ - __pyx_r = (&__pyx_v_obj->from_slice); - goto __pyx_L0; - - /* "View.MemoryView":1055 - * __Pyx_memviewslice *mslice) except NULL: - * cdef _memoryviewslice obj - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * obj = memview - * return &obj.from_slice - */ - } - - /* "View.MemoryView":1059 - * return &obj.from_slice - * else: - * slice_copy(memview, mslice) # <<<<<<<<<<<<<< - * return mslice - * - */ - /*else*/ { - __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice); - - /* "View.MemoryView":1060 - * else: - * slice_copy(memview, mslice) - * return mslice # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_slice_copy') - */ - __pyx_r = __pyx_v_mslice; - goto __pyx_L0; - } - - /* "View.MemoryView":1052 - * - * @cname('__pyx_memoryview_get_slice_from_memoryview') - * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview, # <<<<<<<<<<<<<< - * __Pyx_memviewslice *mslice) except NULL: - * cdef _memoryviewslice obj - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF((PyObject *)__pyx_v_obj); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":1063 - * - * @cname('__pyx_memoryview_slice_copy') - * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst) noexcept: # <<<<<<<<<<<<<< - * cdef int dim - * cdef (Py_ssize_t*) shape, strides, suboffsets - */ - -static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_dst) { - int __pyx_v_dim; - Py_ssize_t *__pyx_v_shape; - Py_ssize_t *__pyx_v_strides; - Py_ssize_t *__pyx_v_suboffsets; - Py_ssize_t *__pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - Py_ssize_t __pyx_t_5; - int __pyx_t_6; - - /* "View.MemoryView":1067 - * cdef (Py_ssize_t*) shape, strides, suboffsets - * - * shape = memview.view.shape # <<<<<<<<<<<<<< - * strides = memview.view.strides - * suboffsets = memview.view.suboffsets - */ - __pyx_t_1 = __pyx_v_memview->view.shape; - __pyx_v_shape = __pyx_t_1; - - /* "View.MemoryView":1068 - * - * shape = memview.view.shape - * strides = memview.view.strides # <<<<<<<<<<<<<< - * suboffsets = memview.view.suboffsets - * - */ - __pyx_t_1 = __pyx_v_memview->view.strides; - __pyx_v_strides = __pyx_t_1; - - /* "View.MemoryView":1069 - * shape = memview.view.shape - * strides = memview.view.strides - * suboffsets = memview.view.suboffsets # <<<<<<<<<<<<<< - * - * dst.memview = <__pyx_memoryview *> memview - */ - __pyx_t_1 = __pyx_v_memview->view.suboffsets; - __pyx_v_suboffsets = __pyx_t_1; - - /* "View.MemoryView":1071 - * suboffsets = memview.view.suboffsets - * - * dst.memview = <__pyx_memoryview *> memview # <<<<<<<<<<<<<< - * dst.data = memview.view.buf - * - */ - __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview); - - /* "View.MemoryView":1072 - * - * dst.memview = <__pyx_memoryview *> memview - * dst.data = memview.view.buf # <<<<<<<<<<<<<< - * - * for dim in range(memview.view.ndim): - */ - __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf); - - /* "View.MemoryView":1074 - * dst.data = memview.view.buf - * - * for dim in range(memview.view.ndim): # <<<<<<<<<<<<<< - * dst.shape[dim] = shape[dim] - * dst.strides[dim] = strides[dim] - */ - __pyx_t_2 = __pyx_v_memview->view.ndim; - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_dim = __pyx_t_4; - - /* "View.MemoryView":1075 - * - * for dim in range(memview.view.ndim): - * dst.shape[dim] = shape[dim] # <<<<<<<<<<<<<< - * dst.strides[dim] = strides[dim] - * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 - */ - (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]); - - /* "View.MemoryView":1076 - * for dim in range(memview.view.ndim): - * dst.shape[dim] = shape[dim] - * dst.strides[dim] = strides[dim] # <<<<<<<<<<<<<< - * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 - * - */ - (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]); - - /* "View.MemoryView":1077 - * dst.shape[dim] = shape[dim] - * dst.strides[dim] = strides[dim] - * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_copy_object') - */ - __pyx_t_6 = (__pyx_v_suboffsets != 0); - if (__pyx_t_6) { - __pyx_t_5 = (__pyx_v_suboffsets[__pyx_v_dim]); - } else { - __pyx_t_5 = -1L; - } - (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_5; - } - - /* "View.MemoryView":1063 - * - * @cname('__pyx_memoryview_slice_copy') - * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst) noexcept: # <<<<<<<<<<<<<< - * cdef int dim - * cdef (Py_ssize_t*) shape, strides, suboffsets - */ - - /* function exit code */ -} - -/* "View.MemoryView":1080 - * - * @cname('__pyx_memoryview_copy_object') - * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< - * "Create a new memoryview object" - * cdef __Pyx_memviewslice memviewslice - */ - -static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx_v_memview) { - __Pyx_memviewslice __pyx_v_memviewslice; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("memoryview_copy", 1); - - /* "View.MemoryView":1083 - * "Create a new memoryview object" - * cdef __Pyx_memviewslice memviewslice - * slice_copy(memview, &memviewslice) # <<<<<<<<<<<<<< - * return memoryview_copy_from_slice(memview, &memviewslice) - * - */ - __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice)); - - /* "View.MemoryView":1084 - * cdef __Pyx_memviewslice memviewslice - * slice_copy(memview, &memviewslice) - * return memoryview_copy_from_slice(memview, &memviewslice) # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_copy_object_from_slice') - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1084, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "View.MemoryView":1080 - * - * @cname('__pyx_memoryview_copy_object') - * cdef memoryview_copy(memoryview memview): # <<<<<<<<<<<<<< - * "Create a new memoryview object" - * cdef __Pyx_memviewslice memviewslice - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("View.MemoryView.memoryview_copy", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":1087 - * - * @cname('__pyx_memoryview_copy_object_from_slice') - * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< - * """ - * Create a new memoryview object from a given memoryview object and slice. - */ - -static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_memviewslice) { - PyObject *(*__pyx_v_to_object_func)(char *); - int (*__pyx_v_to_dtype_func)(char *, PyObject *); - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *(*__pyx_t_2)(char *); - int (*__pyx_t_3)(char *, PyObject *); - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 1); - - /* "View.MemoryView":1094 - * cdef int (*to_dtype_func)(char *, object) except 0 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * to_object_func = (<_memoryviewslice> memview).to_object_func - * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func - */ - __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type); - if (__pyx_t_1) { - - /* "View.MemoryView":1095 - * - * if isinstance(memview, _memoryviewslice): - * to_object_func = (<_memoryviewslice> memview).to_object_func # <<<<<<<<<<<<<< - * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func - * else: - */ - __pyx_t_2 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func; - __pyx_v_to_object_func = __pyx_t_2; - - /* "View.MemoryView":1096 - * if isinstance(memview, _memoryviewslice): - * to_object_func = (<_memoryviewslice> memview).to_object_func - * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func # <<<<<<<<<<<<<< - * else: - * to_object_func = NULL - */ - __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func; - __pyx_v_to_dtype_func = __pyx_t_3; - - /* "View.MemoryView":1094 - * cdef int (*to_dtype_func)(char *, object) except 0 - * - * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< - * to_object_func = (<_memoryviewslice> memview).to_object_func - * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func - */ - goto __pyx_L3; - } - - /* "View.MemoryView":1098 - * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func - * else: - * to_object_func = NULL # <<<<<<<<<<<<<< - * to_dtype_func = NULL - * - */ - /*else*/ { - __pyx_v_to_object_func = NULL; - - /* "View.MemoryView":1099 - * else: - * to_object_func = NULL - * to_dtype_func = NULL # <<<<<<<<<<<<<< - * - * return memoryview_fromslice(memviewslice[0], memview.view.ndim, - */ - __pyx_v_to_dtype_func = NULL; - } - __pyx_L3:; - - /* "View.MemoryView":1101 - * to_dtype_func = NULL - * - * return memoryview_fromslice(memviewslice[0], memview.view.ndim, # <<<<<<<<<<<<<< - * to_object_func, to_dtype_func, - * memview.dtype_is_object) - */ - __Pyx_XDECREF(__pyx_r); - - /* "View.MemoryView":1103 - * return memoryview_fromslice(memviewslice[0], memview.view.ndim, - * to_object_func, to_dtype_func, - * memview.dtype_is_object) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_4 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "View.MemoryView":1087 - * - * @cname('__pyx_memoryview_copy_object_from_slice') - * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice): # <<<<<<<<<<<<<< - * """ - * Create a new memoryview object from a given memoryview object and slice. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("View.MemoryView.memoryview_copy_from_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "View.MemoryView":1109 - * - * - * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: # <<<<<<<<<<<<<< - * return -arg if arg < 0 else arg - * - */ - -static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { - Py_ssize_t __pyx_r; - Py_ssize_t __pyx_t_1; - int __pyx_t_2; - - /* "View.MemoryView":1110 - * - * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: - * return -arg if arg < 0 else arg # <<<<<<<<<<<<<< - * - * @cname('__pyx_get_best_slice_order') - */ - __pyx_t_2 = (__pyx_v_arg < 0); - if (__pyx_t_2) { - __pyx_t_1 = (-__pyx_v_arg); - } else { - __pyx_t_1 = __pyx_v_arg; - } - __pyx_r = __pyx_t_1; - goto __pyx_L0; - - /* "View.MemoryView":1109 - * - * - * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: # <<<<<<<<<<<<<< - * return -arg if arg < 0 else arg - * - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":1113 - * - * @cname('__pyx_get_best_slice_order') - * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) noexcept nogil: # <<<<<<<<<<<<<< - * """ - * Figure out the best memory access order for a given slice. - */ - -static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim) { - int __pyx_v_i; - Py_ssize_t __pyx_v_c_stride; - Py_ssize_t __pyx_v_f_stride; - char __pyx_r; - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - - /* "View.MemoryView":1118 - * """ - * cdef int i - * cdef Py_ssize_t c_stride = 0 # <<<<<<<<<<<<<< - * cdef Py_ssize_t f_stride = 0 - * - */ - __pyx_v_c_stride = 0; - - /* "View.MemoryView":1119 - * cdef int i - * cdef Py_ssize_t c_stride = 0 - * cdef Py_ssize_t f_stride = 0 # <<<<<<<<<<<<<< - * - * for i in range(ndim - 1, -1, -1): - */ - __pyx_v_f_stride = 0; - - /* "View.MemoryView":1121 - * cdef Py_ssize_t f_stride = 0 - * - * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< - * if mslice.shape[i] > 1: - * c_stride = mslice.strides[i] - */ - for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { - __pyx_v_i = __pyx_t_1; - - /* "View.MemoryView":1122 - * - * for i in range(ndim - 1, -1, -1): - * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< - * c_stride = mslice.strides[i] - * break - */ - __pyx_t_2 = ((__pyx_v_mslice->shape[__pyx_v_i]) > 1); - if (__pyx_t_2) { - - /* "View.MemoryView":1123 - * for i in range(ndim - 1, -1, -1): - * if mslice.shape[i] > 1: - * c_stride = mslice.strides[i] # <<<<<<<<<<<<<< - * break - * - */ - __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - - /* "View.MemoryView":1124 - * if mslice.shape[i] > 1: - * c_stride = mslice.strides[i] - * break # <<<<<<<<<<<<<< - * - * for i in range(ndim): - */ - goto __pyx_L4_break; - - /* "View.MemoryView":1122 - * - * for i in range(ndim - 1, -1, -1): - * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< - * c_stride = mslice.strides[i] - * break - */ - } - } - __pyx_L4_break:; - - /* "View.MemoryView":1126 - * break - * - * for i in range(ndim): # <<<<<<<<<<<<<< - * if mslice.shape[i] > 1: - * f_stride = mslice.strides[i] - */ - __pyx_t_1 = __pyx_v_ndim; - __pyx_t_3 = __pyx_t_1; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "View.MemoryView":1127 - * - * for i in range(ndim): - * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< - * f_stride = mslice.strides[i] - * break - */ - __pyx_t_2 = ((__pyx_v_mslice->shape[__pyx_v_i]) > 1); - if (__pyx_t_2) { - - /* "View.MemoryView":1128 - * for i in range(ndim): - * if mslice.shape[i] > 1: - * f_stride = mslice.strides[i] # <<<<<<<<<<<<<< - * break - * - */ - __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - - /* "View.MemoryView":1129 - * if mslice.shape[i] > 1: - * f_stride = mslice.strides[i] - * break # <<<<<<<<<<<<<< - * - * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): - */ - goto __pyx_L7_break; - - /* "View.MemoryView":1127 - * - * for i in range(ndim): - * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< - * f_stride = mslice.strides[i] - * break - */ - } - } - __pyx_L7_break:; - - /* "View.MemoryView":1131 - * break - * - * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< - * return 'C' - * else: - */ - __pyx_t_2 = (abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)); - if (__pyx_t_2) { - - /* "View.MemoryView":1132 - * - * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): - * return 'C' # <<<<<<<<<<<<<< - * else: - * return 'F' - */ - __pyx_r = 'C'; - goto __pyx_L0; - - /* "View.MemoryView":1131 - * break - * - * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< - * return 'C' - * else: - */ - } - - /* "View.MemoryView":1134 - * return 'C' - * else: - * return 'F' # <<<<<<<<<<<<<< - * - * @cython.cdivision(True) - */ - /*else*/ { - __pyx_r = 'F'; - goto __pyx_L0; - } - - /* "View.MemoryView":1113 - * - * @cname('__pyx_get_best_slice_order') - * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) noexcept nogil: # <<<<<<<<<<<<<< - * """ - * Figure out the best memory access order for a given slice. - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":1137 - * - * @cython.cdivision(True) - * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< - * char *dst_data, Py_ssize_t *dst_strides, - * Py_ssize_t *src_shape, Py_ssize_t *dst_shape, - */ - -static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v_src_strides, char *__pyx_v_dst_data, Py_ssize_t *__pyx_v_dst_strides, Py_ssize_t *__pyx_v_src_shape, Py_ssize_t *__pyx_v_dst_shape, int __pyx_v_ndim, size_t __pyx_v_itemsize) { - CYTHON_UNUSED Py_ssize_t __pyx_v_i; - CYTHON_UNUSED Py_ssize_t __pyx_v_src_extent; - Py_ssize_t __pyx_v_dst_extent; - Py_ssize_t __pyx_v_src_stride; - Py_ssize_t __pyx_v_dst_stride; - int __pyx_t_1; - int __pyx_t_2; - Py_ssize_t __pyx_t_3; - Py_ssize_t __pyx_t_4; - Py_ssize_t __pyx_t_5; - - /* "View.MemoryView":1144 - * - * cdef Py_ssize_t i - * cdef Py_ssize_t src_extent = src_shape[0] # <<<<<<<<<<<<<< - * cdef Py_ssize_t dst_extent = dst_shape[0] - * cdef Py_ssize_t src_stride = src_strides[0] - */ - __pyx_v_src_extent = (__pyx_v_src_shape[0]); - - /* "View.MemoryView":1145 - * cdef Py_ssize_t i - * cdef Py_ssize_t src_extent = src_shape[0] - * cdef Py_ssize_t dst_extent = dst_shape[0] # <<<<<<<<<<<<<< - * cdef Py_ssize_t src_stride = src_strides[0] - * cdef Py_ssize_t dst_stride = dst_strides[0] - */ - __pyx_v_dst_extent = (__pyx_v_dst_shape[0]); - - /* "View.MemoryView":1146 - * cdef Py_ssize_t src_extent = src_shape[0] - * cdef Py_ssize_t dst_extent = dst_shape[0] - * cdef Py_ssize_t src_stride = src_strides[0] # <<<<<<<<<<<<<< - * cdef Py_ssize_t dst_stride = dst_strides[0] - * - */ - __pyx_v_src_stride = (__pyx_v_src_strides[0]); - - /* "View.MemoryView":1147 - * cdef Py_ssize_t dst_extent = dst_shape[0] - * cdef Py_ssize_t src_stride = src_strides[0] - * cdef Py_ssize_t dst_stride = dst_strides[0] # <<<<<<<<<<<<<< - * - * if ndim == 1: - */ - __pyx_v_dst_stride = (__pyx_v_dst_strides[0]); - - /* "View.MemoryView":1149 - * cdef Py_ssize_t dst_stride = dst_strides[0] - * - * if ndim == 1: # <<<<<<<<<<<<<< - * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): - */ - __pyx_t_1 = (__pyx_v_ndim == 1); - if (__pyx_t_1) { - - /* "View.MemoryView":1150 - * - * if ndim == 1: - * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): - * memcpy(dst_data, src_data, itemsize * dst_extent) - */ - __pyx_t_2 = (__pyx_v_src_stride > 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_2 = (__pyx_v_dst_stride > 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L5_bool_binop_done; - } - - /* "View.MemoryView":1151 - * if ndim == 1: - * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< - * memcpy(dst_data, src_data, itemsize * dst_extent) - * else: - */ - __pyx_t_2 = (((size_t)__pyx_v_src_stride) == __pyx_v_itemsize); - if (__pyx_t_2) { - __pyx_t_2 = (__pyx_v_itemsize == ((size_t)__pyx_v_dst_stride)); - } - __pyx_t_1 = __pyx_t_2; - __pyx_L5_bool_binop_done:; - - /* "View.MemoryView":1150 - * - * if ndim == 1: - * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): - * memcpy(dst_data, src_data, itemsize * dst_extent) - */ - if (__pyx_t_1) { - - /* "View.MemoryView":1152 - * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): - * memcpy(dst_data, src_data, itemsize * dst_extent) # <<<<<<<<<<<<<< - * else: - * for i in range(dst_extent): - */ - (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent))); - - /* "View.MemoryView":1150 - * - * if ndim == 1: - * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): - * memcpy(dst_data, src_data, itemsize * dst_extent) - */ - goto __pyx_L4; - } - - /* "View.MemoryView":1154 - * memcpy(dst_data, src_data, itemsize * dst_extent) - * else: - * for i in range(dst_extent): # <<<<<<<<<<<<<< - * memcpy(dst_data, src_data, itemsize) - * src_data += src_stride - */ - /*else*/ { - __pyx_t_3 = __pyx_v_dst_extent; - __pyx_t_4 = __pyx_t_3; - for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { - __pyx_v_i = __pyx_t_5; - - /* "View.MemoryView":1155 - * else: - * for i in range(dst_extent): - * memcpy(dst_data, src_data, itemsize) # <<<<<<<<<<<<<< - * src_data += src_stride - * dst_data += dst_stride - */ - (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize)); - - /* "View.MemoryView":1156 - * for i in range(dst_extent): - * memcpy(dst_data, src_data, itemsize) - * src_data += src_stride # <<<<<<<<<<<<<< - * dst_data += dst_stride - * else: - */ - __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - - /* "View.MemoryView":1157 - * memcpy(dst_data, src_data, itemsize) - * src_data += src_stride - * dst_data += dst_stride # <<<<<<<<<<<<<< - * else: - * for i in range(dst_extent): - */ - __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride); - } - } - __pyx_L4:; - - /* "View.MemoryView":1149 - * cdef Py_ssize_t dst_stride = dst_strides[0] - * - * if ndim == 1: # <<<<<<<<<<<<<< - * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): - */ - goto __pyx_L3; - } - - /* "View.MemoryView":1159 - * dst_data += dst_stride - * else: - * for i in range(dst_extent): # <<<<<<<<<<<<<< - * _copy_strided_to_strided(src_data, src_strides + 1, - * dst_data, dst_strides + 1, - */ - /*else*/ { - __pyx_t_3 = __pyx_v_dst_extent; - __pyx_t_4 = __pyx_t_3; - for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { - __pyx_v_i = __pyx_t_5; - - /* "View.MemoryView":1160 - * else: - * for i in range(dst_extent): - * _copy_strided_to_strided(src_data, src_strides + 1, # <<<<<<<<<<<<<< - * dst_data, dst_strides + 1, - * src_shape + 1, dst_shape + 1, - */ - _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize); - - /* "View.MemoryView":1164 - * src_shape + 1, dst_shape + 1, - * ndim - 1, itemsize) - * src_data += src_stride # <<<<<<<<<<<<<< - * dst_data += dst_stride - * - */ - __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - - /* "View.MemoryView":1165 - * ndim - 1, itemsize) - * src_data += src_stride - * dst_data += dst_stride # <<<<<<<<<<<<<< - * - * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, - */ - __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride); - } - } - __pyx_L3:; - - /* "View.MemoryView":1137 - * - * @cython.cdivision(True) - * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides, # <<<<<<<<<<<<<< - * char *dst_data, Py_ssize_t *dst_strides, - * Py_ssize_t *src_shape, Py_ssize_t *dst_shape, - */ - - /* function exit code */ -} - -/* "View.MemoryView":1167 - * dst_data += dst_stride - * - * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< - * __Pyx_memviewslice *dst, - * int ndim, size_t itemsize) noexcept nogil: - */ - -static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) { - - /* "View.MemoryView":1170 - * __Pyx_memviewslice *dst, - * int ndim, size_t itemsize) noexcept nogil: - * _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides, # <<<<<<<<<<<<<< - * src.shape, dst.shape, ndim, itemsize) - * - */ - _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize); - - /* "View.MemoryView":1167 - * dst_data += dst_stride - * - * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< - * __Pyx_memviewslice *dst, - * int ndim, size_t itemsize) noexcept nogil: - */ - - /* function exit code */ -} - -/* "View.MemoryView":1174 - * - * @cname('__pyx_memoryview_slice_get_size') - * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) noexcept nogil: # <<<<<<<<<<<<<< - * "Return the size of the memory occupied by the slice in number of bytes" - * cdef Py_ssize_t shape, size = src.memview.view.itemsize - */ - -static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_src, int __pyx_v_ndim) { - Py_ssize_t __pyx_v_shape; - Py_ssize_t __pyx_v_size; - Py_ssize_t __pyx_r; - Py_ssize_t __pyx_t_1; - Py_ssize_t *__pyx_t_2; - Py_ssize_t *__pyx_t_3; - Py_ssize_t *__pyx_t_4; - - /* "View.MemoryView":1176 - * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) noexcept nogil: - * "Return the size of the memory occupied by the slice in number of bytes" - * cdef Py_ssize_t shape, size = src.memview.view.itemsize # <<<<<<<<<<<<<< - * - * for shape in src.shape[:ndim]: - */ - __pyx_t_1 = __pyx_v_src->memview->view.itemsize; - __pyx_v_size = __pyx_t_1; - - /* "View.MemoryView":1178 - * cdef Py_ssize_t shape, size = src.memview.view.itemsize - * - * for shape in src.shape[:ndim]: # <<<<<<<<<<<<<< - * size *= shape - * - */ - __pyx_t_3 = (__pyx_v_src->shape + __pyx_v_ndim); - for (__pyx_t_4 = __pyx_v_src->shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { - __pyx_t_2 = __pyx_t_4; - __pyx_v_shape = (__pyx_t_2[0]); - - /* "View.MemoryView":1179 - * - * for shape in src.shape[:ndim]: - * size *= shape # <<<<<<<<<<<<<< - * - * return size - */ - __pyx_v_size = (__pyx_v_size * __pyx_v_shape); - } - - /* "View.MemoryView":1181 - * size *= shape - * - * return size # <<<<<<<<<<<<<< - * - * @cname('__pyx_fill_contig_strides_array') - */ - __pyx_r = __pyx_v_size; - goto __pyx_L0; - - /* "View.MemoryView":1174 - * - * @cname('__pyx_memoryview_slice_get_size') - * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) noexcept nogil: # <<<<<<<<<<<<<< - * "Return the size of the memory occupied by the slice in number of bytes" - * cdef Py_ssize_t shape, size = src.memview.view.itemsize - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":1184 - * - * @cname('__pyx_fill_contig_strides_array') - * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< - * Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride, - * int ndim, char order) noexcept nogil: - */ - -static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, Py_ssize_t __pyx_v_stride, int __pyx_v_ndim, char __pyx_v_order) { - int __pyx_v_idx; - Py_ssize_t __pyx_r; - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - - /* "View.MemoryView":1193 - * cdef int idx - * - * if order == 'F': # <<<<<<<<<<<<<< - * for idx in range(ndim): - * strides[idx] = stride - */ - __pyx_t_1 = (__pyx_v_order == 'F'); - if (__pyx_t_1) { - - /* "View.MemoryView":1194 - * - * if order == 'F': - * for idx in range(ndim): # <<<<<<<<<<<<<< - * strides[idx] = stride - * stride *= shape[idx] - */ - __pyx_t_2 = __pyx_v_ndim; - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_idx = __pyx_t_4; - - /* "View.MemoryView":1195 - * if order == 'F': - * for idx in range(ndim): - * strides[idx] = stride # <<<<<<<<<<<<<< - * stride *= shape[idx] - * else: - */ - (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - - /* "View.MemoryView":1196 - * for idx in range(ndim): - * strides[idx] = stride - * stride *= shape[idx] # <<<<<<<<<<<<<< - * else: - * for idx in range(ndim - 1, -1, -1): - */ - __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); - } - - /* "View.MemoryView":1193 - * cdef int idx - * - * if order == 'F': # <<<<<<<<<<<<<< - * for idx in range(ndim): - * strides[idx] = stride - */ - goto __pyx_L3; - } - - /* "View.MemoryView":1198 - * stride *= shape[idx] - * else: - * for idx in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< - * strides[idx] = stride - * stride *= shape[idx] - */ - /*else*/ { - for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) { - __pyx_v_idx = __pyx_t_2; - - /* "View.MemoryView":1199 - * else: - * for idx in range(ndim - 1, -1, -1): - * strides[idx] = stride # <<<<<<<<<<<<<< - * stride *= shape[idx] - * - */ - (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - - /* "View.MemoryView":1200 - * for idx in range(ndim - 1, -1, -1): - * strides[idx] = stride - * stride *= shape[idx] # <<<<<<<<<<<<<< - * - * return stride - */ - __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); - } - } - __pyx_L3:; - - /* "View.MemoryView":1202 - * stride *= shape[idx] - * - * return stride # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_copy_data_to_temp') - */ - __pyx_r = __pyx_v_stride; - goto __pyx_L0; - - /* "View.MemoryView":1184 - * - * @cname('__pyx_fill_contig_strides_array') - * cdef Py_ssize_t fill_contig_strides_array( # <<<<<<<<<<<<<< - * Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride, - * int ndim, char order) noexcept nogil: - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":1205 - * - * @cname('__pyx_memoryview_copy_data_to_temp') - * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< - * __Pyx_memviewslice *tmpslice, - * char order, - */ - -static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_tmpslice, char __pyx_v_order, int __pyx_v_ndim) { - int __pyx_v_i; - void *__pyx_v_result; - size_t __pyx_v_itemsize; - size_t __pyx_v_size; - void *__pyx_r; - Py_ssize_t __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - struct __pyx_memoryview_obj *__pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save; - #endif - - /* "View.MemoryView":1216 - * cdef void *result - * - * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< - * cdef size_t size = slice_get_size(src, ndim) - * - */ - __pyx_t_1 = __pyx_v_src->memview->view.itemsize; - __pyx_v_itemsize = __pyx_t_1; - - /* "View.MemoryView":1217 - * - * cdef size_t itemsize = src.memview.view.itemsize - * cdef size_t size = slice_get_size(src, ndim) # <<<<<<<<<<<<<< - * - * result = malloc(size) - */ - __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim); - - /* "View.MemoryView":1219 - * cdef size_t size = slice_get_size(src, ndim) - * - * result = malloc(size) # <<<<<<<<<<<<<< - * if not result: - * _err_no_memory() - */ - __pyx_v_result = malloc(__pyx_v_size); - - /* "View.MemoryView":1220 - * - * result = malloc(size) - * if not result: # <<<<<<<<<<<<<< - * _err_no_memory() - * - */ - __pyx_t_2 = (!(__pyx_v_result != 0)); - if (__pyx_t_2) { - - /* "View.MemoryView":1221 - * result = malloc(size) - * if not result: - * _err_no_memory() # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_3 = __pyx_memoryview_err_no_memory(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1221, __pyx_L1_error) - - /* "View.MemoryView":1220 - * - * result = malloc(size) - * if not result: # <<<<<<<<<<<<<< - * _err_no_memory() - * - */ - } - - /* "View.MemoryView":1224 - * - * - * tmpslice.data = result # <<<<<<<<<<<<<< - * tmpslice.memview = src.memview - * for i in range(ndim): - */ - __pyx_v_tmpslice->data = ((char *)__pyx_v_result); - - /* "View.MemoryView":1225 - * - * tmpslice.data = result - * tmpslice.memview = src.memview # <<<<<<<<<<<<<< - * for i in range(ndim): - * tmpslice.shape[i] = src.shape[i] - */ - __pyx_t_4 = __pyx_v_src->memview; - __pyx_v_tmpslice->memview = __pyx_t_4; - - /* "View.MemoryView":1226 - * tmpslice.data = result - * tmpslice.memview = src.memview - * for i in range(ndim): # <<<<<<<<<<<<<< - * tmpslice.shape[i] = src.shape[i] - * tmpslice.suboffsets[i] = -1 - */ - __pyx_t_3 = __pyx_v_ndim; - __pyx_t_5 = __pyx_t_3; - for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { - __pyx_v_i = __pyx_t_6; - - /* "View.MemoryView":1227 - * tmpslice.memview = src.memview - * for i in range(ndim): - * tmpslice.shape[i] = src.shape[i] # <<<<<<<<<<<<<< - * tmpslice.suboffsets[i] = -1 - * - */ - (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]); - - /* "View.MemoryView":1228 - * for i in range(ndim): - * tmpslice.shape[i] = src.shape[i] - * tmpslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< - * - * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, ndim, order) - */ - (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L; - } - - /* "View.MemoryView":1230 - * tmpslice.suboffsets[i] = -1 - * - * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, ndim, order) # <<<<<<<<<<<<<< - * - * - */ - (void)(__pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order)); - - /* "View.MemoryView":1233 - * - * - * for i in range(ndim): # <<<<<<<<<<<<<< - * if tmpslice.shape[i] == 1: - * tmpslice.strides[i] = 0 - */ - __pyx_t_3 = __pyx_v_ndim; - __pyx_t_5 = __pyx_t_3; - for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { - __pyx_v_i = __pyx_t_6; - - /* "View.MemoryView":1234 - * - * for i in range(ndim): - * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< - * tmpslice.strides[i] = 0 - * - */ - __pyx_t_2 = ((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1); - if (__pyx_t_2) { - - /* "View.MemoryView":1235 - * for i in range(ndim): - * if tmpslice.shape[i] == 1: - * tmpslice.strides[i] = 0 # <<<<<<<<<<<<<< - * - * if slice_is_contig(src[0], order, ndim): - */ - (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0; - - /* "View.MemoryView":1234 - * - * for i in range(ndim): - * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< - * tmpslice.strides[i] = 0 - * - */ - } - } - - /* "View.MemoryView":1237 - * tmpslice.strides[i] = 0 - * - * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< - * memcpy(result, src.data, size) - * else: - */ - __pyx_t_2 = __pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim); - if (__pyx_t_2) { - - /* "View.MemoryView":1238 - * - * if slice_is_contig(src[0], order, ndim): - * memcpy(result, src.data, size) # <<<<<<<<<<<<<< - * else: - * copy_strided_to_strided(src, tmpslice, ndim, itemsize) - */ - (void)(memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size)); - - /* "View.MemoryView":1237 - * tmpslice.strides[i] = 0 - * - * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< - * memcpy(result, src.data, size) - * else: - */ - goto __pyx_L9; - } - - /* "View.MemoryView":1240 - * memcpy(result, src.data, size) - * else: - * copy_strided_to_strided(src, tmpslice, ndim, itemsize) # <<<<<<<<<<<<<< - * - * return result - */ - /*else*/ { - copy_strided_to_strided(__pyx_v_src, __pyx_v_tmpslice, __pyx_v_ndim, __pyx_v_itemsize); - } - __pyx_L9:; - - /* "View.MemoryView":1242 - * copy_strided_to_strided(src, tmpslice, ndim, itemsize) - * - * return result # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "View.MemoryView":1205 - * - * @cname('__pyx_memoryview_copy_data_to_temp') - * cdef void *copy_data_to_temp(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< - * __Pyx_memviewslice *tmpslice, - * char order, - */ - - /* function exit code */ - __pyx_L1_error:; - #ifdef WITH_THREAD - __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - __Pyx_AddTraceback("View.MemoryView.copy_data_to_temp", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":1247 - * - * @cname('__pyx_memoryview_err_extents') - * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< - * Py_ssize_t extent2) except -1 with gil: - * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" - */ - -static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent1, Py_ssize_t __pyx_v_extent2) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - Py_UCS4 __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - __Pyx_RefNannySetupContext("_err_extents", 0); - - /* "View.MemoryView":1249 - * cdef int _err_extents(int i, Py_ssize_t extent1, - * Py_ssize_t extent2) except -1 with gil: - * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_err_dim') - */ - __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = 0; - __pyx_t_3 = 127; - __Pyx_INCREF(__pyx_kp_u_got_differing_extents_in_dimensi); - __pyx_t_2 += 35; - __Pyx_GIVEREF(__pyx_kp_u_got_differing_extents_in_dimensi); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_got_differing_extents_in_dimensi); - __pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u_got); - __pyx_t_2 += 6; - __Pyx_GIVEREF(__pyx_kp_u_got); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_got); - __pyx_t_4 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent1, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u_and); - __pyx_t_2 += 5; - __Pyx_GIVEREF(__pyx_kp_u_and); - PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_and); - __pyx_t_4 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent2, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_INCREF(__pyx_kp_u__7); - __pyx_t_2 += 1; - __Pyx_GIVEREF(__pyx_kp_u__7); - PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__7); - __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 7, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_4, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(1, 1249, __pyx_L1_error) - - /* "View.MemoryView":1247 - * - * @cname('__pyx_memoryview_err_extents') - * cdef int _err_extents(int i, Py_ssize_t extent1, # <<<<<<<<<<<<<< - * Py_ssize_t extent2) except -1 with gil: - * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("View.MemoryView._err_extents", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __Pyx_RefNannyFinishContext(); - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - return __pyx_r; -} - -/* "View.MemoryView":1252 - * - * @cname('__pyx_memoryview_err_dim') - * cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< - * raise error, msg % dim - * - */ - -static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, PyObject *__pyx_v_msg, int __pyx_v_dim) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - __Pyx_RefNannySetupContext("_err_dim", 0); - __Pyx_INCREF(__pyx_v_msg); - - /* "View.MemoryView":1253 - * @cname('__pyx_memoryview_err_dim') - * cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil: - * raise error, msg % dim # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_err') - */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1253, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1253, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(((PyObject *)__pyx_v_error), __pyx_t_2, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(1, 1253, __pyx_L1_error) - - /* "View.MemoryView":1252 - * - * @cname('__pyx_memoryview_err_dim') - * cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil: # <<<<<<<<<<<<<< - * raise error, msg % dim - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __Pyx_XDECREF(__pyx_v_msg); - __Pyx_RefNannyFinishContext(); - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - return __pyx_r; -} - -/* "View.MemoryView":1256 - * - * @cname('__pyx_memoryview_err') - * cdef int _err(PyObject *error, str msg) except -1 with gil: # <<<<<<<<<<<<<< - * raise error, msg - * - */ - -static int __pyx_memoryview_err(PyObject *__pyx_v_error, PyObject *__pyx_v_msg) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - __Pyx_RefNannySetupContext("_err", 0); - __Pyx_INCREF(__pyx_v_msg); - - /* "View.MemoryView":1257 - * @cname('__pyx_memoryview_err') - * cdef int _err(PyObject *error, str msg) except -1 with gil: - * raise error, msg # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_err_no_memory') - */ - __Pyx_Raise(((PyObject *)__pyx_v_error), __pyx_v_msg, 0, 0); - __PYX_ERR(1, 1257, __pyx_L1_error) - - /* "View.MemoryView":1256 - * - * @cname('__pyx_memoryview_err') - * cdef int _err(PyObject *error, str msg) except -1 with gil: # <<<<<<<<<<<<<< - * raise error, msg - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __Pyx_XDECREF(__pyx_v_msg); - __Pyx_RefNannyFinishContext(); - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - return __pyx_r; -} - -/* "View.MemoryView":1260 - * - * @cname('__pyx_memoryview_err_no_memory') - * cdef int _err_no_memory() except -1 with gil: # <<<<<<<<<<<<<< - * raise MemoryError - * - */ - -static int __pyx_memoryview_err_no_memory(void) { - int __pyx_r; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - - /* "View.MemoryView":1261 - * @cname('__pyx_memoryview_err_no_memory') - * cdef int _err_no_memory() except -1 with gil: - * raise MemoryError # <<<<<<<<<<<<<< - * - * - */ - PyErr_NoMemory(); __PYX_ERR(1, 1261, __pyx_L1_error) - - /* "View.MemoryView":1260 - * - * @cname('__pyx_memoryview_err_no_memory') - * cdef int _err_no_memory() except -1 with gil: # <<<<<<<<<<<<<< - * raise MemoryError - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("View.MemoryView._err_no_memory", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - return __pyx_r; -} - -/* "View.MemoryView":1265 - * - * @cname('__pyx_memoryview_copy_contents') - * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< - * __Pyx_memviewslice dst, - * int src_ndim, int dst_ndim, - */ - -static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_memviewslice __pyx_v_dst, int __pyx_v_src_ndim, int __pyx_v_dst_ndim, int __pyx_v_dtype_is_object) { - void *__pyx_v_tmpdata; - size_t __pyx_v_itemsize; - int __pyx_v_i; - char __pyx_v_order; - int __pyx_v_broadcasting; - int __pyx_v_direct_copy; - __Pyx_memviewslice __pyx_v_tmp; - int __pyx_v_ndim; - int __pyx_r; - Py_ssize_t __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - int __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - void *__pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save; - #endif - - /* "View.MemoryView":1273 - * Check for overlapping memory and verify the shapes. - * """ - * cdef void *tmpdata = NULL # <<<<<<<<<<<<<< - * cdef size_t itemsize = src.memview.view.itemsize - * cdef int i - */ - __pyx_v_tmpdata = NULL; - - /* "View.MemoryView":1274 - * """ - * cdef void *tmpdata = NULL - * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< - * cdef int i - * cdef char order = get_best_order(&src, src_ndim) - */ - __pyx_t_1 = __pyx_v_src.memview->view.itemsize; - __pyx_v_itemsize = __pyx_t_1; - - /* "View.MemoryView":1276 - * cdef size_t itemsize = src.memview.view.itemsize - * cdef int i - * cdef char order = get_best_order(&src, src_ndim) # <<<<<<<<<<<<<< - * cdef bint broadcasting = False - * cdef bint direct_copy = False - */ - __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim); - - /* "View.MemoryView":1277 - * cdef int i - * cdef char order = get_best_order(&src, src_ndim) - * cdef bint broadcasting = False # <<<<<<<<<<<<<< - * cdef bint direct_copy = False - * cdef __Pyx_memviewslice tmp - */ - __pyx_v_broadcasting = 0; - - /* "View.MemoryView":1278 - * cdef char order = get_best_order(&src, src_ndim) - * cdef bint broadcasting = False - * cdef bint direct_copy = False # <<<<<<<<<<<<<< - * cdef __Pyx_memviewslice tmp - * - */ - __pyx_v_direct_copy = 0; - - /* "View.MemoryView":1281 - * cdef __Pyx_memviewslice tmp - * - * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< - * broadcast_leading(&src, src_ndim, dst_ndim) - * elif dst_ndim < src_ndim: - */ - __pyx_t_2 = (__pyx_v_src_ndim < __pyx_v_dst_ndim); - if (__pyx_t_2) { - - /* "View.MemoryView":1282 - * - * if src_ndim < dst_ndim: - * broadcast_leading(&src, src_ndim, dst_ndim) # <<<<<<<<<<<<<< - * elif dst_ndim < src_ndim: - * broadcast_leading(&dst, dst_ndim, src_ndim) - */ - __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim); - - /* "View.MemoryView":1281 - * cdef __Pyx_memviewslice tmp - * - * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< - * broadcast_leading(&src, src_ndim, dst_ndim) - * elif dst_ndim < src_ndim: - */ - goto __pyx_L3; - } - - /* "View.MemoryView":1283 - * if src_ndim < dst_ndim: - * broadcast_leading(&src, src_ndim, dst_ndim) - * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< - * broadcast_leading(&dst, dst_ndim, src_ndim) - * - */ - __pyx_t_2 = (__pyx_v_dst_ndim < __pyx_v_src_ndim); - if (__pyx_t_2) { - - /* "View.MemoryView":1284 - * broadcast_leading(&src, src_ndim, dst_ndim) - * elif dst_ndim < src_ndim: - * broadcast_leading(&dst, dst_ndim, src_ndim) # <<<<<<<<<<<<<< - * - * cdef int ndim = max(src_ndim, dst_ndim) - */ - __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim); - - /* "View.MemoryView":1283 - * if src_ndim < dst_ndim: - * broadcast_leading(&src, src_ndim, dst_ndim) - * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< - * broadcast_leading(&dst, dst_ndim, src_ndim) - * - */ - } - __pyx_L3:; - - /* "View.MemoryView":1286 - * broadcast_leading(&dst, dst_ndim, src_ndim) - * - * cdef int ndim = max(src_ndim, dst_ndim) # <<<<<<<<<<<<<< - * - * for i in range(ndim): - */ - __pyx_t_3 = __pyx_v_dst_ndim; - __pyx_t_4 = __pyx_v_src_ndim; - __pyx_t_2 = (__pyx_t_3 > __pyx_t_4); - if (__pyx_t_2) { - __pyx_t_5 = __pyx_t_3; - } else { - __pyx_t_5 = __pyx_t_4; - } - __pyx_v_ndim = __pyx_t_5; - - /* "View.MemoryView":1288 - * cdef int ndim = max(src_ndim, dst_ndim) - * - * for i in range(ndim): # <<<<<<<<<<<<<< - * if src.shape[i] != dst.shape[i]: - * if src.shape[i] == 1: - */ - __pyx_t_5 = __pyx_v_ndim; - __pyx_t_3 = __pyx_t_5; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "View.MemoryView":1289 - * - * for i in range(ndim): - * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< - * if src.shape[i] == 1: - * broadcasting = True - */ - __pyx_t_2 = ((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])); - if (__pyx_t_2) { - - /* "View.MemoryView":1290 - * for i in range(ndim): - * if src.shape[i] != dst.shape[i]: - * if src.shape[i] == 1: # <<<<<<<<<<<<<< - * broadcasting = True - * src.strides[i] = 0 - */ - __pyx_t_2 = ((__pyx_v_src.shape[__pyx_v_i]) == 1); - if (__pyx_t_2) { - - /* "View.MemoryView":1291 - * if src.shape[i] != dst.shape[i]: - * if src.shape[i] == 1: - * broadcasting = True # <<<<<<<<<<<<<< - * src.strides[i] = 0 - * else: - */ - __pyx_v_broadcasting = 1; - - /* "View.MemoryView":1292 - * if src.shape[i] == 1: - * broadcasting = True - * src.strides[i] = 0 # <<<<<<<<<<<<<< - * else: - * _err_extents(i, dst.shape[i], src.shape[i]) - */ - (__pyx_v_src.strides[__pyx_v_i]) = 0; - - /* "View.MemoryView":1290 - * for i in range(ndim): - * if src.shape[i] != dst.shape[i]: - * if src.shape[i] == 1: # <<<<<<<<<<<<<< - * broadcasting = True - * src.strides[i] = 0 - */ - goto __pyx_L7; - } - - /* "View.MemoryView":1294 - * src.strides[i] = 0 - * else: - * _err_extents(i, dst.shape[i], src.shape[i]) # <<<<<<<<<<<<<< - * - * if src.suboffsets[i] >= 0: - */ - /*else*/ { - __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1294, __pyx_L1_error) - } - __pyx_L7:; - - /* "View.MemoryView":1289 - * - * for i in range(ndim): - * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< - * if src.shape[i] == 1: - * broadcasting = True - */ - } - - /* "View.MemoryView":1296 - * _err_extents(i, dst.shape[i], src.shape[i]) - * - * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< - * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) - * - */ - __pyx_t_2 = ((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0); - if (__pyx_t_2) { - - /* "View.MemoryView":1297 - * - * if src.suboffsets[i] >= 0: - * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) # <<<<<<<<<<<<<< - * - * if slices_overlap(&src, &dst, ndim, itemsize): - */ - __pyx_t_6 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_kp_s_Dimension_d_is_not_direct, __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error) - - /* "View.MemoryView":1296 - * _err_extents(i, dst.shape[i], src.shape[i]) - * - * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< - * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) - * - */ - } - } - - /* "View.MemoryView":1299 - * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) - * - * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< - * - * if not slice_is_contig(src, order, ndim): - */ - __pyx_t_2 = __pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); - if (__pyx_t_2) { - - /* "View.MemoryView":1301 - * if slices_overlap(&src, &dst, ndim, itemsize): - * - * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< - * order = get_best_order(&dst, ndim) - * - */ - __pyx_t_2 = (!__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim)); - if (__pyx_t_2) { - - /* "View.MemoryView":1302 - * - * if not slice_is_contig(src, order, ndim): - * order = get_best_order(&dst, ndim) # <<<<<<<<<<<<<< - * - * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) - */ - __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim); - - /* "View.MemoryView":1301 - * if slices_overlap(&src, &dst, ndim, itemsize): - * - * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< - * order = get_best_order(&dst, ndim) - * - */ - } - - /* "View.MemoryView":1304 - * order = get_best_order(&dst, ndim) - * - * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) # <<<<<<<<<<<<<< - * src = tmp - * - */ - __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1304, __pyx_L1_error) - __pyx_v_tmpdata = __pyx_t_7; - - /* "View.MemoryView":1305 - * - * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) - * src = tmp # <<<<<<<<<<<<<< - * - * if not broadcasting: - */ - __pyx_v_src = __pyx_v_tmp; - - /* "View.MemoryView":1299 - * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) - * - * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< - * - * if not slice_is_contig(src, order, ndim): - */ - } - - /* "View.MemoryView":1307 - * src = tmp - * - * if not broadcasting: # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = (!__pyx_v_broadcasting); - if (__pyx_t_2) { - - /* "View.MemoryView":1310 - * - * - * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< - * direct_copy = slice_is_contig(dst, 'C', ndim) - * elif slice_is_contig(src, 'F', ndim): - */ - __pyx_t_2 = __pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim); - if (__pyx_t_2) { - - /* "View.MemoryView":1311 - * - * if slice_is_contig(src, 'C', ndim): - * direct_copy = slice_is_contig(dst, 'C', ndim) # <<<<<<<<<<<<<< - * elif slice_is_contig(src, 'F', ndim): - * direct_copy = slice_is_contig(dst, 'F', ndim) - */ - __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim); - - /* "View.MemoryView":1310 - * - * - * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< - * direct_copy = slice_is_contig(dst, 'C', ndim) - * elif slice_is_contig(src, 'F', ndim): - */ - goto __pyx_L12; - } - - /* "View.MemoryView":1312 - * if slice_is_contig(src, 'C', ndim): - * direct_copy = slice_is_contig(dst, 'C', ndim) - * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< - * direct_copy = slice_is_contig(dst, 'F', ndim) - * - */ - __pyx_t_2 = __pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim); - if (__pyx_t_2) { - - /* "View.MemoryView":1313 - * direct_copy = slice_is_contig(dst, 'C', ndim) - * elif slice_is_contig(src, 'F', ndim): - * direct_copy = slice_is_contig(dst, 'F', ndim) # <<<<<<<<<<<<<< - * - * if direct_copy: - */ - __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim); - - /* "View.MemoryView":1312 - * if slice_is_contig(src, 'C', ndim): - * direct_copy = slice_is_contig(dst, 'C', ndim) - * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< - * direct_copy = slice_is_contig(dst, 'F', ndim) - * - */ - } - __pyx_L12:; - - /* "View.MemoryView":1315 - * direct_copy = slice_is_contig(dst, 'F', ndim) - * - * if direct_copy: # <<<<<<<<<<<<<< - * - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) - */ - if (__pyx_v_direct_copy) { - - /* "View.MemoryView":1317 - * if direct_copy: - * - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< - * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) - */ - __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - - /* "View.MemoryView":1318 - * - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) - * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) # <<<<<<<<<<<<<< - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) - * free(tmpdata) - */ - (void)(memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim))); - - /* "View.MemoryView":1319 - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) - * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< - * free(tmpdata) - * return 0 - */ - __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - - /* "View.MemoryView":1320 - * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) - * free(tmpdata) # <<<<<<<<<<<<<< - * return 0 - * - */ - free(__pyx_v_tmpdata); - - /* "View.MemoryView":1321 - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) - * free(tmpdata) - * return 0 # <<<<<<<<<<<<<< - * - * if order == 'F' == get_best_order(&dst, ndim): - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "View.MemoryView":1315 - * direct_copy = slice_is_contig(dst, 'F', ndim) - * - * if direct_copy: # <<<<<<<<<<<<<< - * - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) - */ - } - - /* "View.MemoryView":1307 - * src = tmp - * - * if not broadcasting: # <<<<<<<<<<<<<< - * - * - */ - } - - /* "View.MemoryView":1323 - * return 0 - * - * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_2 = (__pyx_v_order == 'F'); - if (__pyx_t_2) { - __pyx_t_2 = ('F' == __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim)); - } - if (__pyx_t_2) { - - /* "View.MemoryView":1326 - * - * - * transpose_memslice(&src) # <<<<<<<<<<<<<< - * transpose_memslice(&dst) - * - */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1326, __pyx_L1_error) - - /* "View.MemoryView":1327 - * - * transpose_memslice(&src) - * transpose_memslice(&dst) # <<<<<<<<<<<<<< - * - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) - */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1327, __pyx_L1_error) - - /* "View.MemoryView":1323 - * return 0 - * - * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< - * - * - */ - } - - /* "View.MemoryView":1329 - * transpose_memslice(&dst) - * - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< - * copy_strided_to_strided(&src, &dst, ndim, itemsize) - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) - */ - __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - - /* "View.MemoryView":1330 - * - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) - * copy_strided_to_strided(&src, &dst, ndim, itemsize) # <<<<<<<<<<<<<< - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) - * - */ - copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); - - /* "View.MemoryView":1331 - * refcount_copying(&dst, dtype_is_object, ndim, inc=False) - * copy_strided_to_strided(&src, &dst, ndim, itemsize) - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< - * - * free(tmpdata) - */ - __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - - /* "View.MemoryView":1333 - * refcount_copying(&dst, dtype_is_object, ndim, inc=True) - * - * free(tmpdata) # <<<<<<<<<<<<<< - * return 0 - * - */ - free(__pyx_v_tmpdata); - - /* "View.MemoryView":1334 - * - * free(tmpdata) - * return 0 # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_broadcast_leading') - */ - __pyx_r = 0; - goto __pyx_L0; - - /* "View.MemoryView":1265 - * - * @cname('__pyx_memoryview_copy_contents') - * cdef int memoryview_copy_contents(__Pyx_memviewslice src, # <<<<<<<<<<<<<< - * __Pyx_memviewslice dst, - * int src_ndim, int dst_ndim, - */ - - /* function exit code */ - __pyx_L1_error:; - #ifdef WITH_THREAD - __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - __Pyx_AddTraceback("View.MemoryView.memoryview_copy_contents", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif - __pyx_L0:; - return __pyx_r; -} - -/* "View.MemoryView":1337 - * - * @cname('__pyx_memoryview_broadcast_leading') - * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< - * int ndim, - * int ndim_other) noexcept nogil: - */ - -static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim, int __pyx_v_ndim_other) { - int __pyx_v_i; - int __pyx_v_offset; - int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; - - /* "View.MemoryView":1341 - * int ndim_other) noexcept nogil: - * cdef int i - * cdef int offset = ndim_other - ndim # <<<<<<<<<<<<<< - * - * for i in range(ndim - 1, -1, -1): - */ - __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim); - - /* "View.MemoryView":1343 - * cdef int offset = ndim_other - ndim - * - * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< - * mslice.shape[i + offset] = mslice.shape[i] - * mslice.strides[i + offset] = mslice.strides[i] - */ - for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { - __pyx_v_i = __pyx_t_1; - - /* "View.MemoryView":1344 - * - * for i in range(ndim - 1, -1, -1): - * mslice.shape[i + offset] = mslice.shape[i] # <<<<<<<<<<<<<< - * mslice.strides[i + offset] = mslice.strides[i] - * mslice.suboffsets[i + offset] = mslice.suboffsets[i] - */ - (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]); - - /* "View.MemoryView":1345 - * for i in range(ndim - 1, -1, -1): - * mslice.shape[i + offset] = mslice.shape[i] - * mslice.strides[i + offset] = mslice.strides[i] # <<<<<<<<<<<<<< - * mslice.suboffsets[i + offset] = mslice.suboffsets[i] - * - */ - (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]); - - /* "View.MemoryView":1346 - * mslice.shape[i + offset] = mslice.shape[i] - * mslice.strides[i + offset] = mslice.strides[i] - * mslice.suboffsets[i + offset] = mslice.suboffsets[i] # <<<<<<<<<<<<<< - * - * for i in range(offset): - */ - (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]); - } - - /* "View.MemoryView":1348 - * mslice.suboffsets[i + offset] = mslice.suboffsets[i] - * - * for i in range(offset): # <<<<<<<<<<<<<< - * mslice.shape[i] = 1 - * mslice.strides[i] = mslice.strides[0] - */ - __pyx_t_1 = __pyx_v_offset; - __pyx_t_2 = __pyx_t_1; - for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { - __pyx_v_i = __pyx_t_3; - - /* "View.MemoryView":1349 - * - * for i in range(offset): - * mslice.shape[i] = 1 # <<<<<<<<<<<<<< - * mslice.strides[i] = mslice.strides[0] - * mslice.suboffsets[i] = -1 - */ - (__pyx_v_mslice->shape[__pyx_v_i]) = 1; - - /* "View.MemoryView":1350 - * for i in range(offset): - * mslice.shape[i] = 1 - * mslice.strides[i] = mslice.strides[0] # <<<<<<<<<<<<<< - * mslice.suboffsets[i] = -1 - * - */ - (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]); - - /* "View.MemoryView":1351 - * mslice.shape[i] = 1 - * mslice.strides[i] = mslice.strides[0] - * mslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< - * - * - */ - (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L; - } - - /* "View.MemoryView":1337 - * - * @cname('__pyx_memoryview_broadcast_leading') - * cdef void broadcast_leading(__Pyx_memviewslice *mslice, # <<<<<<<<<<<<<< - * int ndim, - * int ndim_other) noexcept nogil: - */ - - /* function exit code */ -} - -/* "View.MemoryView":1359 - * - * @cname('__pyx_memoryview_refcount_copying') - * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil: # <<<<<<<<<<<<<< - * - * if dtype_is_object: - */ - -static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) { - - /* "View.MemoryView":1361 - * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil: - * - * if dtype_is_object: # <<<<<<<<<<<<<< - * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) - * - */ - if (__pyx_v_dtype_is_object) { - - /* "View.MemoryView":1362 - * - * if dtype_is_object: - * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') - */ - __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc); - - /* "View.MemoryView":1361 - * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil: - * - * if dtype_is_object: # <<<<<<<<<<<<<< - * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) - * - */ - } - - /* "View.MemoryView":1359 - * - * @cname('__pyx_memoryview_refcount_copying') - * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil: # <<<<<<<<<<<<<< - * - * if dtype_is_object: - */ - - /* function exit code */ -} - -/* "View.MemoryView":1365 - * - * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') - * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< - * Py_ssize_t *strides, int ndim, - * bint inc) noexcept with gil: - */ - -static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) { - #ifdef WITH_THREAD - PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - #endif - - /* "View.MemoryView":1368 - * Py_ssize_t *strides, int ndim, - * bint inc) noexcept with gil: - * refcount_objects_in_slice(data, shape, strides, ndim, inc) # <<<<<<<<<<<<<< - * - * @cname('__pyx_memoryview_refcount_objects_in_slice') - */ - __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc); - - /* "View.MemoryView":1365 - * - * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') - * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< - * Py_ssize_t *strides, int ndim, - * bint inc) noexcept with gil: - */ - - /* function exit code */ - #ifdef WITH_THREAD - __Pyx_PyGILState_Release(__pyx_gilstate_save); - #endif -} - -/* "View.MemoryView":1371 - * - * @cname('__pyx_memoryview_refcount_objects_in_slice') - * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< - * Py_ssize_t *strides, int ndim, bint inc) noexcept: - * cdef Py_ssize_t i - */ - -static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) { - CYTHON_UNUSED Py_ssize_t __pyx_v_i; - Py_ssize_t __pyx_v_stride; - Py_ssize_t __pyx_t_1; - Py_ssize_t __pyx_t_2; - Py_ssize_t __pyx_t_3; - int __pyx_t_4; - - /* "View.MemoryView":1374 - * Py_ssize_t *strides, int ndim, bint inc) noexcept: - * cdef Py_ssize_t i - * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< - * - * for i in range(shape[0]): - */ - __pyx_v_stride = (__pyx_v_strides[0]); - - /* "View.MemoryView":1376 - * cdef Py_ssize_t stride = strides[0] - * - * for i in range(shape[0]): # <<<<<<<<<<<<<< - * if ndim == 1: - * if inc: - */ - __pyx_t_1 = (__pyx_v_shape[0]); - __pyx_t_2 = __pyx_t_1; - for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { - __pyx_v_i = __pyx_t_3; - - /* "View.MemoryView":1377 - * - * for i in range(shape[0]): - * if ndim == 1: # <<<<<<<<<<<<<< - * if inc: - * Py_INCREF(( data)[0]) - */ - __pyx_t_4 = (__pyx_v_ndim == 1); - if (__pyx_t_4) { - - /* "View.MemoryView":1378 - * for i in range(shape[0]): - * if ndim == 1: - * if inc: # <<<<<<<<<<<<<< - * Py_INCREF(( data)[0]) - * else: - */ - if (__pyx_v_inc) { - - /* "View.MemoryView":1379 - * if ndim == 1: - * if inc: - * Py_INCREF(( data)[0]) # <<<<<<<<<<<<<< - * else: - * Py_DECREF(( data)[0]) - */ - Py_INCREF((((PyObject **)__pyx_v_data)[0])); - - /* "View.MemoryView":1378 - * for i in range(shape[0]): - * if ndim == 1: - * if inc: # <<<<<<<<<<<<<< - * Py_INCREF(( data)[0]) - * else: - */ - goto __pyx_L6; - } - - /* "View.MemoryView":1381 - * Py_INCREF(( data)[0]) - * else: - * Py_DECREF(( data)[0]) # <<<<<<<<<<<<<< - * else: - * refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc) - */ - /*else*/ { - Py_DECREF((((PyObject **)__pyx_v_data)[0])); - } - __pyx_L6:; - - /* "View.MemoryView":1377 - * - * for i in range(shape[0]): - * if ndim == 1: # <<<<<<<<<<<<<< - * if inc: - * Py_INCREF(( data)[0]) - */ - goto __pyx_L5; - } - - /* "View.MemoryView":1383 - * Py_DECREF(( data)[0]) - * else: - * refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc) # <<<<<<<<<<<<<< - * - * data += stride - */ - /*else*/ { - __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_inc); - } - __pyx_L5:; - - /* "View.MemoryView":1385 - * refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc) - * - * data += stride # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_data = (__pyx_v_data + __pyx_v_stride); - } - - /* "View.MemoryView":1371 - * - * @cname('__pyx_memoryview_refcount_objects_in_slice') - * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< - * Py_ssize_t *strides, int ndim, bint inc) noexcept: - * cdef Py_ssize_t i - */ - - /* function exit code */ -} - -/* "View.MemoryView":1391 - * - * @cname('__pyx_memoryview_slice_assign_scalar') - * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< - * size_t itemsize, void *item, - * bint dtype_is_object) noexcept nogil: - */ - -static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) { - - /* "View.MemoryView":1394 - * size_t itemsize, void *item, - * bint dtype_is_object) noexcept nogil: - * refcount_copying(dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< - * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item) - * refcount_copying(dst, dtype_is_object, ndim, inc=True) - */ - __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - - /* "View.MemoryView":1395 - * bint dtype_is_object) noexcept nogil: - * refcount_copying(dst, dtype_is_object, ndim, inc=False) - * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item) # <<<<<<<<<<<<<< - * refcount_copying(dst, dtype_is_object, ndim, inc=True) - * - */ - __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item); - - /* "View.MemoryView":1396 - * refcount_copying(dst, dtype_is_object, ndim, inc=False) - * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item) - * refcount_copying(dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< - * - * - */ - __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - - /* "View.MemoryView":1391 - * - * @cname('__pyx_memoryview_slice_assign_scalar') - * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim, # <<<<<<<<<<<<<< - * size_t itemsize, void *item, - * bint dtype_is_object) noexcept nogil: - */ - - /* function exit code */ -} - -/* "View.MemoryView":1400 - * - * @cname('__pyx_memoryview__slice_assign_scalar') - * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< - * Py_ssize_t *strides, int ndim, - * size_t itemsize, void *item) noexcept nogil: - */ - -static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item) { - CYTHON_UNUSED Py_ssize_t __pyx_v_i; - Py_ssize_t __pyx_v_stride; - Py_ssize_t __pyx_v_extent; - int __pyx_t_1; - Py_ssize_t __pyx_t_2; - Py_ssize_t __pyx_t_3; - Py_ssize_t __pyx_t_4; - - /* "View.MemoryView":1404 - * size_t itemsize, void *item) noexcept nogil: - * cdef Py_ssize_t i - * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< - * cdef Py_ssize_t extent = shape[0] - * - */ - __pyx_v_stride = (__pyx_v_strides[0]); - - /* "View.MemoryView":1405 - * cdef Py_ssize_t i - * cdef Py_ssize_t stride = strides[0] - * cdef Py_ssize_t extent = shape[0] # <<<<<<<<<<<<<< - * - * if ndim == 1: - */ - __pyx_v_extent = (__pyx_v_shape[0]); - - /* "View.MemoryView":1407 - * cdef Py_ssize_t extent = shape[0] - * - * if ndim == 1: # <<<<<<<<<<<<<< - * for i in range(extent): - * memcpy(data, item, itemsize) - */ - __pyx_t_1 = (__pyx_v_ndim == 1); - if (__pyx_t_1) { - - /* "View.MemoryView":1408 - * - * if ndim == 1: - * for i in range(extent): # <<<<<<<<<<<<<< - * memcpy(data, item, itemsize) - * data += stride - */ - __pyx_t_2 = __pyx_v_extent; - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "View.MemoryView":1409 - * if ndim == 1: - * for i in range(extent): - * memcpy(data, item, itemsize) # <<<<<<<<<<<<<< - * data += stride - * else: - */ - (void)(memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize)); - - /* "View.MemoryView":1410 - * for i in range(extent): - * memcpy(data, item, itemsize) - * data += stride # <<<<<<<<<<<<<< - * else: - * for i in range(extent): - */ - __pyx_v_data = (__pyx_v_data + __pyx_v_stride); - } - - /* "View.MemoryView":1407 - * cdef Py_ssize_t extent = shape[0] - * - * if ndim == 1: # <<<<<<<<<<<<<< - * for i in range(extent): - * memcpy(data, item, itemsize) - */ - goto __pyx_L3; - } - - /* "View.MemoryView":1412 - * data += stride - * else: - * for i in range(extent): # <<<<<<<<<<<<<< - * _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item) - * data += stride - */ - /*else*/ { - __pyx_t_2 = __pyx_v_extent; - __pyx_t_3 = __pyx_t_2; - for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { - __pyx_v_i = __pyx_t_4; - - /* "View.MemoryView":1413 - * else: - * for i in range(extent): - * _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item) # <<<<<<<<<<<<<< - * data += stride - * - */ - __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item); - - /* "View.MemoryView":1414 - * for i in range(extent): - * _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item) - * data += stride # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_data = (__pyx_v_data + __pyx_v_stride); - } - } - __pyx_L3:; - - /* "View.MemoryView":1400 - * - * @cname('__pyx_memoryview__slice_assign_scalar') - * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape, # <<<<<<<<<<<<<< - * Py_ssize_t *strides, int ndim, - * size_t itemsize, void *item) noexcept nogil: - */ - - /* function exit code */ -} - -/* "(tree fragment)":1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v___pyx_type = 0; - long __pyx_v___pyx_checksum; - PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__pyx_unpickle_Enum (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_Enum") < 0)) __PYX_ERR(1, 1, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v___pyx_type = values[0]; - __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_v___pyx_state = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_v___pyx_PickleError = 0; - PyObject *__pyx_v___pyx_result = 0; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 1); - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum - */ - __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__8, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - /* "(tree fragment)":5 - * cdef object __pyx_result - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): - * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum - * __pyx_result = Enum.__new__(__pyx_type) - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_PickleError); - __Pyx_GIVEREF(__pyx_n_s_PickleError); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __pyx_v___pyx_PickleError = __pyx_t_1; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":6 - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum # <<<<<<<<<<<<<< - * __pyx_result = Enum.__new__(__pyx_type) - * if __pyx_state is not None: - */ - __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(1, 6, __pyx_L1_error) - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum - */ - } - - /* "(tree fragment)":7 - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum - * __pyx_result = Enum.__new__(__pyx_type) # <<<<<<<<<<<<<< - * if __pyx_state is not None: - * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_v___pyx_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum - * __pyx_result = Enum.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) - * return __pyx_result - */ - __pyx_t_2 = (__pyx_v___pyx_state != Py_None); - if (__pyx_t_2) { - - /* "(tree fragment)":9 - * __pyx_result = Enum.__new__(__pyx_type) - * if __pyx_state is not None: - * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< - * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): - */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) - __pyx_t_1 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum - * __pyx_result = Enum.__new__(__pyx_type) - * if __pyx_state is not None: # <<<<<<<<<<<<<< - * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) - * return __pyx_result - */ - } - - /* "(tree fragment)":10 - * if __pyx_state is not None: - * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) - * return __pyx_result # <<<<<<<<<<<<<< - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): - * __pyx_result.name = __pyx_state[0] - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v___pyx_result); - __pyx_r = __pyx_v___pyx_result; - goto __pyx_L0; - - /* "(tree fragment)":1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v___pyx_PickleError); - __Pyx_XDECREF(__pyx_v___pyx_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":11 - * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - */ - -static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - Py_ssize_t __pyx_t_3; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - int __pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 1); - - /* "(tree fragment)":12 - * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): - * __pyx_result.name = __pyx_state[0] # <<<<<<<<<<<<<< - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 12, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - __Pyx_GOTREF(__pyx_v___pyx_result->name); - __Pyx_DECREF(__pyx_v___pyx_result->name); - __pyx_v___pyx_result->name = __pyx_t_1; - __pyx_t_1 = 0; - - /* "(tree fragment)":13 - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): - * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 13, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_3 > 1); - if (__pyx_t_4) { - } else { - __pyx_t_2 = __pyx_t_4; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_2 = __pyx_t_4; - __pyx_L4_bool_binop_done:; - if (__pyx_t_2) { - - /* "(tree fragment)":14 - * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< - */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 14, __pyx_L1_error) - } - __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = NULL; - __pyx_t_8 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_6))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_6, function); - __pyx_t_8 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":13 - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): - * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[1]) - */ - } - - /* "(tree fragment)":11 - * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) - * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< - * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":245 - * - * @property - * cdef inline PyObject* base(self) nogil: # <<<<<<<<<<<<<< - * """Returns a borrowed reference to the object owning the data/memory. - * """ - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) { - PyObject *__pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":248 - * """Returns a borrowed reference to the object owning the data/memory. - * """ - * return PyArray_BASE(self) # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_r = PyArray_BASE(__pyx_v_self); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":245 - * - * @property - * cdef inline PyObject* base(self) nogil: # <<<<<<<<<<<<<< - * """Returns a borrowed reference to the object owning the data/memory. - * """ - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":251 - * - * @property - * cdef inline dtype descr(self): # <<<<<<<<<<<<<< - * """Returns an owned reference to the dtype of the array. - * """ - */ - -static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArrayObject *__pyx_v_self) { - PyArray_Descr *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyArray_Descr *__pyx_t_1; - __Pyx_RefNannySetupContext("descr", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":254 - * """Returns an owned reference to the dtype of the array. - * """ - * return PyArray_DESCR(self) # <<<<<<<<<<<<<< - * - * @property - */ - __Pyx_XDECREF((PyObject *)__pyx_r); - __pyx_t_1 = PyArray_DESCR(__pyx_v_self); - __Pyx_INCREF((PyObject *)((PyArray_Descr *)__pyx_t_1)); - __pyx_r = ((PyArray_Descr *)__pyx_t_1); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":251 - * - * @property - * cdef inline dtype descr(self): # <<<<<<<<<<<<<< - * """Returns an owned reference to the dtype of the array. - * """ - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":257 - * - * @property - * cdef inline int ndim(self) nogil: # <<<<<<<<<<<<<< - * """Returns the number of dimensions in the array. - * """ - */ - -static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) { - int __pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":260 - * """Returns the number of dimensions in the array. - * """ - * return PyArray_NDIM(self) # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_r = PyArray_NDIM(__pyx_v_self); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":257 - * - * @property - * cdef inline int ndim(self) nogil: # <<<<<<<<<<<<<< - * """Returns the number of dimensions in the array. - * """ - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":263 - * - * @property - * cdef inline npy_intp *shape(self) nogil: # <<<<<<<<<<<<<< - * """Returns a pointer to the dimensions/shape of the array. - * The number of elements matches the number of dimensions of the array (ndim). - */ - -static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) { - npy_intp *__pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":268 - * Can return NULL for 0-dimensional arrays. - * """ - * return PyArray_DIMS(self) # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_r = PyArray_DIMS(__pyx_v_self); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":263 - * - * @property - * cdef inline npy_intp *shape(self) nogil: # <<<<<<<<<<<<<< - * """Returns a pointer to the dimensions/shape of the array. - * The number of elements matches the number of dimensions of the array (ndim). - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":271 - * - * @property - * cdef inline npy_intp *strides(self) nogil: # <<<<<<<<<<<<<< - * """Returns a pointer to the strides of the array. - * The number of elements matches the number of dimensions of the array (ndim). - */ - -static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) { - npy_intp *__pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":275 - * The number of elements matches the number of dimensions of the array (ndim). - * """ - * return PyArray_STRIDES(self) # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_r = PyArray_STRIDES(__pyx_v_self); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":271 - * - * @property - * cdef inline npy_intp *strides(self) nogil: # <<<<<<<<<<<<<< - * """Returns a pointer to the strides of the array. - * The number of elements matches the number of dimensions of the array (ndim). - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":278 - * - * @property - * cdef inline npy_intp size(self) nogil: # <<<<<<<<<<<<<< - * """Returns the total size (in number of elements) of the array. - * """ - */ - -static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) { - npy_intp __pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":281 - * """Returns the total size (in number of elements) of the array. - * """ - * return PyArray_SIZE(self) # <<<<<<<<<<<<<< - * - * @property - */ - __pyx_r = PyArray_SIZE(__pyx_v_self); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":278 - * - * @property - * cdef inline npy_intp size(self) nogil: # <<<<<<<<<<<<<< - * """Returns the total size (in number of elements) of the array. - * """ - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":284 - * - * @property - * cdef inline char* data(self) nogil: # <<<<<<<<<<<<<< - * """The pointer to the data buffer as a char*. - * This is provided for legacy reasons to avoid direct struct field access. - */ - -static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) { - char *__pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":290 - * of `PyArray_DATA()` instead, which returns a 'void*'. - * """ - * return PyArray_BYTES(self) # <<<<<<<<<<<<<< - * - * ctypedef unsigned char npy_bool - */ - __pyx_r = PyArray_BYTES(__pyx_v_self); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":284 - * - * @property - * cdef inline char* data(self) nogil: # <<<<<<<<<<<<<< - * """The pointer to the data buffer as a char*. - * This is provided for legacy reasons to avoid direct struct field access. - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":773 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":774 - * - * cdef inline object PyArray_MultiIterNew1(a): - * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew2(a, b): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 774, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":773 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":776 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":777 - * - * cdef inline object PyArray_MultiIterNew2(a, b): - * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":776 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":779 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":780 - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): - * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 780, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":779 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":782 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":783 - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): - * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 783, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":782 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":785 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":786 - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): - * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 786, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":785 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":788 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("PyDataType_SHAPE", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":789 - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< - * return d.subarray.shape - * else: - */ - __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d); - if (__pyx_t_1) { - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":790 - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape # <<<<<<<<<<<<<< - * else: - * return () - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); - __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":789 - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< - * return d.subarray.shape - * else: - */ - } - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":792 - * return d.subarray.shape - * else: - * return () # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_empty_tuple); - __pyx_r = __pyx_empty_tuple; - goto __pyx_L0; - } - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":788 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":968 - * int _import_umath() except -1 - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) - */ - -static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { - int __pyx_t_1; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":969 - * - * cdef inline void set_array_base(ndarray arr, object base): - * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< - * PyArray_SetBaseObject(arr, base) - * - */ - Py_INCREF(__pyx_v_base); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":970 - * cdef inline void set_array_base(ndarray arr, object base): - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< - * - * cdef inline object get_array_base(ndarray arr): - */ - __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 970, __pyx_L1_error) - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":968 - * int _import_umath() except -1 - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) - */ - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_AddTraceback("numpy.set_array_base", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_L0:; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":972 - * PyArray_SetBaseObject(arr, base) - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * base = PyArray_BASE(arr) - * if base is NULL: - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { - PyObject *__pyx_v_base; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("get_array_base", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":973 - * - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< - * if base is NULL: - * return None - */ - __pyx_v_base = PyArray_BASE(__pyx_v_arr); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":974 - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) - * if base is NULL: # <<<<<<<<<<<<<< - * return None - * return base - */ - __pyx_t_1 = (__pyx_v_base == NULL); - if (__pyx_t_1) { - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":975 - * base = PyArray_BASE(arr) - * if base is NULL: - * return None # <<<<<<<<<<<<<< - * return base - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":974 - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) - * if base is NULL: # <<<<<<<<<<<<<< - * return None - * return base - */ - } - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":976 - * if base is NULL: - * return None - * return base # <<<<<<<<<<<<<< - * - * # Versions of the import_* functions which are more suitable for - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_base)); - __pyx_r = ((PyObject *)__pyx_v_base); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":972 - * PyArray_SetBaseObject(arr, base) - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * base = PyArray_BASE(arr) - * if base is NULL: - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":980 - * # Versions of the import_* functions which are more suitable for - * # Cython code. - * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< - * try: - * __pyx_import_array() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_array", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":981 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":982 - * cdef inline int import_array() except -1: - * try: - * __pyx_import_array() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") - */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 982, __pyx_L3_error) - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":981 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":983 - * try: - * __pyx_import_array() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.multiarray failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 983, __pyx_L5_except_error) - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":984 - * __pyx_import_array() - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_umath() except -1: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 984, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 984, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":981 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - __pyx_L5_except_error:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":980 - * # Versions of the import_* functions which are more suitable for - * # Cython code. - * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< - * try: - * __pyx_import_array() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":986 - * raise ImportError("numpy.core.multiarray failed to import") - * - * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_umath", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":987 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":988 - * cdef inline int import_umath() except -1: - * try: - * _import_umath() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.umath failed to import") - */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 988, __pyx_L3_error) - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":987 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":989 - * try: - * _import_umath() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.umath failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 989, __pyx_L5_except_error) - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":990 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_ufunc() except -1: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 990, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 990, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":987 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - __pyx_L5_except_error:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":986 - * raise ImportError("numpy.core.multiarray failed to import") - * - * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":992 - * raise ImportError("numpy.core.umath failed to import") - * - * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_ufunc", 1); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":993 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":994 - * cdef inline int import_ufunc() except -1: - * try: - * _import_umath() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.umath failed to import") - */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 994, __pyx_L3_error) - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":993 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":995 - * try: - * _import_umath() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.umath failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 995, __pyx_L5_except_error) - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_7); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":996 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 996, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 996, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":993 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - __pyx_L5_except_error:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":992 - * raise ImportError("numpy.core.umath failed to import") - * - * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":999 - * - * - * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.timedelta64)` - */ - -static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { - int __pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1011 - * bool - * """ - * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":999 - * - * - * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.timedelta64)` - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1014 - * - * - * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.datetime64)` - */ - -static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { - int __pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1026 - * bool - * """ - * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1014 - * - * - * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.datetime64)` - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1029 - * - * - * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy datetime64 object - */ - -static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { - npy_datetime __pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1036 - * also needed. That can be found using `get_datetime64_unit`. - * """ - * return (obj).obval # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1029 - * - * - * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy datetime64 object - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1039 - * - * - * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy timedelta64 object - */ - -static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { - npy_timedelta __pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1043 - * returns the int64 value underlying scalar numpy timedelta64 object - * """ - * return (obj).obval # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1039 - * - * - * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy timedelta64 object - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1046 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - -static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { - NPY_DATETIMEUNIT __pyx_r; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1050 - * returns the unit part of the dtype for a numpy datetime64 object. - * """ - * return (obj).obmeta.base # <<<<<<<<<<<<<< - */ - __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); - goto __pyx_L0; - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":1046 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":70 - * cdef str nlp_solver_type - * - * def __cinit__(self, model_name, nlp_solver_type, N): # <<<<<<<<<<<<<< - * - * self.solver_created = False - */ - -/* Python wrapper */ -static int __pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_model_name = 0; - PyObject *__pyx_v_nlp_solver_type = 0; - PyObject *__pyx_v_N = 0; - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; - #endif - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_model_name,&__pyx_n_s_nlp_solver_type,&__pyx_n_s_N,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_model_name)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 70, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nlp_solver_type)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 70, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(0, 70, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_N)) != 0)) { - (void)__Pyx_Arg_NewRef_VARARGS(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 70, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(0, 70, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(0, 70, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); - values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); - values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); - } - __pyx_v_model_name = values[0]; - __pyx_v_nlp_solver_type = values[1]; - __pyx_v_N = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 70, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return -1; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython___cinit__(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_model_name, __pyx_v_nlp_solver_type, __pyx_v_N); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static int __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython___cinit__(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_model_name, PyObject *__pyx_v_nlp_solver_type, PyObject *__pyx_v_N) { - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__cinit__", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":72 - * def __cinit__(self, model_name, nlp_solver_type, N): - * - * self.solver_created = False # <<<<<<<<<<<<<< - * - * self.N = N - */ - __pyx_v_self->solver_created = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":74 - * self.solver_created = False - * - * self.N = N # <<<<<<<<<<<<<< - * self.model_name = model_name - * self.nlp_solver_type = nlp_solver_type - */ - __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_N); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 74, __pyx_L1_error) - __pyx_v_self->N = __pyx_t_1; - - /* "acados_template/acados_ocp_solver_pyx.pyx":75 - * - * self.N = N - * self.model_name = model_name # <<<<<<<<<<<<<< - * self.nlp_solver_type = nlp_solver_type - * - */ - if (!(likely(PyUnicode_CheckExact(__pyx_v_model_name))||((__pyx_v_model_name) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_model_name))) __PYX_ERR(0, 75, __pyx_L1_error) - __pyx_t_2 = __pyx_v_model_name; - __Pyx_INCREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_self->model_name); - __Pyx_DECREF(__pyx_v_self->model_name); - __pyx_v_self->model_name = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":76 - * self.N = N - * self.model_name = model_name - * self.nlp_solver_type = nlp_solver_type # <<<<<<<<<<<<<< - * - * # create capsule - */ - if (!(likely(PyUnicode_CheckExact(__pyx_v_nlp_solver_type))||((__pyx_v_nlp_solver_type) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_nlp_solver_type))) __PYX_ERR(0, 76, __pyx_L1_error) - __pyx_t_2 = __pyx_v_nlp_solver_type; - __Pyx_INCREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_GOTREF(__pyx_v_self->nlp_solver_type); - __Pyx_DECREF(__pyx_v_self->nlp_solver_type); - __pyx_v_self->nlp_solver_type = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":79 - * - * # create capsule - * self.capsule = acados_solver.acados_create_capsule() # <<<<<<<<<<<<<< - * - * # create solver - */ - __pyx_v_self->capsule = lat_acados_create_capsule(); - - /* "acados_template/acados_ocp_solver_pyx.pyx":82 - * - * # create solver - * assert acados_solver.acados_create(self.capsule) == 0 # <<<<<<<<<<<<<< - * self.solver_created = True - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_3 = (lat_acados_create(__pyx_v_self->capsule) == 0); - if (unlikely(!__pyx_t_3)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(0, 82, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 82, __pyx_L1_error) - #endif - - /* "acados_template/acados_ocp_solver_pyx.pyx":83 - * # create solver - * assert acados_solver.acados_create(self.capsule) == 0 - * self.solver_created = True # <<<<<<<<<<<<<< - * - * # get pointers solver - */ - __pyx_v_self->solver_created = 1; - - /* "acados_template/acados_ocp_solver_pyx.pyx":86 - * - * # get pointers solver - * self.__get_pointers_solver() # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_AcadosOcpSolverCython__get_poin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_1 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_1 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_1, 0+__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":70 - * cdef str nlp_solver_type - * - * def __cinit__(self, model_name, nlp_solver_type, N): # <<<<<<<<<<<<<< - * - * self.solver_created = False - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":89 - * - * - * def __get_pointers_solver(self): # <<<<<<<<<<<<<< - * """ - * Private function to get the pointers for solver - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_3_AcadosOcpSolverCython__get_pointers_solver(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_2__get_pointers_solver, "\n Private function to get the pointers for solver\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_3_AcadosOcpSolverCython__get_pointers_solver = {"_AcadosOcpSolverCython__get_pointers_solver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_3_AcadosOcpSolverCython__get_pointers_solver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_2__get_pointers_solver}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_3_AcadosOcpSolverCython__get_pointers_solver(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_AcadosOcpSolverCython__get_pointers_solver (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("_AcadosOcpSolverCython__get_pointers_solver", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_AcadosOcpSolverCython__get_pointers_solver", 0))) return NULL; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_2__get_pointers_solver(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_2__get_pointers_solver(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_AcadosOcpSolverCython__get_pointers_solver", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":94 - * """ - * # get pointers solver - * self.nlp_opts = acados_solver.acados_get_nlp_opts(self.capsule) # <<<<<<<<<<<<<< - * self.nlp_dims = acados_solver.acados_get_nlp_dims(self.capsule) - * self.nlp_config = acados_solver.acados_get_nlp_config(self.capsule) - */ - __pyx_v_self->nlp_opts = lat_acados_get_nlp_opts(__pyx_v_self->capsule); - - /* "acados_template/acados_ocp_solver_pyx.pyx":95 - * # get pointers solver - * self.nlp_opts = acados_solver.acados_get_nlp_opts(self.capsule) - * self.nlp_dims = acados_solver.acados_get_nlp_dims(self.capsule) # <<<<<<<<<<<<<< - * self.nlp_config = acados_solver.acados_get_nlp_config(self.capsule) - * self.nlp_out = acados_solver.acados_get_nlp_out(self.capsule) - */ - __pyx_v_self->nlp_dims = lat_acados_get_nlp_dims(__pyx_v_self->capsule); - - /* "acados_template/acados_ocp_solver_pyx.pyx":96 - * self.nlp_opts = acados_solver.acados_get_nlp_opts(self.capsule) - * self.nlp_dims = acados_solver.acados_get_nlp_dims(self.capsule) - * self.nlp_config = acados_solver.acados_get_nlp_config(self.capsule) # <<<<<<<<<<<<<< - * self.nlp_out = acados_solver.acados_get_nlp_out(self.capsule) - * self.sens_out = acados_solver.acados_get_sens_out(self.capsule) - */ - __pyx_v_self->nlp_config = lat_acados_get_nlp_config(__pyx_v_self->capsule); - - /* "acados_template/acados_ocp_solver_pyx.pyx":97 - * self.nlp_dims = acados_solver.acados_get_nlp_dims(self.capsule) - * self.nlp_config = acados_solver.acados_get_nlp_config(self.capsule) - * self.nlp_out = acados_solver.acados_get_nlp_out(self.capsule) # <<<<<<<<<<<<<< - * self.sens_out = acados_solver.acados_get_sens_out(self.capsule) - * self.nlp_in = acados_solver.acados_get_nlp_in(self.capsule) - */ - __pyx_v_self->nlp_out = lat_acados_get_nlp_out(__pyx_v_self->capsule); - - /* "acados_template/acados_ocp_solver_pyx.pyx":98 - * self.nlp_config = acados_solver.acados_get_nlp_config(self.capsule) - * self.nlp_out = acados_solver.acados_get_nlp_out(self.capsule) - * self.sens_out = acados_solver.acados_get_sens_out(self.capsule) # <<<<<<<<<<<<<< - * self.nlp_in = acados_solver.acados_get_nlp_in(self.capsule) - * self.nlp_solver = acados_solver.acados_get_nlp_solver(self.capsule) - */ - __pyx_v_self->sens_out = lat_acados_get_sens_out(__pyx_v_self->capsule); - - /* "acados_template/acados_ocp_solver_pyx.pyx":99 - * self.nlp_out = acados_solver.acados_get_nlp_out(self.capsule) - * self.sens_out = acados_solver.acados_get_sens_out(self.capsule) - * self.nlp_in = acados_solver.acados_get_nlp_in(self.capsule) # <<<<<<<<<<<<<< - * self.nlp_solver = acados_solver.acados_get_nlp_solver(self.capsule) - * - */ - __pyx_v_self->nlp_in = lat_acados_get_nlp_in(__pyx_v_self->capsule); - - /* "acados_template/acados_ocp_solver_pyx.pyx":100 - * self.sens_out = acados_solver.acados_get_sens_out(self.capsule) - * self.nlp_in = acados_solver.acados_get_nlp_in(self.capsule) - * self.nlp_solver = acados_solver.acados_get_nlp_solver(self.capsule) # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_self->nlp_solver = lat_acados_get_nlp_solver(__pyx_v_self->capsule); - - /* "acados_template/acados_ocp_solver_pyx.pyx":89 - * - * - * def __get_pointers_solver(self): # <<<<<<<<<<<<<< - * """ - * Private function to get the pointers for solver - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":103 - * - * - * def solve_for_x0(self, x0_bar): # <<<<<<<<<<<<<< - * """ - * Wrapper around `solve()` which sets initial state constraint, solves the OCP, and returns u0. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_5solve_for_x0(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_4solve_for_x0, "\n Wrapper around `solve()` which sets initial state constraint, solves the OCP, and returns u0.\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_5solve_for_x0 = {"solve_for_x0", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_5solve_for_x0, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_4solve_for_x0}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_5solve_for_x0(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_x0_bar = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("solve_for_x0 (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0_bar,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x0_bar)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "solve_for_x0") < 0)) __PYX_ERR(0, 103, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_x0_bar = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("solve_for_x0", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 103, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.solve_for_x0", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_4solve_for_x0(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_x0_bar); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_4solve_for_x0(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_x0_bar) { - PyObject *__pyx_v_status = NULL; - PyObject *__pyx_v_u0 = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("solve_for_x0", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":107 - * Wrapper around `solve()` which sets initial state constraint, solves the OCP, and returns u0. - * """ - * self.set(0, "lbx", x0_bar) # <<<<<<<<<<<<<< - * self.set(0, "ubx", x0_bar) - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_int_0, __pyx_n_u_lbx, __pyx_v_x0_bar}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":108 - * """ - * self.set(0, "lbx", x0_bar) - * self.set(0, "ubx", x0_bar) # <<<<<<<<<<<<<< - * - * status = self.solve() - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_int_0, __pyx_n_u_ubx, __pyx_v_x0_bar}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":110 - * self.set(0, "ubx", x0_bar) - * - * status = self.solve() # <<<<<<<<<<<<<< - * - * if status == 2: - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_solve); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_v_status = __pyx_t_1; - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":112 - * status = self.solve() - * - * if status == 2: # <<<<<<<<<<<<<< - * print("Warning: acados_ocp_solver reached maximum iterations.") - * elif status != 0: - */ - __pyx_t_5 = (__Pyx_PyInt_BoolEqObjC(__pyx_v_status, __pyx_int_2, 2, 0)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 112, __pyx_L1_error) - if (__pyx_t_5) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":113 - * - * if status == 2: - * print("Warning: acados_ocp_solver reached maximum iterations.") # <<<<<<<<<<<<<< - * elif status != 0: - * raise Exception(f'acados acados_ocp_solver returned status {status}') - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":112 - * status = self.solve() - * - * if status == 2: # <<<<<<<<<<<<<< - * print("Warning: acados_ocp_solver reached maximum iterations.") - * elif status != 0: - */ - goto __pyx_L3; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":114 - * if status == 2: - * print("Warning: acados_ocp_solver reached maximum iterations.") - * elif status != 0: # <<<<<<<<<<<<<< - * raise Exception(f'acados acados_ocp_solver returned status {status}') - * - */ - __pyx_t_5 = (__Pyx_PyInt_BoolNeObjC(__pyx_v_status, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 114, __pyx_L1_error) - if (unlikely(__pyx_t_5)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":115 - * print("Warning: acados_ocp_solver reached maximum iterations.") - * elif status != 0: - * raise Exception(f'acados acados_ocp_solver returned status {status}') # <<<<<<<<<<<<<< - * - * u0 = self.get(0, "u") - */ - __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_status, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_acados_acados_ocp_solver_returne, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 115, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":114 - * if status == 2: - * print("Warning: acados_ocp_solver reached maximum iterations.") - * elif status != 0: # <<<<<<<<<<<<<< - * raise Exception(f'acados acados_ocp_solver returned status {status}') - * - */ - } - __pyx_L3:; - - /* "acados_template/acados_ocp_solver_pyx.pyx":117 - * raise Exception(f'acados acados_ocp_solver returned status {status}') - * - * u0 = self.get(0, "u") # <<<<<<<<<<<<<< - * return u0 - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_u0 = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":118 - * - * u0 = self.get(0, "u") - * return u0 # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_u0); - __pyx_r = __pyx_v_u0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":103 - * - * - * def solve_for_x0(self, x0_bar): # <<<<<<<<<<<<<< - * """ - * Wrapper around `solve()` which sets initial state constraint, solves the OCP, and returns u0. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.solve_for_x0", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_status); - __Pyx_XDECREF(__pyx_v_u0); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":121 - * - * - * def solve(self): # <<<<<<<<<<<<<< - * """ - * Solve the ocp with current input. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_7solve(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_6solve, "\n Solve the ocp with current input.\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_7solve = {"solve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_7solve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_6solve}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_7solve(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("solve (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("solve", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "solve", 0))) return NULL; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_6solve(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_6solve(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("solve", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":125 - * Solve the ocp with current input. - * """ - * return acados_solver.acados_solve(self.capsule) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(lat_acados_solve(__pyx_v_self->capsule)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":121 - * - * - * def solve(self): # <<<<<<<<<<<<<< - * """ - * Solve the ocp with current input. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.solve", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":128 - * - * - * def reset(self, reset_qp_solver_mem=1): # <<<<<<<<<<<<<< - * """ - * Sets current iterate to all zeros. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_9reset(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_8reset, "\n Sets current iterate to all zeros.\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_9reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_9reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_8reset}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_9reset(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_reset_qp_solver_mem = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("reset (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_reset_qp_solver_mem,0}; - values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1)); - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_reset_qp_solver_mem); - if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 128, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "reset") < 0)) __PYX_ERR(0, 128, __pyx_L3_error) - } - } else { - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_reset_qp_solver_mem = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("reset", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 128, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.reset", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_8reset(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_reset_qp_solver_mem); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_8reset(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_reset_qp_solver_mem) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("reset", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":132 - * Sets current iterate to all zeros. - * """ - * return acados_solver.acados_reset(self.capsule, reset_qp_solver_mem) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_reset_qp_solver_mem); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(lat_acados_reset(__pyx_v_self->capsule, __pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 132, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":128 - * - * - * def reset(self, reset_qp_solver_mem=1): # <<<<<<<<<<<<<< - * """ - * Sets current iterate to all zeros. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.reset", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":135 - * - * - * def custom_update(self, data_): # <<<<<<<<<<<<<< - * """ - * A custom function that can be implemented by a user to be called between solver calls. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_11custom_update(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_10custom_update, "\n A custom function that can be implemented by a user to be called between solver calls.\n By default this does nothing.\n The idea is to have a convenient wrapper to do complex updates of parameters and numerical data efficiently in C,\n in a function that is compiled into the solver library and can be conveniently used in the Python environment.\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_11custom_update = {"custom_update", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_11custom_update, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_10custom_update}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_11custom_update(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_data_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("custom_update (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "custom_update") < 0)) __PYX_ERR(0, 135, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_data_ = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("custom_update", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 135, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.custom_update", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_10custom_update(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_data_); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_10custom_update(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_data_) { - Py_ssize_t __pyx_v_data_len; - PyArrayObject *__pyx_v_data = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_data; - __Pyx_Buffer __pyx_pybuffer_data; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - Py_ssize_t __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyArrayObject *__pyx_t_7 = NULL; - char *__pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("custom_update", 1); - __pyx_pybuffer_data.pybuffer.buf = NULL; - __pyx_pybuffer_data.refcount = 0; - __pyx_pybuffernd_data.data = NULL; - __pyx_pybuffernd_data.rcbuffer = &__pyx_pybuffer_data; - - /* "acados_template/acados_ocp_solver_pyx.pyx":142 - * in a function that is compiled into the solver library and can be conveniently used in the Python environment. - * """ - * data_len = len(data_) # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=1] data = np.ascontiguousarray(data_, dtype=np.float64) - * - */ - __pyx_t_1 = PyObject_Length(__pyx_v_data_); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 142, __pyx_L1_error) - __pyx_v_data_len = __pyx_t_1; - - /* "acados_template/acados_ocp_solver_pyx.pyx":143 - * """ - * data_len = len(data_) - * cdef cnp.ndarray[cnp.float64_t, ndim=1] data = np.ascontiguousarray(data_, dtype=np.float64) # <<<<<<<<<<<<<< - * - * return acados_solver.acados_custom_update(self.capsule, data.data, data_len) - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_data_); - __Pyx_GIVEREF(__pyx_v_data_); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data_)) __PYX_ERR(0, 143, __pyx_L1_error); - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 143, __pyx_L1_error) - __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_data.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_data = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_data.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 143, __pyx_L1_error) - } else {__pyx_pybuffernd_data.diminfo[0].strides = __pyx_pybuffernd_data.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_data.diminfo[0].shape = __pyx_pybuffernd_data.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_7 = 0; - __pyx_v_data = ((PyArrayObject *)__pyx_t_6); - __pyx_t_6 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":145 - * cdef cnp.ndarray[cnp.float64_t, ndim=1] data = np.ascontiguousarray(data_, dtype=np.float64) - * - * return acados_solver.acados_custom_update(self.capsule, data.data, data_len) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_8 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_data)); if (unlikely(__pyx_t_8 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 145, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyInt_From_int(lat_acados_custom_update(__pyx_v_self->capsule, ((double *)__pyx_t_8), __pyx_v_data_len)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_r = __pyx_t_6; - __pyx_t_6 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":135 - * - * - * def custom_update(self, data_): # <<<<<<<<<<<<<< - * """ - * A custom function that can be implemented by a user to be called between solver calls. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_data.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.custom_update", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_data.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_data); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":148 - * - * - * def set_new_time_steps(self, new_time_steps): # <<<<<<<<<<<<<< - * """ - * Set new time steps. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13set_new_time_steps(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_12set_new_time_steps, "\n Set new time steps.\n Recreates the solver if N changes.\n\n :param new_time_steps: 1 dimensional np array of new time steps for the solver\n\n .. note:: This allows for different use-cases: either set a new size of time-steps or a new distribution of\n the shooting nodes without changing the number, e.g., to reach a different final time. Both cases\n do not require a new code export and compilation.\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13set_new_time_steps = {"set_new_time_steps", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13set_new_time_steps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_12set_new_time_steps}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13set_new_time_steps(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v_new_time_steps = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_new_time_steps (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_new_time_steps,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_new_time_steps)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 148, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_new_time_steps") < 0)) __PYX_ERR(0, 148, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_new_time_steps = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set_new_time_steps", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 148, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.set_new_time_steps", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_12set_new_time_steps(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_new_time_steps); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_12set_new_time_steps(CYTHON_UNUSED struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_new_time_steps) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("set_new_time_steps", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":160 - * """ - * - * raise NotImplementedError("AcadosOcpSolverCython: does not support set_new_time_steps() since it is only a prototyping feature") # <<<<<<<<<<<<<< - * # # unlikely but still possible - * # if not self.solver_created: - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 160, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":148 - * - * - * def set_new_time_steps(self, new_time_steps): # <<<<<<<<<<<<<< - * """ - * Set new time steps. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.set_new_time_steps", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":199 - * - * - * def update_qp_solver_cond_N(self, qp_solver_cond_N: int): # <<<<<<<<<<<<<< - * """ - * Recreate solver with new value `qp_solver_cond_N` with a partial condensing QP solver. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_15update_qp_solver_cond_N(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_14update_qp_solver_cond_N, "\n Recreate solver with new value `qp_solver_cond_N` with a partial condensing QP solver.\n This function is relevant for code reuse, i.e., if either `set_new_time_steps(...)` is used or\n the influence of a different `qp_solver_cond_N` is studied without code export and compilation.\n :param qp_solver_cond_N: new number of condensing stages for the solver\n\n .. note:: This function can only be used in combination with a partial condensing QP solver.\n\n .. note:: After `set_new_time_steps(...)` is used and depending on the new number of time steps it might be\n necessary to change `qp_solver_cond_N` as well (using this function), i.e., typically\n `qp_solver_cond_N < N`.\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_15update_qp_solver_cond_N = {"update_qp_solver_cond_N", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_15update_qp_solver_cond_N, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_14update_qp_solver_cond_N}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_15update_qp_solver_cond_N(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v_qp_solver_cond_N = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("update_qp_solver_cond_N (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_qp_solver_cond_N,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_qp_solver_cond_N)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 199, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "update_qp_solver_cond_N") < 0)) __PYX_ERR(0, 199, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_qp_solver_cond_N = ((PyObject*)values[0]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("update_qp_solver_cond_N", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 199, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.update_qp_solver_cond_N", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qp_solver_cond_N), (&PyInt_Type), 0, "qp_solver_cond_N", 1))) __PYX_ERR(0, 199, __pyx_L1_error) - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_14update_qp_solver_cond_N(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_qp_solver_cond_N); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_14update_qp_solver_cond_N(CYTHON_UNUSED struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_qp_solver_cond_N) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("update_qp_solver_cond_N", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":212 - * `qp_solver_cond_N < N`. - * """ - * raise NotImplementedError("AcadosOcpSolverCython: does not support update_qp_solver_cond_N() since it is only a prototyping feature") # <<<<<<<<<<<<<< - * - * # # unlikely but still possible - */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 212, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":199 - * - * - * def update_qp_solver_cond_N(self, qp_solver_cond_N: int): # <<<<<<<<<<<<<< - * """ - * Recreate solver with new value `qp_solver_cond_N` with a partial condensing QP solver. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.update_qp_solver_cond_N", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":233 - * - * - * def eval_param_sens(self, index, stage=0, field="ex"): # <<<<<<<<<<<<<< - * """ - * Calculate the sensitivity of the curent solution with respect to the initial state component of index - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_17eval_param_sens(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_16eval_param_sens, "\n Calculate the sensitivity of the curent solution with respect to the initial state component of index\n\n :param index: integer corresponding to initial state index in range(nx)\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_17eval_param_sens = {"eval_param_sens", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_17eval_param_sens, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_16eval_param_sens}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_17eval_param_sens(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_index = 0; - PyObject *__pyx_v_stage = 0; - PyObject *__pyx_v_field = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("eval_param_sens (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,&__pyx_n_s_stage,&__pyx_n_s_field,0}; - values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_0)); - values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_n_u_ex)); - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stage); - if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field); - if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "eval_param_sens") < 0)) __PYX_ERR(0, 233, __pyx_L3_error) - } - } else { - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_index = values[0]; - __pyx_v_stage = values[1]; - __pyx_v_field = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("eval_param_sens", 0, 1, 3, __pyx_nargs); __PYX_ERR(0, 233, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.eval_param_sens", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_16eval_param_sens(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_index, __pyx_v_stage, __pyx_v_field); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_16eval_param_sens(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_stage, PyObject *__pyx_v_field) { - PyObject *__pyx_v_field_ = NULL; - int __pyx_v_nx; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - char const *__pyx_t_7; - Py_ssize_t __pyx_t_8; - Py_UCS4 __pyx_t_9; - char *__pyx_t_10; - int __pyx_t_11; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("eval_param_sens", 0); - __Pyx_INCREF(__pyx_v_field); - - /* "acados_template/acados_ocp_solver_pyx.pyx":240 - * """ - * - * field_ = field # <<<<<<<<<<<<<< - * field = field_.encode('utf-8') - * - */ - __Pyx_INCREF(__pyx_v_field); - __pyx_v_field_ = __pyx_v_field; - - /* "acados_template/acados_ocp_solver_pyx.pyx":241 - * - * field_ = field - * field = field_.encode('utf-8') # <<<<<<<<<<<<<< - * - * # checks - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_field_, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 241, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_utf_8}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 241, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __Pyx_DECREF_SET(__pyx_v_field, __pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":244 - * - * # checks - * if not isinstance(index, int): # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.eval_param_sens(): index must be Integer.') - * - */ - __pyx_t_5 = PyInt_Check(__pyx_v_index); - __pyx_t_6 = (!__pyx_t_5); - if (unlikely(__pyx_t_6)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":245 - * # checks - * if not isinstance(index, int): - * raise Exception('AcadosOcpSolverCython.eval_param_sens(): index must be Integer.') # <<<<<<<<<<<<<< - * - * cdef int nx = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, self.nlp_dims, self.nlp_out, 0, "x".encode('utf-8')) - */ - __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 245, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":244 - * - * # checks - * if not isinstance(index, int): # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.eval_param_sens(): index must be Integer.') - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":247 - * raise Exception('AcadosOcpSolverCython.eval_param_sens(): index must be Integer.') - * - * cdef int nx = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, self.nlp_dims, self.nlp_out, 0, "x".encode('utf-8')) # <<<<<<<<<<<<<< - * - * if index < 0 or index > nx: - */ - __pyx_t_7 = __Pyx_PyBytes_AsString(__pyx_n_b_x); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 247, __pyx_L1_error) - __pyx_v_nx = ocp_nlp_dims_get_from_attr(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_out, 0, __pyx_t_7); - - /* "acados_template/acados_ocp_solver_pyx.pyx":249 - * cdef int nx = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, self.nlp_dims, self.nlp_out, 0, "x".encode('utf-8')) - * - * if index < 0 or index > nx: # <<<<<<<<<<<<<< - * raise Exception(f'AcadosOcpSolverCython.eval_param_sens(): index must be in [0, nx-1], got: {index}.') - * - */ - __pyx_t_1 = PyObject_RichCompare(__pyx_v_index, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 249, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!__pyx_t_5) { - } else { - __pyx_t_6 = __pyx_t_5; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyObject_RichCompare(__pyx_v_index, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 249, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 249, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __pyx_t_5; - __pyx_L5_bool_binop_done:; - if (unlikely(__pyx_t_6)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":250 - * - * if index < 0 or index > nx: - * raise Exception(f'AcadosOcpSolverCython.eval_param_sens(): index must be in [0, nx-1], got: {index}.') # <<<<<<<<<<<<<< - * - * # actual eval_param - */ - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = 0; - __pyx_t_9 = 127; - __Pyx_INCREF(__pyx_kp_u_AcadosOcpSolverCython_eval_param_2); - __pyx_t_8 += 74; - __Pyx_GIVEREF(__pyx_kp_u_AcadosOcpSolverCython_eval_param_2); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_AcadosOcpSolverCython_eval_param_2); - __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_index, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_9; - __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); - __pyx_t_1 = 0; - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_8 += 1; - __Pyx_GIVEREF(__pyx_kp_u__2); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2); - __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 250, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":249 - * cdef int nx = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, self.nlp_dims, self.nlp_out, 0, "x".encode('utf-8')) - * - * if index < 0 or index > nx: # <<<<<<<<<<<<<< - * raise Exception(f'AcadosOcpSolverCython.eval_param_sens(): index must be in [0, nx-1], got: {index}.') - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":253 - * - * # actual eval_param - * acados_solver_common.ocp_nlp_eval_param_sens(self.nlp_solver, field, stage, index, self.sens_out) # <<<<<<<<<<<<<< - * - * return - */ - __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_v_field); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 253, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_stage); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 253, __pyx_L1_error) - __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_index); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 253, __pyx_L1_error) - ocp_nlp_eval_param_sens(__pyx_v_self->nlp_solver, __pyx_t_10, __pyx_t_4, __pyx_t_11, __pyx_v_self->sens_out); - - /* "acados_template/acados_ocp_solver_pyx.pyx":255 - * acados_solver_common.ocp_nlp_eval_param_sens(self.nlp_solver, field, stage, index, self.sens_out) - * - * return # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":233 - * - * - * def eval_param_sens(self, index, stage=0, field="ex"): # <<<<<<<<<<<<<< - * """ - * Calculate the sensitivity of the curent solution with respect to the initial state component of index - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.eval_param_sens", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_field_); - __Pyx_XDECREF(__pyx_v_field); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":258 - * - * - * def get(self, int stage, str field_): # <<<<<<<<<<<<<< - * """ - * Get the last solution of the solver: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_19get(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_18get, "\n Get the last solution of the solver:\n\n :param stage: integer corresponding to shooting node\n :param field: string in ['x', 'u', 'z', 'pi', 'lam', 't', 'sl', 'su',]\n\n .. note:: regarding lam, t: \n\n the inequalities are internally organized in the following order: \n\n [ lbu lbx lg lh lphi ubu ubx ug uh uphi; \n\n lsbu lsbx lsg lsh lsphi usbu usbx usg ush usphi]\n\n .. note:: pi: multipliers for dynamics equality constraints \n\n lam: multipliers for inequalities \n\n t: slack variables corresponding to evaluation of all inequalities (at the solution) \n\n sl: slack variables of soft lower inequality constraints \n\n su: slack variables of soft upper inequality constraints \n\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_19get = {"get", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_19get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_18get}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_19get(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - int __pyx_v_stage; - PyObject *__pyx_v_field_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[2] = {0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stage,&__pyx_n_s_field_2,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stage)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field_2)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("get", 1, 2, 2, 1); __PYX_ERR(0, 258, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get") < 0)) __PYX_ERR(0, 258, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 2)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - } - __pyx_v_stage = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_stage == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L3_error) - __pyx_v_field_ = ((PyObject*)values[1]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 258, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field_), (&PyUnicode_Type), 1, "field_", 1))) __PYX_ERR(0, 258, __pyx_L1_error) - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_18get(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_stage, __pyx_v_field_); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_18get(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_) { - PyObject *__pyx_v_out_fields = NULL; - PyObject *__pyx_v_field = NULL; - int __pyx_v_dims; - PyArrayObject *__pyx_v_out = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - int __pyx_t_5; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - char const *__pyx_t_8; - PyArrayObject *__pyx_t_9 = NULL; - char const *__pyx_t_10; - char *__pyx_t_11; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get", 1); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - - /* "acados_template/acados_ocp_solver_pyx.pyx":277 - * """ - * - * out_fields = ['x', 'u', 'z', 'pi', 'lam', 't', 'sl', 'su'] # <<<<<<<<<<<<<< - * field = field_.encode('utf-8') - * - */ - __pyx_t_1 = PyList_New(8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_u_x); - __Pyx_GIVEREF(__pyx_n_u_x); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_x)) __PYX_ERR(0, 277, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_u); - __Pyx_GIVEREF(__pyx_n_u_u); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_u)) __PYX_ERR(0, 277, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_z); - __Pyx_GIVEREF(__pyx_n_u_z); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_z)) __PYX_ERR(0, 277, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_pi); - __Pyx_GIVEREF(__pyx_n_u_pi); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_pi)) __PYX_ERR(0, 277, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_lam); - __Pyx_GIVEREF(__pyx_n_u_lam); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_lam)) __PYX_ERR(0, 277, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_t); - __Pyx_GIVEREF(__pyx_n_u_t); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_t)) __PYX_ERR(0, 277, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_sl); - __Pyx_GIVEREF(__pyx_n_u_sl); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_u_sl)) __PYX_ERR(0, 277, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_su); - __Pyx_GIVEREF(__pyx_n_u_su); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_u_su)) __PYX_ERR(0, 277, __pyx_L1_error); - __pyx_v_out_fields = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":278 - * - * out_fields = ['x', 'u', 'z', 'pi', 'lam', 't', 'sl', 'su'] - * field = field_.encode('utf-8') # <<<<<<<<<<<<<< - * - * if field_ not in out_fields: - */ - if (unlikely(__pyx_v_field_ == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); - __PYX_ERR(0, 278, __pyx_L1_error) - } - __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_field_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_field = __pyx_t_1; - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":280 - * field = field_.encode('utf-8') - * - * if field_ not in out_fields: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.get(): {} is an invalid argument.\ - * \n Possible values are {}.'.format(field_, out_fields)) - */ - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_out_fields, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 280, __pyx_L1_error) - if (unlikely(__pyx_t_2)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":282 - * if field_ not in out_fields: - * raise Exception('AcadosOcpSolverCython.get(): {} is an invalid argument.\ - * \n Possible values are {}.'.format(field_, out_fields)) # <<<<<<<<<<<<<< - * - * if stage < 0 or stage > self.N: - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_AcadosOcpSolverCython_get_is_an, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_field_, __pyx_v_out_fields}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":281 - * - * if field_ not in out_fields: - * raise Exception('AcadosOcpSolverCython.get(): {} is an invalid argument.\ # <<<<<<<<<<<<<< - * \n Possible values are {}.'.format(field_, out_fields)) - * - */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 281, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 281, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":280 - * field = field_.encode('utf-8') - * - * if field_ not in out_fields: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.get(): {} is an invalid argument.\ - * \n Possible values are {}.'.format(field_, out_fields)) - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":284 - * \n Possible values are {}.'.format(field_, out_fields)) - * - * if stage < 0 or stage > self.N: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.get(): stage index must be in [0, N], got: {}.'.format(self.N)) - * - */ - __pyx_t_6 = (__pyx_v_stage < 0); - if (!__pyx_t_6) { - } else { - __pyx_t_2 = __pyx_t_6; - goto __pyx_L5_bool_binop_done; - } - __pyx_t_6 = (__pyx_v_stage > __pyx_v_self->N); - __pyx_t_2 = __pyx_t_6; - __pyx_L5_bool_binop_done:; - if (unlikely(__pyx_t_2)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":285 - * - * if stage < 0 or stage > self.N: - * raise Exception('AcadosOcpSolverCython.get(): stage index must be in [0, N], got: {}.'.format(self.N)) # <<<<<<<<<<<<<< - * - * if stage == self.N and field_ == 'pi': - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_AcadosOcpSolverCython_get_stage, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 285, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":284 - * \n Possible values are {}.'.format(field_, out_fields)) - * - * if stage < 0 or stage > self.N: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.get(): stage index must be in [0, N], got: {}.'.format(self.N)) - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":287 - * raise Exception('AcadosOcpSolverCython.get(): stage index must be in [0, N], got: {}.'.format(self.N)) - * - * if stage == self.N and field_ == 'pi': # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.get(): field {} does not exist at final stage {}.'\ - * .format(field_, stage)) - */ - __pyx_t_6 = (__pyx_v_stage == __pyx_v_self->N); - if (__pyx_t_6) { - } else { - __pyx_t_2 = __pyx_t_6; - goto __pyx_L8_bool_binop_done; - } - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_field_, __pyx_n_u_pi, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 287, __pyx_L1_error) - __pyx_t_2 = __pyx_t_6; - __pyx_L8_bool_binop_done:; - if (unlikely(__pyx_t_2)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":289 - * if stage == self.N and field_ == 'pi': - * raise Exception('AcadosOcpSolverCython.get(): field {} does not exist at final stage {}.'\ - * .format(field_, stage)) # <<<<<<<<<<<<<< - * - * cdef int dims = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_AcadosOcpSolverCython_get_field, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_stage); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_field_, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":288 - * - * if stage == self.N and field_ == 'pi': - * raise Exception('AcadosOcpSolverCython.get(): field {} does not exist at final stage {}.'\ # <<<<<<<<<<<<<< - * .format(field_, stage)) - * - */ - __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(0, 288, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":287 - * raise Exception('AcadosOcpSolverCython.get(): stage index must be in [0, N], got: {}.'.format(self.N)) - * - * if stage == self.N and field_ == 'pi': # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.get(): field {} does not exist at final stage {}.'\ - * .format(field_, stage)) - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":292 - * - * cdef int dims = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, - * self.nlp_dims, self.nlp_out, stage, field) # <<<<<<<<<<<<<< - * - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((dims,)) - */ - __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":291 - * .format(field_, stage)) - * - * cdef int dims = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_out, stage, field) - * - */ - __pyx_v_dims = ocp_nlp_dims_get_from_attr(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_out, __pyx_v_stage, __pyx_t_8); - - /* "acados_template/acados_ocp_solver_pyx.pyx":294 - * self.nlp_dims, self.nlp_out, stage, field) - * - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((dims,)) # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_out_get(self.nlp_config, \ - * self.nlp_dims, self.nlp_out, stage, field, out.data) - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 294, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_1 = NULL; - __pyx_t_5 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_5 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_7}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 294, __pyx_L1_error) - __pyx_t_9 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 294, __pyx_L1_error) - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_9 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":296 - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((dims,)) - * acados_solver_common.ocp_nlp_out_get(self.nlp_config, \ - * self.nlp_dims, self.nlp_out, stage, field, out.data) # <<<<<<<<<<<<<< - * - * return out - */ - __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 296, __pyx_L1_error) - __pyx_t_11 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_out)); if (unlikely(__pyx_t_11 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 296, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":295 - * - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((dims,)) - * acados_solver_common.ocp_nlp_out_get(self.nlp_config, \ # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_out, stage, field, out.data) - * - */ - ocp_nlp_out_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_out, __pyx_v_stage, __pyx_t_10, ((void *)__pyx_t_11)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":298 - * self.nlp_dims, self.nlp_out, stage, field, out.data) - * - * return out # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_out); - __pyx_r = ((PyObject *)__pyx_v_out); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":258 - * - * - * def get(self, int stage, str field_): # <<<<<<<<<<<<<< - * """ - * Get the last solution of the solver: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF(__pyx_v_out_fields); - __Pyx_XDECREF(__pyx_v_field); - __Pyx_XDECREF((PyObject *)__pyx_v_out); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":301 - * - * - * def print_statistics(self): # <<<<<<<<<<<<<< - * """ - * prints statistics of previous solver run as a table: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_21print_statistics(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_20print_statistics, "\n prints statistics of previous solver run as a table:\n - iter: iteration number\n - res_stat: stationarity residual\n - res_eq: residual wrt equality constraints (dynamics)\n - res_ineq: residual wrt inequality constraints (constraints)\n - res_comp: residual wrt complementarity conditions\n - qp_stat: status of QP solver\n - qp_iter: number of QP iterations\n - qp_res_stat: stationarity residual of the last QP solution\n - qp_res_eq: residual wrt equality constraints (dynamics) of the last QP solution\n - qp_res_ineq: residual wrt inequality constraints (constraints) of the last QP solution\n - qp_res_comp: residual wrt complementarity conditions of the last QP solution\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_21print_statistics = {"print_statistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_21print_statistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_20print_statistics}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_21print_statistics(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("print_statistics (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("print_statistics", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "print_statistics", 0))) return NULL; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_20print_statistics(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_20print_statistics(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("print_statistics", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":316 - * - qp_res_comp: residual wrt complementarity conditions of the last QP solution - * """ - * acados_solver.acados_print_stats(self.capsule) # <<<<<<<<<<<<<< - * - * - */ - lat_acados_print_stats(__pyx_v_self->capsule); - - /* "acados_template/acados_ocp_solver_pyx.pyx":301 - * - * - * def print_statistics(self): # <<<<<<<<<<<<<< - * """ - * prints statistics of previous solver run as a table: - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":319 - * - * - * def store_iterate(self, filename='', overwrite=False): # <<<<<<<<<<<<<< - * """ - * Stores the current iterate of the ocp solver in a json file. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_23store_iterate(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_22store_iterate, "\n Stores the current iterate of the ocp solver in a json file.\n\n :param filename: if not set, use model_name + timestamp + '.json'\n :param overwrite: if false and filename exists add timestamp to filename\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_23store_iterate = {"store_iterate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_23store_iterate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_22store_iterate}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_23store_iterate(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_filename = 0; - PyObject *__pyx_v_overwrite = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[2] = {0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("store_iterate (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_overwrite,0}; - values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_u__16)); - values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False)); - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filename); - if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 1: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_overwrite); - if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "store_iterate") < 0)) __PYX_ERR(0, 319, __pyx_L3_error) - } - } else { - switch (__pyx_nargs) { - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_filename = values[0]; - __pyx_v_overwrite = values[1]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("store_iterate", 0, 0, 2, __pyx_nargs); __PYX_ERR(0, 319, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.store_iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_22store_iterate(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_filename, __pyx_v_overwrite); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":358 - * # save - * with open(filename, 'w') as f: - * json.dump(solution, f, default=lambda x: x.tolist(), indent=4, sort_keys=True) # <<<<<<<<<<<<<< - * print("stored current iterate in ", os.path.join(os.getcwd(), filename)) - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13store_iterate_lambda(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13store_iterate_lambda = {"lambda", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13store_iterate_lambda, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13store_iterate_lambda(PyObject *__pyx_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_x = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lambda (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 358, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "lambda") < 0)) __PYX_ERR(0, 358, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_x = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("lambda", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 358, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.store_iterate.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_lambda_funcdef_lambda(__pyx_self, __pyx_v_x); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_lambda_funcdef_lambda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("lambda", 1); - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_tolist); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.store_iterate.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":319 - * - * - * def store_iterate(self, filename='', overwrite=False): # <<<<<<<<<<<<<< - * """ - * Stores the current iterate of the ocp solver in a json file. - */ - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_22store_iterate(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_overwrite) { - PyObject *__pyx_v_json = NULL; - PyObject *__pyx_v_solution = NULL; - Py_ssize_t __pyx_v_lN; - long __pyx_v_i; - PyObject *__pyx_v_i_string = NULL; - PyObject *__pyx_v_k = NULL; - PyObject *__pyx_v_f = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - Py_ssize_t __pyx_t_8; - long __pyx_t_9; - long __pyx_t_10; - long __pyx_t_11; - Py_UCS4 __pyx_t_12; - Py_ssize_t __pyx_t_13; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyObject *__pyx_t_16 = NULL; - PyObject *__pyx_t_17 = NULL; - PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("store_iterate", 0); - __Pyx_INCREF(__pyx_v_filename); - - /* "acados_template/acados_ocp_solver_pyx.pyx":326 - * :param overwrite: if false and filename exists add timestamp to filename - * """ - * import json # <<<<<<<<<<<<<< - * if filename == '': - * filename += self.model_name + '_' + 'iterate' + '.json' - */ - __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_json, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_json = __pyx_t_1; - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":327 - * """ - * import json - * if filename == '': # <<<<<<<<<<<<<< - * filename += self.model_name + '_' + 'iterate' + '.json' - * - */ - __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_filename, __pyx_kp_u__16, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 327, __pyx_L1_error) - if (__pyx_t_2) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":328 - * import json - * if filename == '': - * filename += self.model_name + '_' + 'iterate' + '.json' # <<<<<<<<<<<<<< - * - * if not overwrite: - */ - __pyx_t_1 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_self->model_name, __pyx_n_u__17); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_1, __pyx_n_u_iterate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_3, __pyx_kp_u_json_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_filename, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_3); - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":327 - * """ - * import json - * if filename == '': # <<<<<<<<<<<<<< - * filename += self.model_name + '_' + 'iterate' + '.json' - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":330 - * filename += self.model_name + '_' + 'iterate' + '.json' - * - * if not overwrite: # <<<<<<<<<<<<<< - * # append timestamp - * if os.path.isfile(filename): - */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_overwrite); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 330, __pyx_L1_error) - __pyx_t_4 = (!__pyx_t_2); - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":332 - * if not overwrite: - * # append timestamp - * if os.path.isfile(filename): # <<<<<<<<<<<<<< - * filename = filename[:-5] - * filename += datetime.utcnow().strftime('%Y-%m-%d-%H:%M:%S.%f') + '.json' - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_isfile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_filename}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 332, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":333 - * # append timestamp - * if os.path.isfile(filename): - * filename = filename[:-5] # <<<<<<<<<<<<<< - * filename += datetime.utcnow().strftime('%Y-%m-%d-%H:%M:%S.%f') + '.json' - * - */ - __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_filename, 0, -5L, NULL, NULL, &__pyx_slice__18, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_3); - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":334 - * if os.path.isfile(filename): - * filename = filename[:-5] - * filename += datetime.utcnow().strftime('%Y-%m-%d-%H:%M:%S.%f') + '.json' # <<<<<<<<<<<<<< - * - * # get iterate: - */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utcnow); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_strftime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_kp_u_Y_m_d_H_M_S_f}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_kp_u_json_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_filename, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_3); - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":332 - * if not overwrite: - * # append timestamp - * if os.path.isfile(filename): # <<<<<<<<<<<<<< - * filename = filename[:-5] - * filename += datetime.utcnow().strftime('%Y-%m-%d-%H:%M:%S.%f') + '.json' - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":330 - * filename += self.model_name + '_' + 'iterate' + '.json' - * - * if not overwrite: # <<<<<<<<<<<<<< - * # append timestamp - * if os.path.isfile(filename): - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":337 - * - * # get iterate: - * solution = dict() # <<<<<<<<<<<<<< - * - * lN = len(str(self.N+1)) - */ - __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_solution = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":339 - * solution = dict() - * - * lN = len(str(self.N+1)) # <<<<<<<<<<<<<< - * for i in range(self.N+1): - * i_string = f'{i:0{lN}d}' - */ - __pyx_t_3 = __Pyx_PyInt_From_long((__pyx_v_self->N + 1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = __Pyx_PyObject_Str(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 339, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_8 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 339, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_v_lN = __pyx_t_8; - - /* "acados_template/acados_ocp_solver_pyx.pyx":340 - * - * lN = len(str(self.N+1)) - * for i in range(self.N+1): # <<<<<<<<<<<<<< - * i_string = f'{i:0{lN}d}' - * solution['x_'+i_string] = self.get(i,'x') - */ - __pyx_t_9 = (__pyx_v_self->N + 1); - __pyx_t_10 = __pyx_t_9; - for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { - __pyx_v_i = __pyx_t_11; - - /* "acados_template/acados_ocp_solver_pyx.pyx":341 - * lN = len(str(self.N+1)) - * for i in range(self.N+1): - * i_string = f'{i:0{lN}d}' # <<<<<<<<<<<<<< - * solution['x_'+i_string] = self.get(i,'x') - * solution['u_'+i_string] = self.get(i,'u') - */ - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = 0; - __pyx_t_12 = 127; - __Pyx_INCREF(__pyx_kp_u_0); - __pyx_t_8 += 1; - __Pyx_GIVEREF(__pyx_kp_u_0); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_0); - __pyx_t_1 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_lN, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); - __pyx_t_1 = 0; - __Pyx_INCREF(__pyx_n_u_d); - __pyx_t_8 += 1; - __Pyx_GIVEREF(__pyx_n_u_d); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_n_u_d); - __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_8, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF_SET(__pyx_v_i_string, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":342 - * for i in range(self.N+1): - * i_string = f'{i:0{lN}d}' - * solution['x_'+i_string] = self.get(i,'x') # <<<<<<<<<<<<<< - * solution['u_'+i_string] = self.get(i,'u') - * solution['z_'+i_string] = self.get(i,'z') - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_n_u_x}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_x_2, __pyx_v_i_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyDict_SetItem(__pyx_v_solution, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 342, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":343 - * i_string = f'{i:0{lN}d}' - * solution['x_'+i_string] = self.get(i,'x') - * solution['u_'+i_string] = self.get(i,'u') # <<<<<<<<<<<<<< - * solution['z_'+i_string] = self.get(i,'z') - * solution['lam_'+i_string] = self.get(i,'lam') - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_n_u_u}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_u_2, __pyx_v_i_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyDict_SetItem(__pyx_v_solution, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 343, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":344 - * solution['x_'+i_string] = self.get(i,'x') - * solution['u_'+i_string] = self.get(i,'u') - * solution['z_'+i_string] = self.get(i,'z') # <<<<<<<<<<<<<< - * solution['lam_'+i_string] = self.get(i,'lam') - * solution['t_'+i_string] = self.get(i, 't') - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 344, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_n_u_z}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 344, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_z_2, __pyx_v_i_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyDict_SetItem(__pyx_v_solution, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 344, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":345 - * solution['u_'+i_string] = self.get(i,'u') - * solution['z_'+i_string] = self.get(i,'z') - * solution['lam_'+i_string] = self.get(i,'lam') # <<<<<<<<<<<<<< - * solution['t_'+i_string] = self.get(i, 't') - * solution['sl_'+i_string] = self.get(i, 'sl') - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_n_u_lam}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_lam_2, __pyx_v_i_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyDict_SetItem(__pyx_v_solution, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 345, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":346 - * solution['z_'+i_string] = self.get(i,'z') - * solution['lam_'+i_string] = self.get(i,'lam') - * solution['t_'+i_string] = self.get(i, 't') # <<<<<<<<<<<<<< - * solution['sl_'+i_string] = self.get(i, 'sl') - * solution['su_'+i_string] = self.get(i, 'su') - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_n_u_t}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_t_2, __pyx_v_i_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyDict_SetItem(__pyx_v_solution, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 346, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":347 - * solution['lam_'+i_string] = self.get(i,'lam') - * solution['t_'+i_string] = self.get(i, 't') - * solution['sl_'+i_string] = self.get(i, 'sl') # <<<<<<<<<<<<<< - * solution['su_'+i_string] = self.get(i, 'su') - * if i < self.N: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 347, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_n_u_sl}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_sl_2, __pyx_v_i_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyDict_SetItem(__pyx_v_solution, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 347, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":348 - * solution['t_'+i_string] = self.get(i, 't') - * solution['sl_'+i_string] = self.get(i, 'sl') - * solution['su_'+i_string] = self.get(i, 'su') # <<<<<<<<<<<<<< - * if i < self.N: - * solution['pi_'+i_string] = self.get(i,'pi') - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_n_u_su}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_su_2, __pyx_v_i_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyDict_SetItem(__pyx_v_solution, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 348, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":349 - * solution['sl_'+i_string] = self.get(i, 'sl') - * solution['su_'+i_string] = self.get(i, 'su') - * if i < self.N: # <<<<<<<<<<<<<< - * solution['pi_'+i_string] = self.get(i,'pi') - * - */ - __pyx_t_4 = (__pyx_v_i < __pyx_v_self->N); - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":350 - * solution['su_'+i_string] = self.get(i, 'su') - * if i < self.N: - * solution['pi_'+i_string] = self.get(i,'pi') # <<<<<<<<<<<<<< - * - * for k in list(solution.keys()): - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 350, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_n_u_pi}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_n_u_pi_2, __pyx_v_i_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (unlikely((PyDict_SetItem(__pyx_v_solution, __pyx_t_1, __pyx_t_3) < 0))) __PYX_ERR(0, 350, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":349 - * solution['sl_'+i_string] = self.get(i, 'sl') - * solution['su_'+i_string] = self.get(i, 'su') - * if i < self.N: # <<<<<<<<<<<<<< - * solution['pi_'+i_string] = self.get(i,'pi') - * - */ - } - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":352 - * solution['pi_'+i_string] = self.get(i,'pi') - * - * for k in list(solution.keys()): # <<<<<<<<<<<<<< - * if len(solution[k]) == 0: - * del solution[k] - */ - __pyx_t_3 = __Pyx_PyDict_Keys(__pyx_v_solution); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PySequence_ListKeepNew(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); - __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 352, __pyx_L1_error) - #endif - if (__pyx_t_8 >= __pyx_temp) break; - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 352, __pyx_L1_error) - #else - __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - #endif - __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":353 - * - * for k in list(solution.keys()): - * if len(solution[k]) == 0: # <<<<<<<<<<<<<< - * del solution[k] - * - */ - __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_solution, __pyx_v_k); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_13 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 353, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = (__pyx_t_13 == 0); - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":354 - * for k in list(solution.keys()): - * if len(solution[k]) == 0: - * del solution[k] # <<<<<<<<<<<<<< - * - * # save - */ - if (unlikely((PyDict_DelItem(__pyx_v_solution, __pyx_v_k) < 0))) __PYX_ERR(0, 354, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":353 - * - * for k in list(solution.keys()): - * if len(solution[k]) == 0: # <<<<<<<<<<<<<< - * del solution[k] - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":352 - * solution['pi_'+i_string] = self.get(i,'pi') - * - * for k in list(solution.keys()): # <<<<<<<<<<<<<< - * if len(solution[k]) == 0: - * del solution[k] - */ - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":357 - * - * # save - * with open(filename, 'w') as f: # <<<<<<<<<<<<<< - * json.dump(solution, f, default=lambda x: x.tolist(), indent=4, sort_keys=True) - * print("stored current iterate in ", os.path.join(os.getcwd(), filename)) - */ - /*with:*/ { - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_filename); - __Pyx_GIVEREF(__pyx_v_filename); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_filename)) __PYX_ERR(0, 357, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_w); - __Pyx_GIVEREF(__pyx_n_u_w); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_u_w)) __PYX_ERR(0, 357, __pyx_L1_error); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_14 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 357, __pyx_L13_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 357, __pyx_L13_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __pyx_t_7 = __pyx_t_3; - __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /*try:*/ { - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); - __Pyx_XGOTREF(__pyx_t_15); - __Pyx_XGOTREF(__pyx_t_16); - __Pyx_XGOTREF(__pyx_t_17); - /*try:*/ { - __pyx_v_f = __pyx_t_7; - __pyx_t_7 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":358 - * # save - * with open(filename, 'w') as f: - * json.dump(solution, f, default=lambda x: x.tolist(), indent=4, sort_keys=True) # <<<<<<<<<<<<<< - * print("stored current iterate in ", os.path.join(os.getcwd(), filename)) - * - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_json, __pyx_n_s_dump); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 358, __pyx_L17_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L17_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_solution); - __Pyx_GIVEREF(__pyx_v_solution); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_solution)) __PYX_ERR(0, 358, __pyx_L17_error); - __Pyx_INCREF(__pyx_v_f); - __Pyx_GIVEREF(__pyx_v_f); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_f)) __PYX_ERR(0, 358, __pyx_L17_error); - __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 358, __pyx_L17_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13store_iterate_lambda, 0, __pyx_n_s_store_iterate_locals_lambda, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 358, __pyx_L17_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_default, __pyx_t_5) < 0) __PYX_ERR(0, 358, __pyx_L17_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_indent, __pyx_int_4) < 0) __PYX_ERR(0, 358, __pyx_L17_error) - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sort_keys, Py_True) < 0) __PYX_ERR(0, 358, __pyx_L17_error) - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 358, __pyx_L17_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":357 - * - * # save - * with open(filename, 'w') as f: # <<<<<<<<<<<<<< - * json.dump(solution, f, default=lambda x: x.tolist(), indent=4, sort_keys=True) - * print("stored current iterate in ", os.path.join(os.getcwd(), filename)) - */ - } - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; - __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; - goto __pyx_L22_try_end; - __pyx_L17_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - /*except:*/ { - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.store_iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 357, __pyx_L19_except_error) - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __pyx_t_7 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 357, __pyx_L19_except_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_7, NULL); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 357, __pyx_L19_except_error) - __Pyx_GOTREF(__pyx_t_18); - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_18); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - if (__pyx_t_4 < 0) __PYX_ERR(0, 357, __pyx_L19_except_error) - __pyx_t_2 = (!__pyx_t_4); - if (unlikely(__pyx_t_2)) { - __Pyx_GIVEREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_3, __pyx_t_1); - __pyx_t_5 = 0; __pyx_t_3 = 0; __pyx_t_1 = 0; - __PYX_ERR(0, 357, __pyx_L19_except_error) - } - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L18_exception_handled; - } - __pyx_L19_except_error:; - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); - goto __pyx_L1_error; - __pyx_L18_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_15); - __Pyx_XGIVEREF(__pyx_t_16); - __Pyx_XGIVEREF(__pyx_t_17); - __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17); - __pyx_L22_try_end:; - } - } - /*finally:*/ { - /*normal exit:*/{ - if (__pyx_t_14) { - __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_tuple__19, NULL); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_17); - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - } - goto __pyx_L16; - } - __pyx_L16:; - } - goto __pyx_L26; - __pyx_L13_error:; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - goto __pyx_L1_error; - __pyx_L26:; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":359 - * with open(filename, 'w') as f: - * json.dump(solution, f, default=lambda x: x.tolist(), indent=4, sort_keys=True) - * print("stored current iterate in ", os.path.join(os.getcwd(), filename)) # <<<<<<<<<<<<<< - * - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_getcwd); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_19); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_19))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_19); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_19); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_19, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_19, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; - } - __pyx_t_19 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_19)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_19); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_19, __pyx_t_5, __pyx_v_filename}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_kp_u_stored_current_iterate_in); - __Pyx_GIVEREF(__pyx_kp_u_stored_current_iterate_in); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_stored_current_iterate_in)) __PYX_ERR(0, 359, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":319 - * - * - * def store_iterate(self, filename='', overwrite=False): # <<<<<<<<<<<<<< - * """ - * Stores the current iterate of the ocp solver in a json file. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_19); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.store_iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_json); - __Pyx_XDECREF(__pyx_v_solution); - __Pyx_XDECREF(__pyx_v_i_string); - __Pyx_XDECREF(__pyx_v_k); - __Pyx_XDECREF(__pyx_v_f); - __Pyx_XDECREF(__pyx_v_filename); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":362 - * - * - * def load_iterate(self, filename): # <<<<<<<<<<<<<< - * """ - * Loads the iterate stored in json file with filename into the ocp solver. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_25load_iterate(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_24load_iterate, "\n Loads the iterate stored in json file with filename into the ocp solver.\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_25load_iterate = {"load_iterate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_25load_iterate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_24load_iterate}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_25load_iterate(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_filename = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("load_iterate (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filename)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "load_iterate") < 0)) __PYX_ERR(0, 362, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_filename = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("load_iterate", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 362, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.load_iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_24load_iterate(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_filename); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_24load_iterate(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_filename) { - PyObject *__pyx_v_json = NULL; - PyObject *__pyx_v_f = NULL; - PyObject *__pyx_v_solution = NULL; - PyObject *__pyx_v_key = NULL; - PyObject *__pyx_v_field = NULL; - PyObject *__pyx_v_stage = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - Py_ssize_t __pyx_t_14; - Py_ssize_t __pyx_t_15; - int __pyx_t_16; - PyObject *(*__pyx_t_17)(PyObject *); - PyObject *__pyx_t_18 = NULL; - PyObject *__pyx_t_19 = NULL; - PyObject *__pyx_t_20 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("load_iterate", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":366 - * Loads the iterate stored in json file with filename into the ocp solver. - * """ - * import json # <<<<<<<<<<<<<< - * if not os.path.isfile(filename): - * raise Exception('load_iterate: failed, file does not exist: ' + os.path.join(os.getcwd(), filename)) - */ - __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_json, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_json = __pyx_t_1; - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":367 - * """ - * import json - * if not os.path.isfile(filename): # <<<<<<<<<<<<<< - * raise Exception('load_iterate: failed, file does not exist: ' + os.path.join(os.getcwd(), filename)) - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isfile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_filename}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 367, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = (!__pyx_t_5); - if (unlikely(__pyx_t_6)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":368 - * import json - * if not os.path.isfile(filename): - * raise Exception('load_iterate: failed, file does not exist: ' + os.path.join(os.getcwd(), filename)) # <<<<<<<<<<<<<< - * - * with open(filename, 'r') as f: - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_getcwd); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __pyx_t_8 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_3, __pyx_v_filename}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_t_2 = PyNumber_Add(__pyx_kp_u_load_iterate_failed_file_does_no, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 368, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":367 - * """ - * import json - * if not os.path.isfile(filename): # <<<<<<<<<<<<<< - * raise Exception('load_iterate: failed, file does not exist: ' + os.path.join(os.getcwd(), filename)) - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":370 - * raise Exception('load_iterate: failed, file does not exist: ' + os.path.join(os.getcwd(), filename)) - * - * with open(filename, 'r') as f: # <<<<<<<<<<<<<< - * solution = json.load(f) - * - */ - /*with:*/ { - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_filename); - __Pyx_GIVEREF(__pyx_v_filename); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_filename)) __PYX_ERR(0, 370, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_r); - __Pyx_GIVEREF(__pyx_n_u_r); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_r)) __PYX_ERR(0, 370, __pyx_L1_error); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 370, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_t_3 = __pyx_t_1; - __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /*try:*/ { - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); - __Pyx_XGOTREF(__pyx_t_10); - __Pyx_XGOTREF(__pyx_t_11); - __Pyx_XGOTREF(__pyx_t_12); - /*try:*/ { - __pyx_v_f = __pyx_t_3; - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":371 - * - * with open(filename, 'r') as f: - * solution = json.load(f) # <<<<<<<<<<<<<< - * - * for key in solution.keys(): - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_json, __pyx_n_s_load); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_f}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L8_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_v_solution = __pyx_t_3; - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":370 - * raise Exception('load_iterate: failed, file does not exist: ' + os.path.join(os.getcwd(), filename)) - * - * with open(filename, 'r') as f: # <<<<<<<<<<<<<< - * solution = json.load(f) - * - */ - } - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - goto __pyx_L13_try_end; - __pyx_L8_error:; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - /*except:*/ { - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.load_iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 370, __pyx_L10_except_error) - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_1); - __pyx_t_8 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 370, __pyx_L10_except_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 370, __pyx_L10_except_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_13); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (__pyx_t_6 < 0) __PYX_ERR(0, 370, __pyx_L10_except_error) - __pyx_t_5 = (!__pyx_t_6); - if (unlikely(__pyx_t_5)) { - __Pyx_GIVEREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1); - __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; - __PYX_ERR(0, 370, __pyx_L10_except_error) - } - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L9_exception_handled; - } - __pyx_L10_except_error:; - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); - goto __pyx_L1_error; - __pyx_L9_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_10); - __Pyx_XGIVEREF(__pyx_t_11); - __Pyx_XGIVEREF(__pyx_t_12); - __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); - __pyx_L13_try_end:; - } - } - /*finally:*/ { - /*normal exit:*/{ - if (__pyx_t_9) { - __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__19, NULL); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 370, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } - goto __pyx_L7; - } - __pyx_L7:; - } - goto __pyx_L17; - __pyx_L4_error:; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - goto __pyx_L1_error; - __pyx_L17:; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":373 - * solution = json.load(f) - * - * for key in solution.keys(): # <<<<<<<<<<<<<< - * (field, stage) = key.split('_') - * self.set(int(stage), field, np.array(solution[key])) - */ - __pyx_t_14 = 0; - if (unlikely(!__pyx_v_solution)) { __Pyx_RaiseUnboundLocalError("solution"); __PYX_ERR(0, 373, __pyx_L1_error) } - if (unlikely(__pyx_v_solution == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys"); - __PYX_ERR(0, 373, __pyx_L1_error) - } - __pyx_t_2 = __Pyx_dict_iterator(__pyx_v_solution, 0, __pyx_n_s_keys, (&__pyx_t_15), (&__pyx_t_4)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_1); - __pyx_t_1 = __pyx_t_2; - __pyx_t_2 = 0; - while (1) { - __pyx_t_16 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_15, &__pyx_t_14, &__pyx_t_2, NULL, NULL, __pyx_t_4); - if (unlikely(__pyx_t_16 == 0)) break; - if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 373, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_2); - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":374 - * - * for key in solution.keys(): - * (field, stage) = key.split('_') # <<<<<<<<<<<<<< - * self.set(int(stage), field, np.array(solution[key])) - * - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = NULL; - __pyx_t_16 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_16 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_n_u__17}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_16, 1+__pyx_t_16); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { - PyObject* sequence = __pyx_t_2; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 374, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); - } else { - __pyx_t_3 = PyList_GET_ITEM(sequence, 0); - __pyx_t_8 = PyList_GET_ITEM(sequence, 1); - } - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_8); - #else - __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - #endif - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 374, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_17 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); - index = 0; __pyx_t_3 = __pyx_t_17(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L20_unpacking_failed; - __Pyx_GOTREF(__pyx_t_3); - index = 1; __pyx_t_8 = __pyx_t_17(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L20_unpacking_failed; - __Pyx_GOTREF(__pyx_t_8); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_7), 2) < 0) __PYX_ERR(0, 374, __pyx_L1_error) - __pyx_t_17 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L21_unpacking_done; - __pyx_L20_unpacking_failed:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_17 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 374, __pyx_L1_error) - __pyx_L21_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_field, __pyx_t_3); - __pyx_t_3 = 0; - __Pyx_XDECREF_SET(__pyx_v_stage, __pyx_t_8); - __pyx_t_8 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":375 - * for key in solution.keys(): - * (field, stage) = key.split('_') - * self.set(int(stage), field, np.array(solution[key])) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 375, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_stage); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 375, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_np); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 375, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_array); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 375, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_19); - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - if (unlikely(!__pyx_v_solution)) { __Pyx_RaiseUnboundLocalError("solution"); __PYX_ERR(0, 375, __pyx_L1_error) } - __pyx_t_18 = __Pyx_PyObject_GetItem(__pyx_v_solution, __pyx_v_key); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 375, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __pyx_t_20 = NULL; - __pyx_t_16 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_19))) { - __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_19); - if (likely(__pyx_t_20)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_19); - __Pyx_INCREF(__pyx_t_20); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_19, function); - __pyx_t_16 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_20, __pyx_t_18}; - __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_19, __pyx_callargs+1-__pyx_t_16, 1+__pyx_t_16); - __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 375, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; - } - __pyx_t_19 = NULL; - __pyx_t_16 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_19)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_19); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_16 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[4] = {__pyx_t_19, __pyx_t_3, __pyx_v_field, __pyx_t_7}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_16, 3+__pyx_t_16); - __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 375, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":362 - * - * - * def load_iterate(self, filename): # <<<<<<<<<<<<<< - * """ - * Loads the iterate stored in json file with filename into the ocp solver. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_18); - __Pyx_XDECREF(__pyx_t_19); - __Pyx_XDECREF(__pyx_t_20); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.load_iterate", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_json); - __Pyx_XDECREF(__pyx_v_f); - __Pyx_XDECREF(__pyx_v_solution); - __Pyx_XDECREF(__pyx_v_key); - __Pyx_XDECREF(__pyx_v_field); - __Pyx_XDECREF(__pyx_v_stage); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":378 - * - * - * def get_stats(self, field_): # <<<<<<<<<<<<<< - * """ - * Get the information of the last solver call. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_27get_stats(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_26get_stats, "\n Get the information of the last solver call.\n\n :param field: string in ['statistics', 'time_tot', 'time_lin', 'time_sim', 'time_sim_ad', 'time_sim_la', 'time_qp', 'time_qp_solver_call', 'time_reg', 'sqp_iter']\n Available fileds:\n - time_tot: total CPU time previous call\n - time_lin: CPU time for linearization\n - time_sim: CPU time for integrator\n - time_sim_ad: CPU time for integrator contribution of external function calls\n - time_sim_la: CPU time for integrator contribution of linear algebra\n - time_qp: CPU time qp solution\n - time_qp_solver_call: CPU time inside qp solver (without converting the QP)\n - time_qp_xcond: time_glob: CPU time globalization\n - time_solution_sensitivities: CPU time for previous call to eval_param_sens\n - time_reg: CPU time regularization\n - sqp_iter: number of SQP iterations\n - qp_iter: vector of QP iterations for last SQP call\n - statistics: table with info about last iteration\n - stat_m: number of rows in statistics matrix\n - stat_n: number of columns in statistics matrix\n - residuals: residuals of last iterate\n - alpha: step sizes of SQP iterations\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_27get_stats = {"get_stats", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_27get_stats, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_26get_stats}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_27get_stats(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_field_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_stats (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_field_2,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field_2)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 378, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_stats") < 0)) __PYX_ERR(0, 378, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_field_ = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_stats", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 378, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get_stats", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_26get_stats(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_field_); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_26get_stats(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field_) { - PyObject *__pyx_v_double_fields = NULL; - CYTHON_UNUSED PyObject *__pyx_v_fields = NULL; - PyObject *__pyx_v_field = NULL; - PyObject *__pyx_v_sqp_iter = NULL; - PyObject *__pyx_v_stat_m = NULL; - PyObject *__pyx_v_stat_n = NULL; - PyObject *__pyx_v_min_size = NULL; - PyObject *__pyx_v_full_stats = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - int __pyx_t_5; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_stats", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":403 - * """ - * - * double_fields = ['time_tot', # <<<<<<<<<<<<<< - * 'time_lin', - * 'time_sim', - */ - __pyx_t_1 = PyList_New(11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 403, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_u_time_tot); - __Pyx_GIVEREF(__pyx_n_u_time_tot); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_time_tot)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_lin); - __Pyx_GIVEREF(__pyx_n_u_time_lin); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_time_lin)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_sim); - __Pyx_GIVEREF(__pyx_n_u_time_sim); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_time_sim)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_sim_ad); - __Pyx_GIVEREF(__pyx_n_u_time_sim_ad); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_time_sim_ad)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_sim_la); - __Pyx_GIVEREF(__pyx_n_u_time_sim_la); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_time_sim_la)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_qp); - __Pyx_GIVEREF(__pyx_n_u_time_qp); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_time_qp)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_qp_solver_call); - __Pyx_GIVEREF(__pyx_n_u_time_qp_solver_call); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_u_time_qp_solver_call)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_qp_xcond); - __Pyx_GIVEREF(__pyx_n_u_time_qp_xcond); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_u_time_qp_xcond)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_glob); - __Pyx_GIVEREF(__pyx_n_u_time_glob); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 8, __pyx_n_u_time_glob)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_solution_sensitivities); - __Pyx_GIVEREF(__pyx_n_u_time_solution_sensitivities); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 9, __pyx_n_u_time_solution_sensitivities)) __PYX_ERR(0, 403, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_time_reg); - __Pyx_GIVEREF(__pyx_n_u_time_reg); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 10, __pyx_n_u_time_reg)) __PYX_ERR(0, 403, __pyx_L1_error); - __pyx_v_double_fields = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":415 - * 'time_reg' - * ] - * fields = double_fields + [ # <<<<<<<<<<<<<< - * 'sqp_iter', - * 'qp_iter', - */ - __pyx_t_1 = PyList_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 415, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_u_sqp_iter); - __Pyx_GIVEREF(__pyx_n_u_sqp_iter); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_sqp_iter)) __PYX_ERR(0, 415, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_qp_iter); - __Pyx_GIVEREF(__pyx_n_u_qp_iter); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_qp_iter)) __PYX_ERR(0, 415, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_statistics); - __Pyx_GIVEREF(__pyx_n_u_statistics); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_statistics)) __PYX_ERR(0, 415, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_stat_m); - __Pyx_GIVEREF(__pyx_n_u_stat_m); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_stat_m)) __PYX_ERR(0, 415, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_stat_n); - __Pyx_GIVEREF(__pyx_n_u_stat_n); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_stat_n)) __PYX_ERR(0, 415, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_residuals); - __Pyx_GIVEREF(__pyx_n_u_residuals); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_residuals)) __PYX_ERR(0, 415, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_alpha); - __Pyx_GIVEREF(__pyx_n_u_alpha); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_u_alpha)) __PYX_ERR(0, 415, __pyx_L1_error); - __pyx_t_2 = PyNumber_Add(__pyx_v_double_fields, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 415, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_fields = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":424 - * 'alpha', - * ] - * field = field_.encode('utf-8') # <<<<<<<<<<<<<< - * - * if field_ in ['sqp_iter', 'stat_m', 'stat_n']: - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field_, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_utf_8}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 424, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_v_field = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":426 - * field = field_.encode('utf-8') - * - * if field_ in ['sqp_iter', 'stat_m', 'stat_n']: # <<<<<<<<<<<<<< - * return self.__get_stat_int(field) - * - */ - __Pyx_INCREF(__pyx_v_field_); - __pyx_t_2 = __pyx_v_field_; - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_n_u_sqp_iter, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 426, __pyx_L1_error) - if (!__pyx_t_6) { - } else { - __pyx_t_5 = __pyx_t_6; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_n_u_stat_m, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 426, __pyx_L1_error) - if (!__pyx_t_6) { - } else { - __pyx_t_5 = __pyx_t_6; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_n_u_stat_n, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 426, __pyx_L1_error) - __pyx_t_5 = __pyx_t_6; - __pyx_L4_bool_binop_done:; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __pyx_t_5; - if (__pyx_t_6) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":427 - * - * if field_ in ['sqp_iter', 'stat_m', 'stat_n']: - * return self.__get_stat_int(field) # <<<<<<<<<<<<<< - * - * elif field_ in double_fields: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_AcadosOcpSolverCython__get_stat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_field}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 427, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":426 - * field = field_.encode('utf-8') - * - * if field_ in ['sqp_iter', 'stat_m', 'stat_n']: # <<<<<<<<<<<<<< - * return self.__get_stat_int(field) - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":429 - * return self.__get_stat_int(field) - * - * elif field_ in double_fields: # <<<<<<<<<<<<<< - * return self.__get_stat_double(field) - * - */ - __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_double_fields, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 429, __pyx_L1_error) - if (__pyx_t_6) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":430 - * - * elif field_ in double_fields: - * return self.__get_stat_double(field) # <<<<<<<<<<<<<< - * - * elif field_ == 'statistics': - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_AcadosOcpSolverCython__get_stat_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_field}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":429 - * return self.__get_stat_int(field) - * - * elif field_ in double_fields: # <<<<<<<<<<<<<< - * return self.__get_stat_double(field) - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":432 - * return self.__get_stat_double(field) - * - * elif field_ == 'statistics': # <<<<<<<<<<<<<< - * sqp_iter = self.get_stats("sqp_iter") - * stat_m = self.get_stats("stat_m") - */ - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_field_, __pyx_n_u_statistics, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 432, __pyx_L1_error) - if (__pyx_t_6) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":433 - * - * elif field_ == 'statistics': - * sqp_iter = self.get_stats("sqp_iter") # <<<<<<<<<<<<<< - * stat_m = self.get_stats("stat_m") - * stat_n = self.get_stats("stat_n") - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_n_u_sqp_iter}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_v_sqp_iter = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":434 - * elif field_ == 'statistics': - * sqp_iter = self.get_stats("sqp_iter") - * stat_m = self.get_stats("stat_m") # <<<<<<<<<<<<<< - * stat_n = self.get_stats("stat_n") - * min_size = min([stat_m, sqp_iter+1]) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_n_u_stat_m}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 434, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_v_stat_m = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":435 - * sqp_iter = self.get_stats("sqp_iter") - * stat_m = self.get_stats("stat_m") - * stat_n = self.get_stats("stat_n") # <<<<<<<<<<<<<< - * min_size = min([stat_m, sqp_iter+1]) - * return self.__get_stat_matrix(field, stat_n+1, min_size) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_n_u_stat_n}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_v_stat_n = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":436 - * stat_m = self.get_stats("stat_m") - * stat_n = self.get_stats("stat_n") - * min_size = min([stat_m, sqp_iter+1]) # <<<<<<<<<<<<<< - * return self.__get_stat_matrix(field, stat_n+1, min_size) - * - */ - __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_sqp_iter, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_stat_m); - __pyx_t_1 = __pyx_v_stat_m; - __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 436, __pyx_L1_error) - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 436, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (__pyx_t_6) { - __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = __pyx_t_2; - } else { - __Pyx_INCREF(__pyx_t_1); - __pyx_t_3 = __pyx_t_1; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __pyx_t_3; - __Pyx_INCREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_min_size = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":437 - * stat_n = self.get_stats("stat_n") - * min_size = min([stat_m, sqp_iter+1]) - * return self.__get_stat_matrix(field, stat_n+1, min_size) # <<<<<<<<<<<<<< - * - * elif field_ == 'qp_iter': - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_AcadosOcpSolverCython__get_stat_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_stat_n, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_7)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_field, __pyx_t_1, __pyx_v_min_size}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 437, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":432 - * return self.__get_stat_double(field) - * - * elif field_ == 'statistics': # <<<<<<<<<<<<<< - * sqp_iter = self.get_stats("sqp_iter") - * stat_m = self.get_stats("stat_m") - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":439 - * return self.__get_stat_matrix(field, stat_n+1, min_size) - * - * elif field_ == 'qp_iter': # <<<<<<<<<<<<<< - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': - */ - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_field_, __pyx_n_u_qp_iter, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 439, __pyx_L1_error) - if (__pyx_t_6) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":440 - * - * elif field_ == 'qp_iter': - * full_stats = self.get_stats('statistics') # <<<<<<<<<<<<<< - * if self.nlp_solver_type == 'SQP': - * return full_stats[6, :] - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_stats); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 440, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_n_u_statistics}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_v_full_stats = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":441 - * elif field_ == 'qp_iter': - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': # <<<<<<<<<<<<<< - * return full_stats[6, :] - * elif self.nlp_solver_type == 'SQP_RTI': - */ - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_self->nlp_solver_type, __pyx_n_u_SQP, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 441, __pyx_L1_error) - if (__pyx_t_6) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":442 - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': - * return full_stats[6, :] # <<<<<<<<<<<<<< - * elif self.nlp_solver_type == 'SQP_RTI': - * return full_stats[2, :] - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_full_stats, __pyx_tuple__20); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 442, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":441 - * elif field_ == 'qp_iter': - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': # <<<<<<<<<<<<<< - * return full_stats[6, :] - * elif self.nlp_solver_type == 'SQP_RTI': - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":443 - * if self.nlp_solver_type == 'SQP': - * return full_stats[6, :] - * elif self.nlp_solver_type == 'SQP_RTI': # <<<<<<<<<<<<<< - * return full_stats[2, :] - * - */ - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_self->nlp_solver_type, __pyx_n_u_SQP_RTI, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 443, __pyx_L1_error) - if (__pyx_t_6) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":444 - * return full_stats[6, :] - * elif self.nlp_solver_type == 'SQP_RTI': - * return full_stats[2, :] # <<<<<<<<<<<<<< - * - * elif field_ == 'alpha': - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_full_stats, __pyx_tuple__21); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":443 - * if self.nlp_solver_type == 'SQP': - * return full_stats[6, :] - * elif self.nlp_solver_type == 'SQP_RTI': # <<<<<<<<<<<<<< - * return full_stats[2, :] - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":439 - * return self.__get_stat_matrix(field, stat_n+1, min_size) - * - * elif field_ == 'qp_iter': # <<<<<<<<<<<<<< - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': - */ - goto __pyx_L3; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":446 - * return full_stats[2, :] - * - * elif field_ == 'alpha': # <<<<<<<<<<<<<< - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': - */ - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_field_, __pyx_n_u_alpha, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 446, __pyx_L1_error) - if (__pyx_t_6) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":447 - * - * elif field_ == 'alpha': - * full_stats = self.get_stats('statistics') # <<<<<<<<<<<<<< - * if self.nlp_solver_type == 'SQP': - * return full_stats[7, :] - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_stats); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 447, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_n_u_statistics}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 447, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_v_full_stats = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":448 - * elif field_ == 'alpha': - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': # <<<<<<<<<<<<<< - * return full_stats[7, :] - * else: # self.nlp_solver_type == 'SQP_RTI': - */ - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_self->nlp_solver_type, __pyx_n_u_SQP, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 448, __pyx_L1_error) - if (likely(__pyx_t_6)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":449 - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': - * return full_stats[7, :] # <<<<<<<<<<<<<< - * else: # self.nlp_solver_type == 'SQP_RTI': - * raise Exception("alpha values are not available for SQP_RTI") - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_full_stats, __pyx_tuple__22); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":448 - * elif field_ == 'alpha': - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': # <<<<<<<<<<<<<< - * return full_stats[7, :] - * else: # self.nlp_solver_type == 'SQP_RTI': - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":451 - * return full_stats[7, :] - * else: # self.nlp_solver_type == 'SQP_RTI': - * raise Exception("alpha values are not available for SQP_RTI") # <<<<<<<<<<<<<< - * - * elif field_ == 'residuals': - */ - /*else*/ { - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 451, __pyx_L1_error) - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":446 - * return full_stats[2, :] - * - * elif field_ == 'alpha': # <<<<<<<<<<<<<< - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":453 - * raise Exception("alpha values are not available for SQP_RTI") - * - * elif field_ == 'residuals': # <<<<<<<<<<<<<< - * return self.get_residuals() - * - */ - __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_field_, __pyx_n_u_residuals, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 453, __pyx_L1_error) - if (likely(__pyx_t_6)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":454 - * - * elif field_ == 'residuals': - * return self.get_residuals() # <<<<<<<<<<<<<< - * - * else: - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_residuals); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; - __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 454, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":453 - * raise Exception("alpha values are not available for SQP_RTI") - * - * elif field_ == 'residuals': # <<<<<<<<<<<<<< - * return self.get_residuals() - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":457 - * - * else: - * raise NotImplementedError("TODO!") # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 457, __pyx_L1_error) - } - __pyx_L3:; - - /* "acados_template/acados_ocp_solver_pyx.pyx":378 - * - * - * def get_stats(self, field_): # <<<<<<<<<<<<<< - * """ - * Get the information of the last solver call. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get_stats", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_double_fields); - __Pyx_XDECREF(__pyx_v_fields); - __Pyx_XDECREF(__pyx_v_field); - __Pyx_XDECREF(__pyx_v_sqp_iter); - __Pyx_XDECREF(__pyx_v_stat_m); - __Pyx_XDECREF(__pyx_v_stat_n); - __Pyx_XDECREF(__pyx_v_min_size); - __Pyx_XDECREF(__pyx_v_full_stats); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":460 - * - * - * def __get_stat_int(self, field): # <<<<<<<<<<<<<< - * cdef int out - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &out) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_29_AcadosOcpSolverCython__get_stat_int(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_29_AcadosOcpSolverCython__get_stat_int = {"_AcadosOcpSolverCython__get_stat_int", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_29_AcadosOcpSolverCython__get_stat_int, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_29_AcadosOcpSolverCython__get_stat_int(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_field = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_AcadosOcpSolverCython__get_stat_int (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_field,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_AcadosOcpSolverCython__get_stat_int") < 0)) __PYX_ERR(0, 460, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_field = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_AcadosOcpSolverCython__get_stat_int", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 460, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython._AcadosOcpSolverCython__get_stat_int", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_28__get_stat_int(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_field); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_28__get_stat_int(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field) { - int __pyx_v_out; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - char const *__pyx_t_1; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_AcadosOcpSolverCython__get_stat_int", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":462 - * def __get_stat_int(self, field): - * cdef int out - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &out) # <<<<<<<<<<<<<< - * return out - * - */ - __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(0, 462, __pyx_L1_error) - ocp_nlp_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_t_1, ((void *)(&__pyx_v_out))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":463 - * cdef int out - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &out) - * return out # <<<<<<<<<<<<<< - * - * def __get_stat_double(self, field): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 463, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_r = __pyx_t_2; - __pyx_t_2 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":460 - * - * - * def __get_stat_int(self, field): # <<<<<<<<<<<<<< - * cdef int out - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &out) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython._AcadosOcpSolverCython__get_stat_int", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":465 - * return out - * - * def __get_stat_double(self, field): # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((1,)) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out.data) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_31_AcadosOcpSolverCython__get_stat_double(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_31_AcadosOcpSolverCython__get_stat_double = {"_AcadosOcpSolverCython__get_stat_double", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_31_AcadosOcpSolverCython__get_stat_double, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_31_AcadosOcpSolverCython__get_stat_double(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_field = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_AcadosOcpSolverCython__get_stat_double (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_field,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 465, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_AcadosOcpSolverCython__get_stat_double") < 0)) __PYX_ERR(0, 465, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v_field = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_AcadosOcpSolverCython__get_stat_double", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 465, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython._AcadosOcpSolverCython__get_stat_double", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_30__get_stat_double(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_field); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_30__get_stat_double(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field) { - PyArrayObject *__pyx_v_out = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyArrayObject *__pyx_t_5 = NULL; - char const *__pyx_t_6; - char *__pyx_t_7; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_AcadosOcpSolverCython__get_stat_double", 1); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - - /* "acados_template/acados_ocp_solver_pyx.pyx":466 - * - * def __get_stat_double(self, field): - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((1,)) # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out.data) - * return out - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - __pyx_t_4 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_4 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_tuple__25}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 466, __pyx_L1_error) - __pyx_t_5 = ((PyArrayObject *)__pyx_t_1); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 466, __pyx_L1_error) - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_5 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":467 - * def __get_stat_double(self, field): - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((1,)) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out.data) # <<<<<<<<<<<<<< - * return out - * - */ - __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 467, __pyx_L1_error) - __pyx_t_7 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_out)); if (unlikely(__pyx_t_7 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 467, __pyx_L1_error) - ocp_nlp_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_t_6, ((void *)__pyx_t_7)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":468 - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((1,)) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out.data) - * return out # <<<<<<<<<<<<<< - * - * def __get_stat_matrix(self, field, n, m): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_out); - __pyx_r = ((PyObject *)__pyx_v_out); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":465 - * return out - * - * def __get_stat_double(self, field): # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((1,)) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out.data) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython._AcadosOcpSolverCython__get_stat_double", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_out); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":470 - * return out - * - * def __get_stat_matrix(self, field, n, m): # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=2] out_mat = np.ascontiguousarray(np.zeros((n, m)), dtype=np.float64) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out_mat.data) - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_33_AcadosOcpSolverCython__get_stat_matrix(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_33_AcadosOcpSolverCython__get_stat_matrix = {"_AcadosOcpSolverCython__get_stat_matrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_33_AcadosOcpSolverCython__get_stat_matrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_33_AcadosOcpSolverCython__get_stat_matrix(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_field = 0; - PyObject *__pyx_v_n = 0; - PyObject *__pyx_v_m = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("_AcadosOcpSolverCython__get_stat_matrix (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_field,&__pyx_n_s_n,&__pyx_n_s_m,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 470, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_n)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 470, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("_AcadosOcpSolverCython__get_stat_matrix", 1, 3, 3, 1); __PYX_ERR(0, 470, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_m)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 470, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("_AcadosOcpSolverCython__get_stat_matrix", 1, 3, 3, 2); __PYX_ERR(0, 470, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_AcadosOcpSolverCython__get_stat_matrix") < 0)) __PYX_ERR(0, 470, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v_field = values[0]; - __pyx_v_n = values[1]; - __pyx_v_m = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_AcadosOcpSolverCython__get_stat_matrix", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 470, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython._AcadosOcpSolverCython__get_stat_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_32__get_stat_matrix(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_field, __pyx_v_n, __pyx_v_m); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_32__get_stat_matrix(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field, PyObject *__pyx_v_n, PyObject *__pyx_v_m) { - PyArrayObject *__pyx_v_out_mat = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out_mat; - __Pyx_Buffer __pyx_pybuffer_out_mat; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyArrayObject *__pyx_t_7 = NULL; - char const *__pyx_t_8; - char *__pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("_AcadosOcpSolverCython__get_stat_matrix", 1); - __pyx_pybuffer_out_mat.pybuffer.buf = NULL; - __pyx_pybuffer_out_mat.refcount = 0; - __pyx_pybuffernd_out_mat.data = NULL; - __pyx_pybuffernd_out_mat.rcbuffer = &__pyx_pybuffer_out_mat; - - /* "acados_template/acados_ocp_solver_pyx.pyx":471 - * - * def __get_stat_matrix(self, field, n, m): - * cdef cnp.ndarray[cnp.float64_t, ndim=2] out_mat = np.ascontiguousarray(np.zeros((n, m)), dtype=np.float64) # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out_mat.data) - * return out_mat - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_n); - __Pyx_GIVEREF(__pyx_v_n); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_n)) __PYX_ERR(0, 471, __pyx_L1_error); - __Pyx_INCREF(__pyx_v_m); - __Pyx_GIVEREF(__pyx_v_m); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_m)) __PYX_ERR(0, 471, __pyx_L1_error); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 471, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 471, __pyx_L1_error) - __pyx_t_7 = ((PyArrayObject *)__pyx_t_5); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_mat.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { - __pyx_v_out_mat = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out_mat.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 471, __pyx_L1_error) - } else {__pyx_pybuffernd_out_mat.diminfo[0].strides = __pyx_pybuffernd_out_mat.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_mat.diminfo[0].shape = __pyx_pybuffernd_out_mat.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_out_mat.diminfo[1].strides = __pyx_pybuffernd_out_mat.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out_mat.diminfo[1].shape = __pyx_pybuffernd_out_mat.rcbuffer->pybuffer.shape[1]; - } - } - __pyx_t_7 = 0; - __pyx_v_out_mat = ((PyArrayObject *)__pyx_t_5); - __pyx_t_5 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":472 - * def __get_stat_matrix(self, field, n, m): - * cdef cnp.ndarray[cnp.float64_t, ndim=2] out_mat = np.ascontiguousarray(np.zeros((n, m)), dtype=np.float64) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out_mat.data) # <<<<<<<<<<<<<< - * return out_mat - * - */ - __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 472, __pyx_L1_error) - __pyx_t_9 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_out_mat)); if (unlikely(__pyx_t_9 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 472, __pyx_L1_error) - ocp_nlp_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_t_8, ((void *)__pyx_t_9)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":473 - * cdef cnp.ndarray[cnp.float64_t, ndim=2] out_mat = np.ascontiguousarray(np.zeros((n, m)), dtype=np.float64) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out_mat.data) - * return out_mat # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_out_mat); - __pyx_r = ((PyObject *)__pyx_v_out_mat); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":470 - * return out - * - * def __get_stat_matrix(self, field, n, m): # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=2] out_mat = np.ascontiguousarray(np.zeros((n, m)), dtype=np.float64) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out_mat.data) - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_mat.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython._AcadosOcpSolverCython__get_stat_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_mat.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_out_mat); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":476 - * - * - * def get_cost(self): # <<<<<<<<<<<<<< - * """ - * Returns the cost value of the current solution. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_35get_cost(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_34get_cost, "\n Returns the cost value of the current solution.\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_35get_cost = {"get_cost", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_35get_cost, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_34get_cost}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_35get_cost(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_cost (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("get_cost", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_cost", 0))) return NULL; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_34get_cost(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_34get_cost(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self) { - double __pyx_v_out; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_cost", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":481 - * """ - * # compute cost internally - * acados_solver_common.ocp_nlp_eval_cost(self.nlp_solver, self.nlp_in, self.nlp_out) # <<<<<<<<<<<<<< - * - * # create output - */ - ocp_nlp_eval_cost(__pyx_v_self->nlp_solver, __pyx_v_self->nlp_in, __pyx_v_self->nlp_out); - - /* "acados_template/acados_ocp_solver_pyx.pyx":487 - * - * # call getter - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, "cost_value", &out) # <<<<<<<<<<<<<< - * - * return out - */ - ocp_nlp_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, ((char const *)"cost_value"), ((void *)(&__pyx_v_out))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":489 - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, "cost_value", &out) - * - * return out # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_out); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":476 - * - * - * def get_cost(self): # <<<<<<<<<<<<<< - * """ - * Returns the cost value of the current solution. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":492 - * - * - * def get_residuals(self, recompute=False): # <<<<<<<<<<<<<< - * """ - * Returns an array of the form [res_stat, res_eq, res_ineq, res_comp]. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_37get_residuals(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_36get_residuals, "\n Returns an array of the form [res_stat, res_eq, res_ineq, res_comp].\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_37get_residuals = {"get_residuals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_37get_residuals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_36get_residuals}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_37get_residuals(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_recompute = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_residuals (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_recompute,0}; - values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False)); - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (kw_args > 0) { - PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recompute); - if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_residuals") < 0)) __PYX_ERR(0, 492, __pyx_L3_error) - } - } else { - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_recompute = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_residuals", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 492, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get_residuals", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_36get_residuals(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_recompute); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_36get_residuals(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_recompute) { - PyArrayObject *__pyx_v_out = 0; - double __pyx_v_double_value; - PyObject *__pyx_v_field = NULL; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - PyArrayObject *__pyx_t_10 = NULL; - char const *__pyx_t_11; - Py_ssize_t __pyx_t_12; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_residuals", 1); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - - /* "acados_template/acados_ocp_solver_pyx.pyx":497 - * """ - * # compute residuals if RTI - * if self.nlp_solver_type == 'SQP_RTI' or recompute: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_eval_residuals(self.nlp_solver, self.nlp_in, self.nlp_out) - * - */ - __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->nlp_solver_type, __pyx_n_u_SQP_RTI, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 497, __pyx_L1_error) - if (!__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_recompute); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 497, __pyx_L1_error) - __pyx_t_1 = __pyx_t_2; - __pyx_L4_bool_binop_done:; - if (__pyx_t_1) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":498 - * # compute residuals if RTI - * if self.nlp_solver_type == 'SQP_RTI' or recompute: - * acados_solver_common.ocp_nlp_eval_residuals(self.nlp_solver, self.nlp_in, self.nlp_out) # <<<<<<<<<<<<<< - * - * # create output array - */ - ocp_nlp_eval_residuals(__pyx_v_self->nlp_solver, __pyx_v_self->nlp_in, __pyx_v_self->nlp_out); - - /* "acados_template/acados_ocp_solver_pyx.pyx":497 - * """ - * # compute residuals if RTI - * if self.nlp_solver_type == 'SQP_RTI' or recompute: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_eval_residuals(self.nlp_solver, self.nlp_in, self.nlp_out) - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":501 - * - * # create output array - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.ascontiguousarray(np.zeros((4,), dtype=np.float64)) # <<<<<<<<<<<<<< - * cdef double double_value - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__27, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = NULL; - __pyx_t_9 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_4)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_9 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8}; - __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 501, __pyx_L1_error) - __pyx_t_10 = ((PyArrayObject *)__pyx_t_3); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 501, __pyx_L1_error) - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_10 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_3); - __pyx_t_3 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":504 - * cdef double double_value - * - * field = "res_stat".encode('utf-8') # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) - * out[0] = double_value - */ - __Pyx_INCREF(__pyx_n_b_res_stat); - __pyx_v_field = __pyx_n_b_res_stat; - - /* "acados_template/acados_ocp_solver_pyx.pyx":505 - * - * field = "res_stat".encode('utf-8') - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) # <<<<<<<<<<<<<< - * out[0] = double_value - * - */ - __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 505, __pyx_L1_error) - ocp_nlp_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_t_11, ((void *)(&__pyx_v_double_value))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":506 - * field = "res_stat".encode('utf-8') - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) - * out[0] = double_value # <<<<<<<<<<<<<< - * - * field = "res_eq".encode('utf-8') - */ - __pyx_t_12 = 0; - __pyx_t_9 = -1; - if (__pyx_t_12 < 0) { - __pyx_t_12 += __pyx_pybuffernd_out.diminfo[0].shape; - if (unlikely(__pyx_t_12 < 0)) __pyx_t_9 = 0; - } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_out.diminfo[0].shape)) __pyx_t_9 = 0; - if (unlikely(__pyx_t_9 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_9); - __PYX_ERR(0, 506, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_v_double_value; - - /* "acados_template/acados_ocp_solver_pyx.pyx":508 - * out[0] = double_value - * - * field = "res_eq".encode('utf-8') # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) - * out[1] = double_value - */ - __Pyx_INCREF(__pyx_n_b_res_eq); - __Pyx_DECREF_SET(__pyx_v_field, __pyx_n_b_res_eq); - - /* "acados_template/acados_ocp_solver_pyx.pyx":509 - * - * field = "res_eq".encode('utf-8') - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) # <<<<<<<<<<<<<< - * out[1] = double_value - * - */ - __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 509, __pyx_L1_error) - ocp_nlp_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_t_11, ((void *)(&__pyx_v_double_value))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":510 - * field = "res_eq".encode('utf-8') - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) - * out[1] = double_value # <<<<<<<<<<<<<< - * - * field = "res_ineq".encode('utf-8') - */ - __pyx_t_12 = 1; - __pyx_t_9 = -1; - if (__pyx_t_12 < 0) { - __pyx_t_12 += __pyx_pybuffernd_out.diminfo[0].shape; - if (unlikely(__pyx_t_12 < 0)) __pyx_t_9 = 0; - } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_out.diminfo[0].shape)) __pyx_t_9 = 0; - if (unlikely(__pyx_t_9 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_9); - __PYX_ERR(0, 510, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_v_double_value; - - /* "acados_template/acados_ocp_solver_pyx.pyx":512 - * out[1] = double_value - * - * field = "res_ineq".encode('utf-8') # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) - * out[2] = double_value - */ - __Pyx_INCREF(__pyx_n_b_res_ineq); - __Pyx_DECREF_SET(__pyx_v_field, __pyx_n_b_res_ineq); - - /* "acados_template/acados_ocp_solver_pyx.pyx":513 - * - * field = "res_ineq".encode('utf-8') - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) # <<<<<<<<<<<<<< - * out[2] = double_value - * - */ - __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 513, __pyx_L1_error) - ocp_nlp_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_t_11, ((void *)(&__pyx_v_double_value))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":514 - * field = "res_ineq".encode('utf-8') - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) - * out[2] = double_value # <<<<<<<<<<<<<< - * - * field = "res_comp".encode('utf-8') - */ - __pyx_t_12 = 2; - __pyx_t_9 = -1; - if (__pyx_t_12 < 0) { - __pyx_t_12 += __pyx_pybuffernd_out.diminfo[0].shape; - if (unlikely(__pyx_t_12 < 0)) __pyx_t_9 = 0; - } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_out.diminfo[0].shape)) __pyx_t_9 = 0; - if (unlikely(__pyx_t_9 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_9); - __PYX_ERR(0, 514, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_v_double_value; - - /* "acados_template/acados_ocp_solver_pyx.pyx":516 - * out[2] = double_value - * - * field = "res_comp".encode('utf-8') # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) - * out[3] = double_value - */ - __Pyx_INCREF(__pyx_n_b_res_comp); - __Pyx_DECREF_SET(__pyx_v_field, __pyx_n_b_res_comp); - - /* "acados_template/acados_ocp_solver_pyx.pyx":517 - * - * field = "res_comp".encode('utf-8') - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) # <<<<<<<<<<<<<< - * out[3] = double_value - * - */ - __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 517, __pyx_L1_error) - ocp_nlp_get(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_t_11, ((void *)(&__pyx_v_double_value))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":518 - * field = "res_comp".encode('utf-8') - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &double_value) - * out[3] = double_value # <<<<<<<<<<<<<< - * - * return out - */ - __pyx_t_12 = 3; - __pyx_t_9 = -1; - if (__pyx_t_12 < 0) { - __pyx_t_12 += __pyx_pybuffernd_out.diminfo[0].shape; - if (unlikely(__pyx_t_12 < 0)) __pyx_t_9 = 0; - } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_out.diminfo[0].shape)) __pyx_t_9 = 0; - if (unlikely(__pyx_t_9 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_9); - __PYX_ERR(0, 518, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_v_double_value; - - /* "acados_template/acados_ocp_solver_pyx.pyx":520 - * out[3] = double_value - * - * return out # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_out); - __pyx_r = ((PyObject *)__pyx_v_out); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":492 - * - * - * def get_residuals(self, recompute=False): # <<<<<<<<<<<<<< - * """ - * Returns an array of the form [res_stat, res_eq, res_ineq, res_comp]. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get_residuals", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_out); - __Pyx_XDECREF(__pyx_v_field); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":524 - * - * # Note: this function should not be used anymore, better use cost_set, constraints_set - * def set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * - * """ - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_39set(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_38set, "\n Set numerical data inside the solver.\n\n :param stage: integer corresponding to shooting node\n :param field: string in ['x', 'u', 'pi', 'lam', 't', 'p']\n\n .. note:: regarding lam, t: \n\n the inequalities are internally organized in the following order: \n\n [ lbu lbx lg lh lphi ubu ubx ug uh uphi; \n\n lsbu lsbx lsg lsh lsphi usbu usbx usg ush usphi]\n\n .. note:: pi: multipliers for dynamics equality constraints \n\n lam: multipliers for inequalities \n\n t: slack variables corresponding to evaluation of all inequalities (at the solution) \n\n sl: slack variables of soft lower inequality constraints \n\n su: slack variables of soft upper inequality constraints \n\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_39set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_39set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_38set}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_39set(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - int __pyx_v_stage; - PyObject *__pyx_v_field_ = 0; - PyObject *__pyx_v_value_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stage,&__pyx_n_s_field_2,&__pyx_n_s_value,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stage)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field_2)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, 1); __PYX_ERR(0, 524, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, 2); __PYX_ERR(0, 524, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set") < 0)) __PYX_ERR(0, 524, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v_stage = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_stage == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L3_error) - __pyx_v_field_ = ((PyObject*)values[1]); - __pyx_v_value_ = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 524, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field_), (&PyUnicode_Type), 1, "field_", 1))) __PYX_ERR(0, 524, __pyx_L1_error) - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_38set(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_stage, __pyx_v_field_, __pyx_v_value_); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_38set(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_, PyObject *__pyx_v_value_) { - PyObject *__pyx_v_cost_fields = NULL; - PyObject *__pyx_v_constraints_fields = NULL; - PyObject *__pyx_v_out_fields = NULL; - PyObject *__pyx_v_mem_fields = NULL; - PyObject *__pyx_v_field = NULL; - PyArrayObject *__pyx_v_value = 0; - PyObject *__pyx_v_dims = NULL; - PyObject *__pyx_v_msg = NULL; - __Pyx_LocalBuf_ND __pyx_pybuffernd_value; - __Pyx_Buffer __pyx_pybuffer_value; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - Py_ssize_t __pyx_t_5; - Py_UCS4 __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyArrayObject *__pyx_t_10 = NULL; - char *__pyx_t_11; - npy_intp *__pyx_t_12; - int __pyx_t_13; - char const *__pyx_t_14; - char const *__pyx_t_15; - char const *__pyx_t_16; - char const *__pyx_t_17; - char const *__pyx_t_18; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("set", 1); - __pyx_pybuffer_value.pybuffer.buf = NULL; - __pyx_pybuffer_value.refcount = 0; - __pyx_pybuffernd_value.data = NULL; - __pyx_pybuffernd_value.rcbuffer = &__pyx_pybuffer_value; - - /* "acados_template/acados_ocp_solver_pyx.pyx":543 - * su: slack variables of soft upper inequality constraints \n - * """ - * if not isinstance(value_, np.ndarray): # <<<<<<<<<<<<<< - * raise Exception(f"set: value must be numpy array, got {type(value_)}.") - * cost_fields = ['y_ref', 'yref'] - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = PyObject_IsInstance(__pyx_v_value_, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 543, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (!__pyx_t_3); - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":544 - * """ - * if not isinstance(value_, np.ndarray): - * raise Exception(f"set: value must be numpy array, got {type(value_)}.") # <<<<<<<<<<<<<< - * cost_fields = ['y_ref', 'yref'] - * constraints_fields = ['lbx', 'ubx', 'lbu', 'ubu'] - */ - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = 0; - __pyx_t_6 = 127; - __Pyx_INCREF(__pyx_kp_u_set_value_must_be_numpy_array_go); - __pyx_t_5 += 36; - __Pyx_GIVEREF(__pyx_kp_u_set_value_must_be_numpy_array_go); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_set_value_must_be_numpy_array_go); - __pyx_t_1 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_value_)), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); - __pyx_t_1 = 0; - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_5 += 1; - __Pyx_GIVEREF(__pyx_kp_u__2); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2); - __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 544, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":543 - * su: slack variables of soft upper inequality constraints \n - * """ - * if not isinstance(value_, np.ndarray): # <<<<<<<<<<<<<< - * raise Exception(f"set: value must be numpy array, got {type(value_)}.") - * cost_fields = ['y_ref', 'yref'] - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":545 - * if not isinstance(value_, np.ndarray): - * raise Exception(f"set: value must be numpy array, got {type(value_)}.") - * cost_fields = ['y_ref', 'yref'] # <<<<<<<<<<<<<< - * constraints_fields = ['lbx', 'ubx', 'lbu', 'ubu'] - * out_fields = ['x', 'u', 'pi', 'lam', 't', 'z', 'sl', 'su'] - */ - __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_u_y_ref); - __Pyx_GIVEREF(__pyx_n_u_y_ref); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_y_ref)) __PYX_ERR(0, 545, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_yref); - __Pyx_GIVEREF(__pyx_n_u_yref); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_u_yref)) __PYX_ERR(0, 545, __pyx_L1_error); - __pyx_v_cost_fields = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":546 - * raise Exception(f"set: value must be numpy array, got {type(value_)}.") - * cost_fields = ['y_ref', 'yref'] - * constraints_fields = ['lbx', 'ubx', 'lbu', 'ubu'] # <<<<<<<<<<<<<< - * out_fields = ['x', 'u', 'pi', 'lam', 't', 'z', 'sl', 'su'] - * mem_fields = ['xdot_guess', 'z_guess'] - */ - __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 546, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_u_lbx); - __Pyx_GIVEREF(__pyx_n_u_lbx); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_lbx)) __PYX_ERR(0, 546, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_ubx); - __Pyx_GIVEREF(__pyx_n_u_ubx); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_u_ubx)) __PYX_ERR(0, 546, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_lbu); - __Pyx_GIVEREF(__pyx_n_u_lbu); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_lbu)) __PYX_ERR(0, 546, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_ubu); - __Pyx_GIVEREF(__pyx_n_u_ubu); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_u_ubu)) __PYX_ERR(0, 546, __pyx_L1_error); - __pyx_v_constraints_fields = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":547 - * cost_fields = ['y_ref', 'yref'] - * constraints_fields = ['lbx', 'ubx', 'lbu', 'ubu'] - * out_fields = ['x', 'u', 'pi', 'lam', 't', 'z', 'sl', 'su'] # <<<<<<<<<<<<<< - * mem_fields = ['xdot_guess', 'z_guess'] - * - */ - __pyx_t_2 = PyList_New(8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 547, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_u_x); - __Pyx_GIVEREF(__pyx_n_u_x); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_x)) __PYX_ERR(0, 547, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_u); - __Pyx_GIVEREF(__pyx_n_u_u); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_u_u)) __PYX_ERR(0, 547, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_pi); - __Pyx_GIVEREF(__pyx_n_u_pi); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_pi)) __PYX_ERR(0, 547, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_lam); - __Pyx_GIVEREF(__pyx_n_u_lam); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_u_lam)) __PYX_ERR(0, 547, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_t); - __Pyx_GIVEREF(__pyx_n_u_t); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 4, __pyx_n_u_t)) __PYX_ERR(0, 547, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_z); - __Pyx_GIVEREF(__pyx_n_u_z); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 5, __pyx_n_u_z)) __PYX_ERR(0, 547, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_sl); - __Pyx_GIVEREF(__pyx_n_u_sl); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 6, __pyx_n_u_sl)) __PYX_ERR(0, 547, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_su); - __Pyx_GIVEREF(__pyx_n_u_su); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 7, __pyx_n_u_su)) __PYX_ERR(0, 547, __pyx_L1_error); - __pyx_v_out_fields = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":548 - * constraints_fields = ['lbx', 'ubx', 'lbu', 'ubu'] - * out_fields = ['x', 'u', 'pi', 'lam', 't', 'z', 'sl', 'su'] - * mem_fields = ['xdot_guess', 'z_guess'] # <<<<<<<<<<<<<< - * - * field = field_.encode('utf-8') - */ - __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 548, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_u_xdot_guess); - __Pyx_GIVEREF(__pyx_n_u_xdot_guess); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_xdot_guess)) __PYX_ERR(0, 548, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_z_guess); - __Pyx_GIVEREF(__pyx_n_u_z_guess); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_u_z_guess)) __PYX_ERR(0, 548, __pyx_L1_error); - __pyx_v_mem_fields = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":550 - * mem_fields = ['xdot_guess', 'z_guess'] - * - * field = field_.encode('utf-8') # <<<<<<<<<<<<<< - * - * cdef cnp.ndarray[cnp.float64_t, ndim=1] value = np.ascontiguousarray(value_, dtype=np.float64) - */ - if (unlikely(__pyx_v_field_ == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); - __PYX_ERR(0, 550, __pyx_L1_error) - } - __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_v_field_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_field = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":552 - * field = field_.encode('utf-8') - * - * cdef cnp.ndarray[cnp.float64_t, ndim=1] value = np.ascontiguousarray(value_, dtype=np.float64) # <<<<<<<<<<<<<< - * - * # treat parameters separately - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_value_); - __Pyx_GIVEREF(__pyx_v_value_); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_value_)) __PYX_ERR(0, 552, __pyx_L1_error); - __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 552, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 552, __pyx_L1_error) - __pyx_t_10 = ((PyArrayObject *)__pyx_t_9); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_value.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_value = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_value.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 552, __pyx_L1_error) - } else {__pyx_pybuffernd_value.diminfo[0].strides = __pyx_pybuffernd_value.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_value.diminfo[0].shape = __pyx_pybuffernd_value.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_10 = 0; - __pyx_v_value = ((PyArrayObject *)__pyx_t_9); - __pyx_t_9 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":555 - * - * # treat parameters separately - * if field_ == 'p': # <<<<<<<<<<<<<< - * assert acados_solver.acados_update_params(self.capsule, stage, value.data, value.shape[0]) == 0 - * else: - */ - __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_v_field_, __pyx_n_u_p, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 555, __pyx_L1_error) - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":556 - * # treat parameters separately - * if field_ == 'p': - * assert acados_solver.acados_update_params(self.capsule, stage, value.data, value.shape[0]) == 0 # <<<<<<<<<<<<<< - * else: - * if field_ not in constraints_fields + cost_fields + out_fields: - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_11 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_11 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 556, __pyx_L1_error) - __pyx_t_12 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_12 == ((npy_intp *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 556, __pyx_L1_error) - __pyx_t_4 = (lat_acados_update_params(__pyx_v_self->capsule, __pyx_v_stage, ((double *)__pyx_t_11), (__pyx_t_12[0])) == 0); - if (unlikely(!__pyx_t_4)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(0, 556, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 556, __pyx_L1_error) - #endif - - /* "acados_template/acados_ocp_solver_pyx.pyx":555 - * - * # treat parameters separately - * if field_ == 'p': # <<<<<<<<<<<<<< - * assert acados_solver.acados_update_params(self.capsule, stage, value.data, value.shape[0]) == 0 - * else: - */ - goto __pyx_L4; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":558 - * assert acados_solver.acados_update_params(self.capsule, stage, value.data, value.shape[0]) == 0 - * else: - * if field_ not in constraints_fields + cost_fields + out_fields: # <<<<<<<<<<<<<< - * raise Exception("AcadosOcpSolverCython.set(): {} is not a valid argument.\ - * \nPossible values are {}.".format(field, \ - */ - /*else*/ { - __pyx_t_9 = PyNumber_Add(__pyx_v_constraints_fields, __pyx_v_cost_fields); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 558, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_7 = PyNumber_Add(__pyx_t_9, __pyx_v_out_fields); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 558, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_t_7, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 558, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":560 - * if field_ not in constraints_fields + cost_fields + out_fields: - * raise Exception("AcadosOcpSolverCython.set(): {} is not a valid argument.\ - * \nPossible values are {}.".format(field, \ # <<<<<<<<<<<<<< - * constraints_fields + cost_fields + out_fields + ['p'])) - * - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_AcadosOcpSolverCython_set_is_not, __pyx_n_s_format); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 560, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - - /* "acados_template/acados_ocp_solver_pyx.pyx":561 - * raise Exception("AcadosOcpSolverCython.set(): {} is not a valid argument.\ - * \nPossible values are {}.".format(field, \ - * constraints_fields + cost_fields + out_fields + ['p'])) # <<<<<<<<<<<<<< - * - * dims = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, - */ - __pyx_t_2 = PyNumber_Add(__pyx_v_constraints_fields, __pyx_v_cost_fields); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_v_out_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_u_p); - __Pyx_GIVEREF(__pyx_n_u_p); - if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_p)) __PYX_ERR(0, 561, __pyx_L1_error); - __pyx_t_8 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 561, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - __pyx_t_13 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - __pyx_t_13 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_field, __pyx_t_8}; - __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 560, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":559 - * else: - * if field_ not in constraints_fields + cost_fields + out_fields: - * raise Exception("AcadosOcpSolverCython.set(): {} is not a valid argument.\ # <<<<<<<<<<<<<< - * \nPossible values are {}.".format(field, \ - * constraints_fields + cost_fields + out_fields + ['p'])) - */ - __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 559, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_Raise(__pyx_t_9, 0, 0, 0); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __PYX_ERR(0, 559, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":558 - * assert acados_solver.acados_update_params(self.capsule, stage, value.data, value.shape[0]) == 0 - * else: - * if field_ not in constraints_fields + cost_fields + out_fields: # <<<<<<<<<<<<<< - * raise Exception("AcadosOcpSolverCython.set(): {} is not a valid argument.\ - * \nPossible values are {}.".format(field, \ - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":564 - * - * dims = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, - * self.nlp_dims, self.nlp_out, stage, field) # <<<<<<<<<<<<<< - * - * if value_.shape[0] != dims: - */ - __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 564, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":563 - * constraints_fields + cost_fields + out_fields + ['p'])) - * - * dims = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_out, stage, field) - * - */ - __pyx_t_9 = __Pyx_PyInt_From_int(ocp_nlp_dims_get_from_attr(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_out, __pyx_v_stage, __pyx_t_14)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 563, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_v_dims = __pyx_t_9; - __pyx_t_9 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":566 - * self.nlp_dims, self.nlp_out, stage, field) - * - * if value_.shape[0] != dims: # <<<<<<<<<<<<<< - * msg = 'AcadosOcpSolverCython.set(): mismatching dimension for field "{}" '.format(field_) - * msg += 'with dimension {} (you have {})'.format(dims, value_.shape[0]) - */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_value_, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyObject_RichCompare(__pyx_t_7, __pyx_v_dims, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 566, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":567 - * - * if value_.shape[0] != dims: - * msg = 'AcadosOcpSolverCython.set(): mismatching dimension for field "{}" '.format(field_) # <<<<<<<<<<<<<< - * msg += 'with dimension {} (you have {})'.format(dims, value_.shape[0]) - * raise Exception(msg) - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_AcadosOcpSolverCython_set_mismat, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 567, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = NULL; - __pyx_t_13 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_13 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_field_}; - __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 567, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __pyx_v_msg = __pyx_t_9; - __pyx_t_9 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":568 - * if value_.shape[0] != dims: - * msg = 'AcadosOcpSolverCython.set(): mismatching dimension for field "{}" '.format(field_) - * msg += 'with dimension {} (you have {})'.format(dims, value_.shape[0]) # <<<<<<<<<<<<<< - * raise Exception(msg) - * - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_with_dimension_you_have, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 568, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_value_, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 568, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - __pyx_t_13 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - __pyx_t_13 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_dims, __pyx_t_2}; - __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 568, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 568, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_7); - __pyx_t_7 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":569 - * msg = 'AcadosOcpSolverCython.set(): mismatching dimension for field "{}" '.format(field_) - * msg += 'with dimension {} (you have {})'.format(dims, value_.shape[0]) - * raise Exception(msg) # <<<<<<<<<<<<<< - * - * if field_ in constraints_fields: - */ - __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_v_msg); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 569, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_Raise(__pyx_t_7, 0, 0, 0); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __PYX_ERR(0, 569, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":566 - * self.nlp_dims, self.nlp_out, stage, field) - * - * if value_.shape[0] != dims: # <<<<<<<<<<<<<< - * msg = 'AcadosOcpSolverCython.set(): mismatching dimension for field "{}" '.format(field_) - * msg += 'with dimension {} (you have {})'.format(dims, value_.shape[0]) - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":571 - * raise Exception(msg) - * - * if field_ in constraints_fields: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) - */ - __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_constraints_fields, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 571, __pyx_L1_error) - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":573 - * if field_ in constraints_fields: - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) # <<<<<<<<<<<<<< - * elif field_ in cost_fields: - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, - */ - __pyx_t_15 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 573, __pyx_L1_error) - __pyx_t_11 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_11 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 573, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":572 - * - * if field_ in constraints_fields: - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_in, stage, field, value.data) - * elif field_ in cost_fields: - */ - (void)(ocp_nlp_constraints_model_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_in, __pyx_v_stage, __pyx_t_15, ((void *)__pyx_t_11))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":571 - * raise Exception(msg) - * - * if field_ in constraints_fields: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) - */ - goto __pyx_L7; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":574 - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) - * elif field_ in cost_fields: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) - */ - __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_cost_fields, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 574, __pyx_L1_error) - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":576 - * elif field_ in cost_fields: - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) # <<<<<<<<<<<<<< - * elif field_ in out_fields: - * acados_solver_common.ocp_nlp_out_set(self.nlp_config, - */ - __pyx_t_16 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L1_error) - __pyx_t_11 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_11 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":575 - * self.nlp_dims, self.nlp_in, stage, field, value.data) - * elif field_ in cost_fields: - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_in, stage, field, value.data) - * elif field_ in out_fields: - */ - (void)(ocp_nlp_cost_model_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_in, __pyx_v_stage, __pyx_t_16, ((void *)__pyx_t_11))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":574 - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) - * elif field_ in cost_fields: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) - */ - goto __pyx_L7; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":577 - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) - * elif field_ in out_fields: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_out_set(self.nlp_config, - * self.nlp_dims, self.nlp_out, stage, field, value.data) - */ - __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_out_fields, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 577, __pyx_L1_error) - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":579 - * elif field_ in out_fields: - * acados_solver_common.ocp_nlp_out_set(self.nlp_config, - * self.nlp_dims, self.nlp_out, stage, field, value.data) # <<<<<<<<<<<<<< - * elif field_ in mem_fields: - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - */ - __pyx_t_17 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 579, __pyx_L1_error) - __pyx_t_11 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_11 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 579, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":578 - * self.nlp_dims, self.nlp_in, stage, field, value.data) - * elif field_ in out_fields: - * acados_solver_common.ocp_nlp_out_set(self.nlp_config, # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_out, stage, field, value.data) - * elif field_ in mem_fields: - */ - ocp_nlp_out_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_out, __pyx_v_stage, __pyx_t_17, ((void *)__pyx_t_11)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":577 - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, - * self.nlp_dims, self.nlp_in, stage, field, value.data) - * elif field_ in out_fields: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_out_set(self.nlp_config, - * self.nlp_dims, self.nlp_out, stage, field, value.data) - */ - goto __pyx_L7; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":580 - * acados_solver_common.ocp_nlp_out_set(self.nlp_config, - * self.nlp_dims, self.nlp_out, stage, field, value.data) - * elif field_ in mem_fields: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - * self.nlp_solver, stage, field, value.data) - */ - __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_mem_fields, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 580, __pyx_L1_error) - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":582 - * elif field_ in mem_fields: - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - * self.nlp_solver, stage, field, value.data) # <<<<<<<<<<<<<< - * - * if field_ == 'z': - */ - __pyx_t_18 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_18) && PyErr_Occurred())) __PYX_ERR(0, 582, __pyx_L1_error) - __pyx_t_11 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_11 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 582, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":581 - * self.nlp_dims, self.nlp_out, stage, field, value.data) - * elif field_ in mem_fields: - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ # <<<<<<<<<<<<<< - * self.nlp_solver, stage, field, value.data) - * - */ - ocp_nlp_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_v_stage, __pyx_t_18, ((void *)__pyx_t_11)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":580 - * acados_solver_common.ocp_nlp_out_set(self.nlp_config, - * self.nlp_dims, self.nlp_out, stage, field, value.data) - * elif field_ in mem_fields: # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - * self.nlp_solver, stage, field, value.data) - */ - } - __pyx_L7:; - - /* "acados_template/acados_ocp_solver_pyx.pyx":584 - * self.nlp_solver, stage, field, value.data) - * - * if field_ == 'z': # <<<<<<<<<<<<<< - * field = 'z_guess'.encode('utf-8') - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - */ - __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_v_field_, __pyx_n_u_z, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 584, __pyx_L1_error) - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":585 - * - * if field_ == 'z': - * field = 'z_guess'.encode('utf-8') # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - * self.nlp_solver, stage, field, value.data) - */ - __Pyx_INCREF(__pyx_n_b_z_guess); - __Pyx_DECREF_SET(__pyx_v_field, __pyx_n_b_z_guess); - - /* "acados_template/acados_ocp_solver_pyx.pyx":587 - * field = 'z_guess'.encode('utf-8') - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - * self.nlp_solver, stage, field, value.data) # <<<<<<<<<<<<<< - * return - * - */ - __pyx_t_18 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_18) && PyErr_Occurred())) __PYX_ERR(0, 587, __pyx_L1_error) - __pyx_t_11 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_11 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 587, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":586 - * if field_ == 'z': - * field = 'z_guess'.encode('utf-8') - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ # <<<<<<<<<<<<<< - * self.nlp_solver, stage, field, value.data) - * return - */ - ocp_nlp_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_solver, __pyx_v_stage, __pyx_t_18, ((void *)__pyx_t_11)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":584 - * self.nlp_solver, stage, field, value.data) - * - * if field_ == 'z': # <<<<<<<<<<<<<< - * field = 'z_guess'.encode('utf-8') - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - */ - } - } - __pyx_L4:; - - /* "acados_template/acados_ocp_solver_pyx.pyx":588 - * acados_solver_common.ocp_nlp_set(self.nlp_config, \ - * self.nlp_solver, stage, field, value.data) - * return # <<<<<<<<<<<<<< - * - * def cost_set(self, int stage, str field_, value_): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":524 - * - * # Note: this function should not be used anymore, better use cost_set, constraints_set - * def set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * - * """ - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_value.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_value.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF(__pyx_v_cost_fields); - __Pyx_XDECREF(__pyx_v_constraints_fields); - __Pyx_XDECREF(__pyx_v_out_fields); - __Pyx_XDECREF(__pyx_v_mem_fields); - __Pyx_XDECREF(__pyx_v_field); - __Pyx_XDECREF((PyObject *)__pyx_v_value); - __Pyx_XDECREF(__pyx_v_dims); - __Pyx_XDECREF(__pyx_v_msg); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":590 - * return - * - * def cost_set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set numerical data in the cost module of the solver. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_41cost_set(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_40cost_set, "\n Set numerical data in the cost module of the solver.\n\n :param stage: integer corresponding to shooting node\n :param field: string, e.g. 'yref', 'W', 'ext_cost_num_hess'\n :param value: of appropriate size\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_41cost_set = {"cost_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_41cost_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_40cost_set}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_41cost_set(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - int __pyx_v_stage; - PyObject *__pyx_v_field_ = 0; - PyObject *__pyx_v_value_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("cost_set (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stage,&__pyx_n_s_field_2,&__pyx_n_s_value,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stage)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field_2)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("cost_set", 1, 3, 3, 1); __PYX_ERR(0, 590, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("cost_set", 1, 3, 3, 2); __PYX_ERR(0, 590, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "cost_set") < 0)) __PYX_ERR(0, 590, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v_stage = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_stage == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L3_error) - __pyx_v_field_ = ((PyObject*)values[1]); - __pyx_v_value_ = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("cost_set", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 590, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.cost_set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field_), (&PyUnicode_Type), 1, "field_", 1))) __PYX_ERR(0, 590, __pyx_L1_error) - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_40cost_set(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_stage, __pyx_v_field_, __pyx_v_value_); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_40cost_set(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_, PyObject *__pyx_v_value_) { - PyObject *__pyx_v_field = NULL; - int __pyx_v_dims[2]; - __Pyx_memviewslice __pyx_v_value = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyObject *__pyx_v_value_shape = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - Py_ssize_t __pyx_t_5; - Py_UCS4 __pyx_t_6; - char const *__pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } }; - char const *__pyx_t_12; - Py_ssize_t __pyx_t_13; - Py_ssize_t __pyx_t_14; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("cost_set", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":598 - * :param value: of appropriate size - * """ - * if not isinstance(value_, np.ndarray): # <<<<<<<<<<<<<< - * raise Exception(f"cost_set: value must be numpy array, got {type(value_)}.") - * field = field_.encode('utf-8') - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = PyObject_IsInstance(__pyx_v_value_, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 598, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (!__pyx_t_3); - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":599 - * """ - * if not isinstance(value_, np.ndarray): - * raise Exception(f"cost_set: value must be numpy array, got {type(value_)}.") # <<<<<<<<<<<<<< - * field = field_.encode('utf-8') - * - */ - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = 0; - __pyx_t_6 = 127; - __Pyx_INCREF(__pyx_kp_u_cost_set_value_must_be_numpy_arr); - __pyx_t_5 += 41; - __Pyx_GIVEREF(__pyx_kp_u_cost_set_value_must_be_numpy_arr); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cost_set_value_must_be_numpy_arr); - __pyx_t_1 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_value_)), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); - __pyx_t_1 = 0; - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_5 += 1; - __Pyx_GIVEREF(__pyx_kp_u__2); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2); - __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 599, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":598 - * :param value: of appropriate size - * """ - * if not isinstance(value_, np.ndarray): # <<<<<<<<<<<<<< - * raise Exception(f"cost_set: value must be numpy array, got {type(value_)}.") - * field = field_.encode('utf-8') - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":600 - * if not isinstance(value_, np.ndarray): - * raise Exception(f"cost_set: value must be numpy array, got {type(value_)}.") - * field = field_.encode('utf-8') # <<<<<<<<<<<<<< - * - * cdef int dims[2] - */ - if (unlikely(__pyx_v_field_ == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); - __PYX_ERR(0, 600, __pyx_L1_error) - } - __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_v_field_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_field = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":604 - * cdef int dims[2] - * acados_solver_common.ocp_nlp_cost_dims_get_from_attr(self.nlp_config, \ - * self.nlp_dims, self.nlp_out, stage, field, &dims[0]) # <<<<<<<<<<<<<< - * - * cdef double[::1,:] value - */ - __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 604, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":603 - * - * cdef int dims[2] - * acados_solver_common.ocp_nlp_cost_dims_get_from_attr(self.nlp_config, \ # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_out, stage, field, &dims[0]) - * - */ - ocp_nlp_cost_dims_get_from_attr(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_out, __pyx_v_stage, __pyx_t_7, (&(__pyx_v_dims[0]))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":608 - * cdef double[::1,:] value - * - * value_shape = value_.shape # <<<<<<<<<<<<<< - * if len(value_shape) == 1: - * value_shape = (value_shape[0], 0) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_value_, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_value_shape = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":609 - * - * value_shape = value_.shape - * if len(value_shape) == 1: # <<<<<<<<<<<<<< - * value_shape = (value_shape[0], 0) - * value = np.asfortranarray(value_[None,:]) - */ - __pyx_t_5 = PyObject_Length(__pyx_v_value_shape); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 609, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_5 == 1); - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":610 - * value_shape = value_.shape - * if len(value_shape) == 1: - * value_shape = (value_shape[0], 0) # <<<<<<<<<<<<<< - * value = np.asfortranarray(value_[None,:]) - * - */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_value_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_0); - __Pyx_GIVEREF(__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_0)) __PYX_ERR(0, 610, __pyx_L1_error); - __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_value_shape, __pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":611 - * if len(value_shape) == 1: - * value_shape = (value_shape[0], 0) - * value = np.asfortranarray(value_[None,:]) # <<<<<<<<<<<<<< - * - * elif len(value_shape) == 2: - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 611, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asfortranarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 611, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_value_, __pyx_tuple__28); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 611, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = NULL; - __pyx_t_10 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_10 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 611, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dcd__double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 611, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_value = __pyx_t_11; - __pyx_t_11.memview = NULL; - __pyx_t_11.data = NULL; - - /* "acados_template/acados_ocp_solver_pyx.pyx":609 - * - * value_shape = value_.shape - * if len(value_shape) == 1: # <<<<<<<<<<<<<< - * value_shape = (value_shape[0], 0) - * value = np.asfortranarray(value_[None,:]) - */ - goto __pyx_L4; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":613 - * value = np.asfortranarray(value_[None,:]) - * - * elif len(value_shape) == 2: # <<<<<<<<<<<<<< - * # Get elements in column major order - * value = np.asfortranarray(value_) - */ - __pyx_t_5 = PyObject_Length(__pyx_v_value_shape); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 613, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_5 == 2); - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":615 - * elif len(value_shape) == 2: - * # Get elements in column major order - * value = np.asfortranarray(value_) # <<<<<<<<<<<<<< - * - * if value_shape[0] != dims[0] or value_shape[1] != dims[1]: - */ - __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 615, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asfortranarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 615, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - __pyx_t_10 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_10 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_value_}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dcd__double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 615, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_value = __pyx_t_11; - __pyx_t_11.memview = NULL; - __pyx_t_11.data = NULL; - - /* "acados_template/acados_ocp_solver_pyx.pyx":613 - * value = np.asfortranarray(value_[None,:]) - * - * elif len(value_shape) == 2: # <<<<<<<<<<<<<< - * # Get elements in column major order - * value = np.asfortranarray(value_) - */ - } - __pyx_L4:; - - /* "acados_template/acados_ocp_solver_pyx.pyx":617 - * value = np.asfortranarray(value_) - * - * if value_shape[0] != dims[0] or value_shape[1] != dims[1]: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.cost_set(): mismatching dimension' + - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_value_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_dims[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (!__pyx_t_3) { - } else { - __pyx_t_4 = __pyx_t_3; - goto __pyx_L6_bool_binop_done; - } - __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_value_shape, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_dims[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyObject_RichCompare(__pyx_t_8, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 617, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_4 = __pyx_t_3; - __pyx_L6_bool_binop_done:; - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":619 - * if value_shape[0] != dims[0] or value_shape[1] != dims[1]: - * raise Exception('AcadosOcpSolverCython.cost_set(): mismatching dimension' + - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') # <<<<<<<<<<<<<< - * - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, \ - */ - __pyx_t_1 = PyTuple_New(9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = 0; - __pyx_t_6 = 127; - __Pyx_INCREF(__pyx_kp_u_for_field); - __pyx_t_5 += 12; - __Pyx_GIVEREF(__pyx_kp_u_for_field); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_for_field); - __pyx_t_2 = __Pyx_PyUnicode_Unicode(__pyx_v_field_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_at_stage); - __pyx_t_5 += 11; - __Pyx_GIVEREF(__pyx_kp_u_at_stage); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_at_stage); - __pyx_t_2 = __Pyx_PyUnicode_From_int(__pyx_v_stage, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_with_dimension); - __pyx_t_5 += 16; - __Pyx_GIVEREF(__pyx_kp_u_with_dimension); - PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_with_dimension); - __pyx_t_2 = __Pyx_carray_to_py_int(__pyx_v_dims, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_you_have); - __pyx_t_5 += 11; - __Pyx_GIVEREF(__pyx_kp_u_you_have); - PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u_you_have); - __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_value_shape, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u__7); - __pyx_t_5 += 1; - __Pyx_GIVEREF(__pyx_kp_u__7); - PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u__7); - __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 9, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":618 - * - * if value_shape[0] != dims[0] or value_shape[1] != dims[1]: - * raise Exception('AcadosOcpSolverCython.cost_set(): mismatching dimension' + # <<<<<<<<<<<<<< - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') - * - */ - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_AcadosOcpSolverCython_cost_set_m, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 618, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 618, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 618, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":617 - * value = np.asfortranarray(value_) - * - * if value_shape[0] != dims[0] or value_shape[1] != dims[1]: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.cost_set(): mismatching dimension' + - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":622 - * - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, \ - * self.nlp_dims, self.nlp_in, stage, field, &value[0][0]) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_12 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 622, __pyx_L1_error) - if (unlikely(!__pyx_v_value.memview)) { __Pyx_RaiseUnboundLocalError("value"); __PYX_ERR(0, 622, __pyx_L1_error) } - __pyx_t_13 = 0; - __pyx_t_14 = 0; - __pyx_t_10 = -1; - if (__pyx_t_13 < 0) { - __pyx_t_13 += __pyx_v_value.shape[0]; - if (unlikely(__pyx_t_13 < 0)) __pyx_t_10 = 0; - } else if (unlikely(__pyx_t_13 >= __pyx_v_value.shape[0])) __pyx_t_10 = 0; - if (__pyx_t_14 < 0) { - __pyx_t_14 += __pyx_v_value.shape[1]; - if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 1; - } else if (unlikely(__pyx_t_14 >= __pyx_v_value.shape[1])) __pyx_t_10 = 1; - if (unlikely(__pyx_t_10 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_10); - __PYX_ERR(0, 622, __pyx_L1_error) - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":621 - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') - * - * acados_solver_common.ocp_nlp_cost_model_set(self.nlp_config, \ # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_in, stage, field, &value[0][0]) - * - */ - (void)(ocp_nlp_cost_model_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_in, __pyx_v_stage, __pyx_t_12, ((void *)(&(*((double *) ( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_value.data) + __pyx_t_13)) ) + __pyx_t_14 * __pyx_v_value.strides[1]) ))))))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":590 - * return - * - * def cost_set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set numerical data in the cost module of the solver. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __PYX_XCLEAR_MEMVIEW(&__pyx_t_11, 1); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.cost_set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_field); - __PYX_XCLEAR_MEMVIEW(&__pyx_v_value, 1); - __Pyx_XDECREF(__pyx_v_value_shape); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":625 - * - * - * def constraints_set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set numerical data in the constraint module of the solver. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_43constraints_set(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_42constraints_set, "\n Set numerical data in the constraint module of the solver.\n\n :param stage: integer corresponding to shooting node\n :param field: string in ['lbx', 'ubx', 'lbu', 'ubu', 'lg', 'ug', 'lh', 'uh', 'uphi', 'C', 'D']\n :param value: of appropriate size\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_43constraints_set = {"constraints_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_43constraints_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_42constraints_set}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_43constraints_set(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - int __pyx_v_stage; - PyObject *__pyx_v_field_ = 0; - PyObject *__pyx_v_value_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("constraints_set (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stage,&__pyx_n_s_field_2,&__pyx_n_s_value,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stage)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 625, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field_2)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 625, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("constraints_set", 1, 3, 3, 1); __PYX_ERR(0, 625, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 625, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("constraints_set", 1, 3, 3, 2); __PYX_ERR(0, 625, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "constraints_set") < 0)) __PYX_ERR(0, 625, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v_stage = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_stage == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 625, __pyx_L3_error) - __pyx_v_field_ = ((PyObject*)values[1]); - __pyx_v_value_ = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("constraints_set", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 625, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.constraints_set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field_), (&PyUnicode_Type), 1, "field_", 1))) __PYX_ERR(0, 625, __pyx_L1_error) - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_42constraints_set(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_stage, __pyx_v_field_, __pyx_v_value_); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_42constraints_set(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_, PyObject *__pyx_v_value_) { - PyObject *__pyx_v_field = NULL; - int __pyx_v_dims[2]; - __Pyx_memviewslice __pyx_v_value = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyObject *__pyx_v_value_shape = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - Py_ssize_t __pyx_t_5; - Py_UCS4 __pyx_t_6; - char const *__pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } }; - char const *__pyx_t_12; - Py_ssize_t __pyx_t_13; - Py_ssize_t __pyx_t_14; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("constraints_set", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":633 - * :param value: of appropriate size - * """ - * if not isinstance(value_, np.ndarray): # <<<<<<<<<<<<<< - * raise Exception(f"constraints_set: value must be numpy array, got {type(value_)}.") - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = PyObject_IsInstance(__pyx_v_value_, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 633, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (!__pyx_t_3); - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":634 - * """ - * if not isinstance(value_, np.ndarray): - * raise Exception(f"constraints_set: value must be numpy array, got {type(value_)}.") # <<<<<<<<<<<<<< - * - * field = field_.encode('utf-8') - */ - __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = 0; - __pyx_t_6 = 127; - __Pyx_INCREF(__pyx_kp_u_constraints_set_value_must_be_nu); - __pyx_t_5 += 48; - __Pyx_GIVEREF(__pyx_kp_u_constraints_set_value_must_be_nu); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_constraints_set_value_must_be_nu); - __pyx_t_1 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_value_)), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); - __pyx_t_1 = 0; - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_5 += 1; - __Pyx_GIVEREF(__pyx_kp_u__2); - PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2); - __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 634, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":633 - * :param value: of appropriate size - * """ - * if not isinstance(value_, np.ndarray): # <<<<<<<<<<<<<< - * raise Exception(f"constraints_set: value must be numpy array, got {type(value_)}.") - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":636 - * raise Exception(f"constraints_set: value must be numpy array, got {type(value_)}.") - * - * field = field_.encode('utf-8') # <<<<<<<<<<<<<< - * - * cdef int dims[2] - */ - if (unlikely(__pyx_v_field_ == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); - __PYX_ERR(0, 636, __pyx_L1_error) - } - __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_v_field_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_field = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":640 - * cdef int dims[2] - * acados_solver_common.ocp_nlp_constraint_dims_get_from_attr(self.nlp_config, \ - * self.nlp_dims, self.nlp_out, stage, field, &dims[0]) # <<<<<<<<<<<<<< - * - * cdef double[::1,:] value - */ - __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":639 - * - * cdef int dims[2] - * acados_solver_common.ocp_nlp_constraint_dims_get_from_attr(self.nlp_config, \ # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_out, stage, field, &dims[0]) - * - */ - ocp_nlp_constraint_dims_get_from_attr(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_out, __pyx_v_stage, __pyx_t_7, (&(__pyx_v_dims[0]))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":644 - * cdef double[::1,:] value - * - * value_shape = value_.shape # <<<<<<<<<<<<<< - * if len(value_shape) == 1: - * value_shape = (value_shape[0], 0) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_value_, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_v_value_shape = __pyx_t_2; - __pyx_t_2 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":645 - * - * value_shape = value_.shape - * if len(value_shape) == 1: # <<<<<<<<<<<<<< - * value_shape = (value_shape[0], 0) - * value = np.asfortranarray(value_[None,:]) - */ - __pyx_t_5 = PyObject_Length(__pyx_v_value_shape); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 645, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_5 == 1); - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":646 - * value_shape = value_.shape - * if len(value_shape) == 1: - * value_shape = (value_shape[0], 0) # <<<<<<<<<<<<<< - * value = np.asfortranarray(value_[None,:]) - * - */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_value_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error); - __Pyx_INCREF(__pyx_int_0); - __Pyx_GIVEREF(__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_0)) __PYX_ERR(0, 646, __pyx_L1_error); - __pyx_t_2 = 0; - __Pyx_DECREF_SET(__pyx_v_value_shape, __pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":647 - * if len(value_shape) == 1: - * value_shape = (value_shape[0], 0) - * value = np.asfortranarray(value_[None,:]) # <<<<<<<<<<<<<< - * - * elif len(value_shape) == 2: - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asfortranarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_value_, __pyx_tuple__28); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = NULL; - __pyx_t_10 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_10 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dcd__double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 647, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_value = __pyx_t_11; - __pyx_t_11.memview = NULL; - __pyx_t_11.data = NULL; - - /* "acados_template/acados_ocp_solver_pyx.pyx":645 - * - * value_shape = value_.shape - * if len(value_shape) == 1: # <<<<<<<<<<<<<< - * value_shape = (value_shape[0], 0) - * value = np.asfortranarray(value_[None,:]) - */ - goto __pyx_L4; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":649 - * value = np.asfortranarray(value_[None,:]) - * - * elif len(value_shape) == 2: # <<<<<<<<<<<<<< - * # Get elements in column major order - * value = np.asfortranarray(value_) - */ - __pyx_t_5 = PyObject_Length(__pyx_v_value_shape); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 649, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_5 == 2); - if (__pyx_t_4) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":651 - * elif len(value_shape) == 2: - * # Get elements in column major order - * value = np.asfortranarray(value_) # <<<<<<<<<<<<<< - * - * if value_shape != tuple(dims): - */ - __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 651, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asfortranarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - __pyx_t_10 = 0; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_10 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_value_}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } - __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dcd__double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 651, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_value = __pyx_t_11; - __pyx_t_11.memview = NULL; - __pyx_t_11.data = NULL; - - /* "acados_template/acados_ocp_solver_pyx.pyx":649 - * value = np.asfortranarray(value_[None,:]) - * - * elif len(value_shape) == 2: # <<<<<<<<<<<<<< - * # Get elements in column major order - * value = np.asfortranarray(value_) - */ - } - __pyx_L4:; - - /* "acados_template/acados_ocp_solver_pyx.pyx":653 - * value = np.asfortranarray(value_) - * - * if value_shape != tuple(dims): # <<<<<<<<<<<<<< - * raise Exception(f'AcadosOcpSolverCython.constraints_set(): mismatching dimension' + - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') - */ - __pyx_t_1 = __Pyx_carray_to_py_int(__pyx_v_dims, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_RichCompare(__pyx_v_value_shape, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 653, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":655 - * if value_shape != tuple(dims): - * raise Exception(f'AcadosOcpSolverCython.constraints_set(): mismatching dimension' + - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') # <<<<<<<<<<<<<< - * - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, \ - */ - __pyx_t_1 = PyTuple_New(9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = 0; - __pyx_t_6 = 127; - __Pyx_INCREF(__pyx_kp_u_for_field); - __pyx_t_5 += 12; - __Pyx_GIVEREF(__pyx_kp_u_for_field); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_for_field); - __pyx_t_2 = __Pyx_PyUnicode_Unicode(__pyx_v_field_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_at_stage); - __pyx_t_5 += 11; - __Pyx_GIVEREF(__pyx_kp_u_at_stage); - PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_at_stage); - __pyx_t_2 = __Pyx_PyUnicode_From_int(__pyx_v_stage, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_with_dimension); - __pyx_t_5 += 16; - __Pyx_GIVEREF(__pyx_kp_u_with_dimension); - PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_with_dimension); - __pyx_t_2 = __Pyx_carray_to_py_int(__pyx_v_dims, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_you_have); - __pyx_t_5 += 11; - __Pyx_GIVEREF(__pyx_kp_u_you_have); - PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u_you_have); - __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_value_shape, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_6; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u__7); - __pyx_t_5 += 1; - __Pyx_GIVEREF(__pyx_kp_u__7); - PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u__7); - __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 9, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":654 - * - * if value_shape != tuple(dims): - * raise Exception(f'AcadosOcpSolverCython.constraints_set(): mismatching dimension' + # <<<<<<<<<<<<<< - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') - * - */ - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_AcadosOcpSolverCython_constraint, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 654, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":653 - * value = np.asfortranarray(value_) - * - * if value_shape != tuple(dims): # <<<<<<<<<<<<<< - * raise Exception(f'AcadosOcpSolverCython.constraints_set(): mismatching dimension' + - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":658 - * - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, \ - * self.nlp_dims, self.nlp_in, stage, field, &value[0][0]) # <<<<<<<<<<<<<< - * - * return - */ - __pyx_t_12 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 658, __pyx_L1_error) - if (unlikely(!__pyx_v_value.memview)) { __Pyx_RaiseUnboundLocalError("value"); __PYX_ERR(0, 658, __pyx_L1_error) } - __pyx_t_13 = 0; - __pyx_t_14 = 0; - __pyx_t_10 = -1; - if (__pyx_t_13 < 0) { - __pyx_t_13 += __pyx_v_value.shape[0]; - if (unlikely(__pyx_t_13 < 0)) __pyx_t_10 = 0; - } else if (unlikely(__pyx_t_13 >= __pyx_v_value.shape[0])) __pyx_t_10 = 0; - if (__pyx_t_14 < 0) { - __pyx_t_14 += __pyx_v_value.shape[1]; - if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 1; - } else if (unlikely(__pyx_t_14 >= __pyx_v_value.shape[1])) __pyx_t_10 = 1; - if (unlikely(__pyx_t_10 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_10); - __PYX_ERR(0, 658, __pyx_L1_error) - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":657 - * f' for field "{field_}" at stage {stage} with dimension {tuple(dims)} (you have {value_shape})') - * - * acados_solver_common.ocp_nlp_constraints_model_set(self.nlp_config, \ # <<<<<<<<<<<<<< - * self.nlp_dims, self.nlp_in, stage, field, &value[0][0]) - * - */ - (void)(ocp_nlp_constraints_model_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_in, __pyx_v_stage, __pyx_t_12, ((void *)(&(*((double *) ( /* dim=1 */ (( /* dim=0 */ ((char *) (((double *) __pyx_v_value.data) + __pyx_t_13)) ) + __pyx_t_14 * __pyx_v_value.strides[1]) ))))))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":660 - * self.nlp_dims, self.nlp_in, stage, field, &value[0][0]) - * - * return # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":625 - * - * - * def constraints_set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set numerical data in the constraint module of the solver. - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __PYX_XCLEAR_MEMVIEW(&__pyx_t_11, 1); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.constraints_set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_field); - __PYX_XCLEAR_MEMVIEW(&__pyx_v_value, 1); - __Pyx_XDECREF(__pyx_v_value_shape); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":663 - * - * - * def get_from_qp_in(self, int stage, str field_): # <<<<<<<<<<<<<< - * """ - * Get numerical data from the dynamics module of the solver: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_45get_from_qp_in(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_44get_from_qp_in, "\n Get numerical data from the dynamics module of the solver:\n\n :param stage: integer corresponding to shooting node\n :param field: string, e.g. 'A'\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_45get_from_qp_in = {"get_from_qp_in", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_45get_from_qp_in, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_44get_from_qp_in}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_45get_from_qp_in(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - int __pyx_v_stage; - PyObject *__pyx_v_field_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[2] = {0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("get_from_qp_in (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stage,&__pyx_n_s_field_2,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stage)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 663, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field_2)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 663, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("get_from_qp_in", 1, 2, 2, 1); __PYX_ERR(0, 663, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_from_qp_in") < 0)) __PYX_ERR(0, 663, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 2)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - } - __pyx_v_stage = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_stage == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 663, __pyx_L3_error) - __pyx_v_field_ = ((PyObject*)values[1]); - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_from_qp_in", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 663, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get_from_qp_in", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field_), (&PyUnicode_Type), 1, "field_", 1))) __PYX_ERR(0, 663, __pyx_L1_error) - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_44get_from_qp_in(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_stage, __pyx_v_field_); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_44get_from_qp_in(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_field_) { - PyObject *__pyx_v_field = NULL; - int __pyx_v_dims[2]; - PyArrayObject *__pyx_v_out = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out; - __Pyx_Buffer __pyx_pybuffer_out; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - char const *__pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyArrayObject *__pyx_t_6 = NULL; - char const *__pyx_t_7; - char *__pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("get_from_qp_in", 1); - __pyx_pybuffer_out.pybuffer.buf = NULL; - __pyx_pybuffer_out.refcount = 0; - __pyx_pybuffernd_out.data = NULL; - __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; - - /* "acados_template/acados_ocp_solver_pyx.pyx":670 - * :param field: string, e.g. 'A' - * """ - * field = field_.encode('utf-8') # <<<<<<<<<<<<<< - * - * # get dims - */ - if (unlikely(__pyx_v_field_ == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); - __PYX_ERR(0, 670, __pyx_L1_error) - } - __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_field_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_field = __pyx_t_1; - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":674 - * # get dims - * cdef int[2] dims - * acados_solver_common.ocp_nlp_qp_dims_get_from_attr(self.nlp_config, self.nlp_dims, self.nlp_out, stage, field, &dims[0]) # <<<<<<<<<<<<<< - * - * # create output data - */ - __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 674, __pyx_L1_error) - ocp_nlp_qp_dims_get_from_attr(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_out, __pyx_v_stage, __pyx_t_2, (&(__pyx_v_dims[0]))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":677 - * - * # create output data - * cdef cnp.ndarray[cnp.float64_t, ndim=2] out = np.zeros((dims[0], dims[1]), order='F') # <<<<<<<<<<<<<< - * - * # call getter - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_dims[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_dims[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4)) __PYX_ERR(0, 677, __pyx_L1_error); - __pyx_t_1 = 0; - __pyx_t_4 = 0; - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_u_F) < 0) __PYX_ERR(0, 677, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 677, __pyx_L1_error) - __pyx_t_6 = ((PyArrayObject *)__pyx_t_1); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { - __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 677, __pyx_L1_error) - } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_out.diminfo[1].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out.diminfo[1].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[1]; - } - } - __pyx_t_6 = 0; - __pyx_v_out = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":680 - * - * # call getter - * acados_solver_common.ocp_nlp_get_at_stage(self.nlp_config, self.nlp_dims, self.nlp_solver, stage, field, out.data) # <<<<<<<<<<<<<< - * - * return out - */ - __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 680, __pyx_L1_error) - __pyx_t_8 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_out)); if (unlikely(__pyx_t_8 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 680, __pyx_L1_error) - ocp_nlp_get_at_stage(__pyx_v_self->nlp_config, __pyx_v_self->nlp_dims, __pyx_v_self->nlp_solver, __pyx_v_stage, __pyx_t_7, ((void *)__pyx_t_8)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":682 - * acados_solver_common.ocp_nlp_get_at_stage(self.nlp_config, self.nlp_dims, self.nlp_solver, stage, field, out.data) - * - * return out # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF((PyObject *)__pyx_v_out); - __pyx_r = ((PyObject *)__pyx_v_out); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":663 - * - * - * def get_from_qp_in(self, int stage, str field_): # <<<<<<<<<<<<<< - * """ - * Get numerical data from the dynamics module of the solver: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.get_from_qp_in", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF(__pyx_v_field); - __Pyx_XDECREF((PyObject *)__pyx_v_out); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":685 - * - * - * def options_set(self, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set options of the solver. - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_47options_set(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_46options_set, "\n Set options of the solver.\n\n :param field: string, e.g. 'print_level', 'rti_phase', 'initialize_t_slacks', 'step_length', 'alpha_min', 'alpha_reduction', 'qp_warm_start', 'line_search_use_sufficient_descent', 'full_step_dual', 'globalization_use_SOC', 'qp_tol_stat', 'qp_tol_eq', 'qp_tol_ineq', 'qp_tol_comp', 'qp_tau_min', 'qp_mu0'\n\n :param value: of type int, float, string\n\n - qp_tol_stat: QP solver tolerance stationarity\n - qp_tol_eq: QP solver tolerance equalities\n - qp_tol_ineq: QP solver tolerance inequalities\n - qp_tol_comp: QP solver tolerance complementarity\n - qp_tau_min: for HPIPM QP solvers: minimum value of barrier parameter in HPIPM\n - qp_mu0: for HPIPM QP solvers: initial value for complementarity slackness\n - warm_start_first_qp: indicates if first QP in SQP is warm_started\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_47options_set = {"options_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_47options_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_46options_set}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_47options_set(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - PyObject *__pyx_v_field_ = 0; - PyObject *__pyx_v_value_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[2] = {0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("options_set (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_field_2,&__pyx_n_s_value,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_field_2)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 685, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 685, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("options_set", 1, 2, 2, 1); __PYX_ERR(0, 685, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "options_set") < 0)) __PYX_ERR(0, 685, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 2)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - } - __pyx_v_field_ = ((PyObject*)values[0]); - __pyx_v_value_ = values[1]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("options_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 685, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.options_set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field_), (&PyUnicode_Type), 1, "field_", 1))) __PYX_ERR(0, 685, __pyx_L1_error) - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_46options_set(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_field_, __pyx_v_value_); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_46options_set(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, PyObject *__pyx_v_field_, PyObject *__pyx_v_value_) { - PyObject *__pyx_v_int_fields = NULL; - PyObject *__pyx_v_double_fields = NULL; - PyObject *__pyx_v_string_fields = NULL; - PyObject *__pyx_v_field = NULL; - int __pyx_v_int_value; - double __pyx_v_double_value; - __Pyx_memviewslice __pyx_v_string_value = { 0, 0, { 0 }, { 0 }, { 0 } }; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - char const *__pyx_t_7; - double __pyx_t_8; - __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } }; - Py_ssize_t __pyx_t_10; - PyObject *__pyx_t_11 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("options_set", 1); - - /* "acados_template/acados_ocp_solver_pyx.pyx":701 - * - warm_start_first_qp: indicates if first QP in SQP is warm_started - * """ - * int_fields = ['print_level', 'rti_phase', 'initialize_t_slacks', 'qp_warm_start', 'line_search_use_sufficient_descent', 'full_step_dual', 'globalization_use_SOC', 'warm_start_first_qp'] # <<<<<<<<<<<<<< - * double_fields = ['step_length', 'tol_eq', 'tol_stat', 'tol_ineq', 'tol_comp', 'alpha_min', 'alpha_reduction', 'eps_sufficient_descent', - * 'qp_tol_stat', 'qp_tol_eq', 'qp_tol_ineq', 'qp_tol_comp', 'qp_tau_min', 'qp_mu0'] - */ - __pyx_t_1 = PyList_New(8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_u_print_level); - __Pyx_GIVEREF(__pyx_n_u_print_level); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_print_level)) __PYX_ERR(0, 701, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_rti_phase); - __Pyx_GIVEREF(__pyx_n_u_rti_phase); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_rti_phase)) __PYX_ERR(0, 701, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_initialize_t_slacks); - __Pyx_GIVEREF(__pyx_n_u_initialize_t_slacks); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_initialize_t_slacks)) __PYX_ERR(0, 701, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_qp_warm_start); - __Pyx_GIVEREF(__pyx_n_u_qp_warm_start); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qp_warm_start)) __PYX_ERR(0, 701, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_line_search_use_sufficient_desce); - __Pyx_GIVEREF(__pyx_n_u_line_search_use_sufficient_desce); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_line_search_use_sufficient_desce)) __PYX_ERR(0, 701, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_full_step_dual); - __Pyx_GIVEREF(__pyx_n_u_full_step_dual); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_full_step_dual)) __PYX_ERR(0, 701, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_globalization_use_SOC); - __Pyx_GIVEREF(__pyx_n_u_globalization_use_SOC); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_u_globalization_use_SOC)) __PYX_ERR(0, 701, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_warm_start_first_qp); - __Pyx_GIVEREF(__pyx_n_u_warm_start_first_qp); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_u_warm_start_first_qp)) __PYX_ERR(0, 701, __pyx_L1_error); - __pyx_v_int_fields = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":702 - * """ - * int_fields = ['print_level', 'rti_phase', 'initialize_t_slacks', 'qp_warm_start', 'line_search_use_sufficient_descent', 'full_step_dual', 'globalization_use_SOC', 'warm_start_first_qp'] - * double_fields = ['step_length', 'tol_eq', 'tol_stat', 'tol_ineq', 'tol_comp', 'alpha_min', 'alpha_reduction', 'eps_sufficient_descent', # <<<<<<<<<<<<<< - * 'qp_tol_stat', 'qp_tol_eq', 'qp_tol_ineq', 'qp_tol_comp', 'qp_tau_min', 'qp_mu0'] - * string_fields = ['globalization'] - */ - __pyx_t_1 = PyList_New(14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_u_step_length); - __Pyx_GIVEREF(__pyx_n_u_step_length); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_step_length)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_tol_eq); - __Pyx_GIVEREF(__pyx_n_u_tol_eq); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_tol_eq)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_tol_stat); - __Pyx_GIVEREF(__pyx_n_u_tol_stat); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_tol_stat)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_tol_ineq); - __Pyx_GIVEREF(__pyx_n_u_tol_ineq); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_tol_ineq)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_tol_comp); - __Pyx_GIVEREF(__pyx_n_u_tol_comp); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_tol_comp)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_alpha_min); - __Pyx_GIVEREF(__pyx_n_u_alpha_min); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_u_alpha_min)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_alpha_reduction); - __Pyx_GIVEREF(__pyx_n_u_alpha_reduction); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_u_alpha_reduction)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_eps_sufficient_descent); - __Pyx_GIVEREF(__pyx_n_u_eps_sufficient_descent); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_u_eps_sufficient_descent)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_qp_tol_stat); - __Pyx_GIVEREF(__pyx_n_u_qp_tol_stat); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 8, __pyx_n_u_qp_tol_stat)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_qp_tol_eq); - __Pyx_GIVEREF(__pyx_n_u_qp_tol_eq); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 9, __pyx_n_u_qp_tol_eq)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_qp_tol_ineq); - __Pyx_GIVEREF(__pyx_n_u_qp_tol_ineq); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 10, __pyx_n_u_qp_tol_ineq)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_qp_tol_comp); - __Pyx_GIVEREF(__pyx_n_u_qp_tol_comp); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 11, __pyx_n_u_qp_tol_comp)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_qp_tau_min); - __Pyx_GIVEREF(__pyx_n_u_qp_tau_min); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 12, __pyx_n_u_qp_tau_min)) __PYX_ERR(0, 702, __pyx_L1_error); - __Pyx_INCREF(__pyx_n_u_qp_mu0); - __Pyx_GIVEREF(__pyx_n_u_qp_mu0); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 13, __pyx_n_u_qp_mu0)) __PYX_ERR(0, 702, __pyx_L1_error); - __pyx_v_double_fields = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":704 - * double_fields = ['step_length', 'tol_eq', 'tol_stat', 'tol_ineq', 'tol_comp', 'alpha_min', 'alpha_reduction', 'eps_sufficient_descent', - * 'qp_tol_stat', 'qp_tol_eq', 'qp_tol_ineq', 'qp_tol_comp', 'qp_tau_min', 'qp_mu0'] - * string_fields = ['globalization'] # <<<<<<<<<<<<<< - * - * # encode - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_u_globalization); - __Pyx_GIVEREF(__pyx_n_u_globalization); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_globalization)) __PYX_ERR(0, 704, __pyx_L1_error); - __pyx_v_string_fields = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":707 - * - * # encode - * field = field_.encode('utf-8') # <<<<<<<<<<<<<< - * - * cdef int int_value - */ - if (unlikely(__pyx_v_field_ == Py_None)) { - PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); - __PYX_ERR(0, 707, __pyx_L1_error) - } - __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_field_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 707, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_field = __pyx_t_1; - __pyx_t_1 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":714 - * - * # check field availability and type - * if field_ in int_fields: # <<<<<<<<<<<<<< - * if not isinstance(value_, int): - * raise Exception('solver option {} must be of type int. You have {}.'.format(field_, type(value_))) - */ - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_int_fields, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 714, __pyx_L1_error) - if (__pyx_t_2) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":715 - * # check field availability and type - * if field_ in int_fields: - * if not isinstance(value_, int): # <<<<<<<<<<<<<< - * raise Exception('solver option {} must be of type int. You have {}.'.format(field_, type(value_))) - * - */ - __pyx_t_2 = PyInt_Check(__pyx_v_value_); - __pyx_t_3 = (!__pyx_t_2); - if (unlikely(__pyx_t_3)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":716 - * if field_ in int_fields: - * if not isinstance(value_, int): - * raise Exception('solver option {} must be of type int. You have {}.'.format(field_, type(value_))) # <<<<<<<<<<<<<< - * - * if field_ == 'rti_phase': - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_solver_option_must_be_of_type_in, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 716, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_field_, ((PyObject *)Py_TYPE(__pyx_v_value_))}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 716, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 716, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 716, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":715 - * # check field availability and type - * if field_ in int_fields: - * if not isinstance(value_, int): # <<<<<<<<<<<<<< - * raise Exception('solver option {} must be of type int. You have {}.'.format(field_, type(value_))) - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":718 - * raise Exception('solver option {} must be of type int. You have {}.'.format(field_, type(value_))) - * - * if field_ == 'rti_phase': # <<<<<<<<<<<<<< - * if value_ < 0 or value_ > 2: - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' - */ - __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_field_, __pyx_n_u_rti_phase, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 718, __pyx_L1_error) - if (__pyx_t_3) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":719 - * - * if field_ == 'rti_phase': - * if value_ < 0 or value_ > 2: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' - * 'take only values 0, 1, 2 for SQP-RTI-type solvers') - */ - __pyx_t_4 = PyObject_RichCompare(__pyx_v_value_, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 719, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 719, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (!__pyx_t_2) { - } else { - __pyx_t_3 = __pyx_t_2; - goto __pyx_L7_bool_binop_done; - } - __pyx_t_4 = PyObject_RichCompare(__pyx_v_value_, __pyx_int_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 719, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 719, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __pyx_t_2; - __pyx_L7_bool_binop_done:; - if (unlikely(__pyx_t_3)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":720 - * if field_ == 'rti_phase': - * if value_ < 0 or value_ > 2: - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' # <<<<<<<<<<<<<< - * 'take only values 0, 1, 2 for SQP-RTI-type solvers') - * if self.nlp_solver_type != 'SQP_RTI' and value_ > 0: - */ - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 720, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 720, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":719 - * - * if field_ == 'rti_phase': - * if value_ < 0 or value_ > 2: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' - * 'take only values 0, 1, 2 for SQP-RTI-type solvers') - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":722 - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' - * 'take only values 0, 1, 2 for SQP-RTI-type solvers') - * if self.nlp_solver_type != 'SQP_RTI' and value_ > 0: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' - * 'take only value 0 for SQP-type solvers') - */ - __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->nlp_solver_type, __pyx_n_u_SQP_RTI, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 722, __pyx_L1_error) - if (__pyx_t_2) { - } else { - __pyx_t_3 = __pyx_t_2; - goto __pyx_L10_bool_binop_done; - } - __pyx_t_4 = PyObject_RichCompare(__pyx_v_value_, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 722, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 722, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_3 = __pyx_t_2; - __pyx_L10_bool_binop_done:; - if (unlikely(__pyx_t_3)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":723 - * 'take only values 0, 1, 2 for SQP-RTI-type solvers') - * if self.nlp_solver_type != 'SQP_RTI' and value_ > 0: - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' # <<<<<<<<<<<<<< - * 'take only value 0 for SQP-type solvers') - * - */ - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 723, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 723, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":722 - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' - * 'take only values 0, 1, 2 for SQP-RTI-type solvers') - * if self.nlp_solver_type != 'SQP_RTI' and value_ > 0: # <<<<<<<<<<<<<< - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' - * 'take only value 0 for SQP-type solvers') - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":718 - * raise Exception('solver option {} must be of type int. You have {}.'.format(field_, type(value_))) - * - * if field_ == 'rti_phase': # <<<<<<<<<<<<<< - * if value_ < 0 or value_ > 2: - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":726 - * 'take only value 0 for SQP-type solvers') - * - * int_value = value_ # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &int_value) - * - */ - __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_value_); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 726, __pyx_L1_error) - __pyx_v_int_value = __pyx_t_6; - - /* "acados_template/acados_ocp_solver_pyx.pyx":727 - * - * int_value = value_ - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &int_value) # <<<<<<<<<<<<<< - * - * elif field_ in double_fields: - */ - __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 727, __pyx_L1_error) - ocp_nlp_solver_opts_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_opts, __pyx_t_7, ((void *)(&__pyx_v_int_value))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":714 - * - * # check field availability and type - * if field_ in int_fields: # <<<<<<<<<<<<<< - * if not isinstance(value_, int): - * raise Exception('solver option {} must be of type int. You have {}.'.format(field_, type(value_))) - */ - goto __pyx_L3; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":729 - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &int_value) - * - * elif field_ in double_fields: # <<<<<<<<<<<<<< - * if not isinstance(value_, float): - * raise Exception('solver option {} must be of type float. You have {}.'.format(field_, type(value_))) - */ - __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_double_fields, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 729, __pyx_L1_error) - if (__pyx_t_3) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":730 - * - * elif field_ in double_fields: - * if not isinstance(value_, float): # <<<<<<<<<<<<<< - * raise Exception('solver option {} must be of type float. You have {}.'.format(field_, type(value_))) - * - */ - __pyx_t_3 = PyFloat_Check(__pyx_v_value_); - __pyx_t_2 = (!__pyx_t_3); - if (unlikely(__pyx_t_2)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":731 - * elif field_ in double_fields: - * if not isinstance(value_, float): - * raise Exception('solver option {} must be of type float. You have {}.'.format(field_, type(value_))) # <<<<<<<<<<<<<< - * - * double_value = value_ - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_solver_option_must_be_of_type_fl, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_field_, ((PyObject *)Py_TYPE(__pyx_v_value_))}; - __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 731, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 731, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":730 - * - * elif field_ in double_fields: - * if not isinstance(value_, float): # <<<<<<<<<<<<<< - * raise Exception('solver option {} must be of type float. You have {}.'.format(field_, type(value_))) - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":733 - * raise Exception('solver option {} must be of type float. You have {}.'.format(field_, type(value_))) - * - * double_value = value_ # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &double_value) - * - */ - __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_value_); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 733, __pyx_L1_error) - __pyx_v_double_value = __pyx_t_8; - - /* "acados_template/acados_ocp_solver_pyx.pyx":734 - * - * double_value = value_ - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &double_value) # <<<<<<<<<<<<<< - * - * elif field_ in string_fields: - */ - __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 734, __pyx_L1_error) - ocp_nlp_solver_opts_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_opts, __pyx_t_7, ((void *)(&__pyx_v_double_value))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":729 - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &int_value) - * - * elif field_ in double_fields: # <<<<<<<<<<<<<< - * if not isinstance(value_, float): - * raise Exception('solver option {} must be of type float. You have {}.'.format(field_, type(value_))) - */ - goto __pyx_L3; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":736 - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &double_value) - * - * elif field_ in string_fields: # <<<<<<<<<<<<<< - * if not isinstance(value_, bytes): - * raise Exception('solver option {} must be of type str. You have {}.'.format(field_, type(value_))) - */ - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_field_, __pyx_v_string_fields, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 736, __pyx_L1_error) - if (likely(__pyx_t_2)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":737 - * - * elif field_ in string_fields: - * if not isinstance(value_, bytes): # <<<<<<<<<<<<<< - * raise Exception('solver option {} must be of type str. You have {}.'.format(field_, type(value_))) - * - */ - __pyx_t_2 = PyBytes_Check(__pyx_v_value_); - __pyx_t_3 = (!__pyx_t_2); - if (unlikely(__pyx_t_3)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":738 - * elif field_ in string_fields: - * if not isinstance(value_, bytes): - * raise Exception('solver option {} must be of type str. You have {}.'.format(field_, type(value_))) # <<<<<<<<<<<<<< - * - * string_value = value_.encode('utf-8') - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_solver_option_must_be_of_type_st, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 738, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_field_, ((PyObject *)Py_TYPE(__pyx_v_value_))}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 738, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } - __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 738, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_Raise(__pyx_t_4, 0, 0, 0); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __PYX_ERR(0, 738, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":737 - * - * elif field_ in string_fields: - * if not isinstance(value_, bytes): # <<<<<<<<<<<<<< - * raise Exception('solver option {} must be of type str. You have {}.'.format(field_, type(value_))) - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":740 - * raise Exception('solver option {} must be of type str. You have {}.'.format(field_, type(value_))) - * - * string_value = value_.encode('utf-8') # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &string_value[0]) - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value_, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_kp_u_utf_8}; - __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 740, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_string_value = __pyx_t_9; - __pyx_t_9.memview = NULL; - __pyx_t_9.data = NULL; - - /* "acados_template/acados_ocp_solver_pyx.pyx":741 - * - * string_value = value_.encode('utf-8') - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &string_value[0]) # <<<<<<<<<<<<<< - * - * else: - */ - __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_field); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 741, __pyx_L1_error) - __pyx_t_10 = 0; - __pyx_t_6 = -1; - if (__pyx_t_10 < 0) { - __pyx_t_10 += __pyx_v_string_value.shape[0]; - if (unlikely(__pyx_t_10 < 0)) __pyx_t_6 = 0; - } else if (unlikely(__pyx_t_10 >= __pyx_v_string_value.shape[0])) __pyx_t_6 = 0; - if (unlikely(__pyx_t_6 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_6); - __PYX_ERR(0, 741, __pyx_L1_error) - } - ocp_nlp_solver_opts_set(__pyx_v_self->nlp_config, __pyx_v_self->nlp_opts, __pyx_t_7, ((void *)(&(*((unsigned char *) ( /* dim=0 */ ((char *) (((unsigned char *) __pyx_v_string_value.data) + __pyx_t_10)) )))))); - - /* "acados_template/acados_ocp_solver_pyx.pyx":736 - * acados_solver_common.ocp_nlp_solver_opts_set(self.nlp_config, self.nlp_opts, field, &double_value) - * - * elif field_ in string_fields: # <<<<<<<<<<<<<< - * if not isinstance(value_, bytes): - * raise Exception('solver option {} must be of type str. You have {}.'.format(field_, type(value_))) - */ - goto __pyx_L3; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":744 - * - * else: - * raise Exception('AcadosOcpSolverCython.options_set() does not support field {}.'\ # <<<<<<<<<<<<<< - * '\n Possible values are {}.'.format(field_, ', '.join(int_fields + double_fields + string_fields))) - * - */ - /*else*/ { - - /* "acados_template/acados_ocp_solver_pyx.pyx":745 - * else: - * raise Exception('AcadosOcpSolverCython.options_set() does not support field {}.'\ - * '\n Possible values are {}.'.format(field_, ', '.join(int_fields + double_fields + string_fields))) # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_AcadosOcpSolverCython_options_se, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 745, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyNumber_Add(__pyx_v_int_fields, __pyx_v_double_fields); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 745, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_11 = PyNumber_Add(__pyx_t_5, __pyx_v_string_fields); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 745, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyUnicode_Join(__pyx_kp_u__31, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 745, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __pyx_t_11 = NULL; - __pyx_t_6 = 0; - #if CYTHON_UNPACK_METHODS - if (likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_v_field_, __pyx_t_5}; - __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6); - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 745, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":744 - * - * else: - * raise Exception('AcadosOcpSolverCython.options_set() does not support field {}.'\ # <<<<<<<<<<<<<< - * '\n Possible values are {}.'.format(field_, ', '.join(int_fields + double_fields + string_fields))) - * - */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_t_1, 0, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 744, __pyx_L1_error) - } - __pyx_L3:; - - /* "acados_template/acados_ocp_solver_pyx.pyx":685 - * - * - * def options_set(self, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set options of the solver. - */ - - /* function exit code */ - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __PYX_XCLEAR_MEMVIEW(&__pyx_t_9, 1); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.options_set", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_int_fields); - __Pyx_XDECREF(__pyx_v_double_fields); - __Pyx_XDECREF(__pyx_v_string_fields); - __Pyx_XDECREF(__pyx_v_field); - __PYX_XCLEAR_MEMVIEW(&__pyx_v_string_value, 1); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":748 - * - * - * def set_params_sparse(self, int stage, idx_values_, param_values_): # <<<<<<<<<<<<<< - * """ - * set parameters of the solvers external function partially: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_49set_params_sparse(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -PyDoc_STRVAR(__pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_48set_params_sparse, "\n set parameters of the solvers external function partially:\n Pseudo: solver.param[idx_values_] = param_values_;\n Parameters:\n :param stage_: integer corresponding to shooting node\n :param idx_values_: 0 based integer array corresponding to parameter indices to be set\n :param param_values_: new parameter values as numpy array\n "); -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_49set_params_sparse = {"set_params_sparse", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_49set_params_sparse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_48set_params_sparse}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_49set_params_sparse(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - int __pyx_v_stage; - PyObject *__pyx_v_idx_values_ = 0; - PyObject *__pyx_v_param_values_ = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[3] = {0,0,0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_params_sparse (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stage,&__pyx_n_s_idx_values,&__pyx_n_s_param_values,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stage)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 748, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_idx_values)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 748, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("set_params_sparse", 1, 3, 3, 1); __PYX_ERR(0, 748, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_param_values)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 748, __pyx_L3_error) - else { - __Pyx_RaiseArgtupleInvalid("set_params_sparse", 1, 3, 3, 2); __PYX_ERR(0, 748, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_params_sparse") < 0)) __PYX_ERR(0, 748, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 3)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); - values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); - } - __pyx_v_stage = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_stage == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 748, __pyx_L3_error) - __pyx_v_idx_values_ = values[1]; - __pyx_v_param_values_ = values[2]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set_params_sparse", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 748, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.set_params_sparse", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_48set_params_sparse(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v_stage, __pyx_v_idx_values_, __pyx_v_param_values_); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_48set_params_sparse(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, int __pyx_v_stage, PyObject *__pyx_v_idx_values_, PyObject *__pyx_v_param_values_) { - PyArrayObject *__pyx_v_value = 0; - PyArrayObject *__pyx_v_idx = 0; - int __pyx_v_n_update; - __Pyx_LocalBuf_ND __pyx_pybuffernd_idx; - __Pyx_Buffer __pyx_pybuffer_idx; - __Pyx_LocalBuf_ND __pyx_pybuffernd_value; - __Pyx_Buffer __pyx_pybuffer_value; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; - int __pyx_t_4; - Py_ssize_t __pyx_t_5; - PyObject *__pyx_t_6 = NULL; - Py_UCS4 __pyx_t_7; - Py_ssize_t __pyx_t_8; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyArrayObject *__pyx_t_11 = NULL; - PyArrayObject *__pyx_t_12 = NULL; - npy_intp *__pyx_t_13; - char *__pyx_t_14; - char *__pyx_t_15; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("set_params_sparse", 1); - __pyx_pybuffer_value.pybuffer.buf = NULL; - __pyx_pybuffer_value.refcount = 0; - __pyx_pybuffernd_value.data = NULL; - __pyx_pybuffernd_value.rcbuffer = &__pyx_pybuffer_value; - __pyx_pybuffer_idx.pybuffer.buf = NULL; - __pyx_pybuffer_idx.refcount = 0; - __pyx_pybuffernd_idx.data = NULL; - __pyx_pybuffernd_idx.rcbuffer = &__pyx_pybuffer_idx; - - /* "acados_template/acados_ocp_solver_pyx.pyx":758 - * """ - * - * if not isinstance(param_values_, np.ndarray): # <<<<<<<<<<<<<< - * raise Exception('param_values_ must be np.array.') - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 758, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = PyObject_IsInstance(__pyx_v_param_values_, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 758, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = (!__pyx_t_3); - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":759 - * - * if not isinstance(param_values_, np.ndarray): - * raise Exception('param_values_ must be np.array.') # <<<<<<<<<<<<<< - * - * if param_values_.shape[0] != len(idx_values_): - */ - __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 759, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":758 - * """ - * - * if not isinstance(param_values_, np.ndarray): # <<<<<<<<<<<<<< - * raise Exception('param_values_ must be np.array.') - * - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":761 - * raise Exception('param_values_ must be np.array.') - * - * if param_values_.shape[0] != len(idx_values_): # <<<<<<<<<<<<<< - * raise Exception(f'param_values_ and idx_values_ must be of the same size.' + - * f' Got sizes idx {param_values_.shape[0]}, param_values {len(idx_values_)}.') - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_param_values_, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 761, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 761, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = PyObject_Length(__pyx_v_idx_values_); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 761, __pyx_L1_error) - __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 761, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 761, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 761, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(__pyx_t_4)) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":763 - * if param_values_.shape[0] != len(idx_values_): - * raise Exception(f'param_values_ and idx_values_ must be of the same size.' + - * f' Got sizes idx {param_values_.shape[0]}, param_values {len(idx_values_)}.') # <<<<<<<<<<<<<< - * - * # n_update = c_int(len(param_values_)) - */ - __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 763, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = 0; - __pyx_t_7 = 127; - __Pyx_INCREF(__pyx_kp_u_Got_sizes_idx); - __pyx_t_5 += 15; - __Pyx_GIVEREF(__pyx_kp_u_Got_sizes_idx); - PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_Got_sizes_idx); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_param_values_, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 763, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 763, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 763, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_7; - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u_param_values_2); - __pyx_t_5 += 15; - __Pyx_GIVEREF(__pyx_kp_u_param_values_2); - PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_kp_u_param_values_2); - __pyx_t_8 = PyObject_Length(__pyx_v_idx_values_); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 763, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_8, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 763, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_2); - __pyx_t_2 = 0; - __Pyx_INCREF(__pyx_kp_u__2); - __pyx_t_5 += 1; - __Pyx_GIVEREF(__pyx_kp_u__2); - PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_kp_u__2); - __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 763, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":762 - * - * if param_values_.shape[0] != len(idx_values_): - * raise Exception(f'param_values_ and idx_values_ must be of the same size.' + # <<<<<<<<<<<<<< - * f' Got sizes idx {param_values_.shape[0]}, param_values {len(idx_values_)}.') - * - */ - __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u_param_values__and_idx_values__mu, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_Raise(__pyx_t_2, 0, 0, 0); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 762, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":761 - * raise Exception('param_values_ must be np.array.') - * - * if param_values_.shape[0] != len(idx_values_): # <<<<<<<<<<<<<< - * raise Exception(f'param_values_ and idx_values_ must be of the same size.' + - * f' Got sizes idx {param_values_.shape[0]}, param_values {len(idx_values_)}.') - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":777 - * # (self.capsule, stage, idx_data, param_data, n_update) - * - * cdef cnp.ndarray[cnp.float64_t, ndim=1] value = np.ascontiguousarray(param_values_, dtype=np.float64) # <<<<<<<<<<<<<< - * # cdef cnp.ndarray[cnp.intc, ndim=1] idx = np.ascontiguousarray(idx_values_, dtype=np.intc) - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_param_values_); - __Pyx_GIVEREF(__pyx_v_param_values_); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_param_values_)) __PYX_ERR(0, 777, __pyx_L1_error); - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 777, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 777, __pyx_L1_error) - __pyx_t_11 = ((PyArrayObject *)__pyx_t_10); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_value.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_value = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_value.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 777, __pyx_L1_error) - } else {__pyx_pybuffernd_value.diminfo[0].strides = __pyx_pybuffernd_value.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_value.diminfo[0].shape = __pyx_pybuffernd_value.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_11 = 0; - __pyx_v_value = ((PyArrayObject *)__pyx_t_10); - __pyx_t_10 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":784 - * # cdef cnp.ndarray[cnp.int, ndim=1] idx = np.ascontiguousarray(idx_values_, dtype=np.intc) - * - * cdef cnp.ndarray[cnp.int32_t, ndim=1] idx = np.ascontiguousarray(idx_values_, dtype=np.int32) # <<<<<<<<<<<<<< - * cdef int n_update = value.shape[0] - * # print(f"in set_params_sparse Cython n_update {n_update}") - */ - __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 784, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 784, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __Pyx_INCREF(__pyx_v_idx_values_); - __Pyx_GIVEREF(__pyx_v_idx_values_); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_idx_values_)) __PYX_ERR(0, 784, __pyx_L1_error); - __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 784, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 784, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 784, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 784, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 784, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 784, __pyx_L1_error) - __pyx_t_12 = ((PyArrayObject *)__pyx_t_9); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_idx.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_idx = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_idx.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 784, __pyx_L1_error) - } else {__pyx_pybuffernd_idx.diminfo[0].strides = __pyx_pybuffernd_idx.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_idx.diminfo[0].shape = __pyx_pybuffernd_idx.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_12 = 0; - __pyx_v_idx = ((PyArrayObject *)__pyx_t_9); - __pyx_t_9 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":785 - * - * cdef cnp.ndarray[cnp.int32_t, ndim=1] idx = np.ascontiguousarray(idx_values_, dtype=np.int32) - * cdef int n_update = value.shape[0] # <<<<<<<<<<<<<< - * # print(f"in set_params_sparse Cython n_update {n_update}") - * - */ - __pyx_t_13 = __pyx_f_5numpy_7ndarray_5shape_shape(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_13 == ((npy_intp *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 785, __pyx_L1_error) - __pyx_v_n_update = (__pyx_t_13[0]); - - /* "acados_template/acados_ocp_solver_pyx.pyx":788 - * # print(f"in set_params_sparse Cython n_update {n_update}") - * - * assert acados_solver.acados_update_params_sparse(self.capsule, stage, idx.data, value.data, n_update) == 0 # <<<<<<<<<<<<<< - * return - * - */ - #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(__pyx_assertions_enabled())) { - __pyx_t_14 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_idx)); if (unlikely(__pyx_t_14 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 788, __pyx_L1_error) - __pyx_t_15 = __pyx_f_5numpy_7ndarray_4data_data(((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_15 == ((char *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 788, __pyx_L1_error) - __pyx_t_4 = (lat_acados_update_params_sparse(__pyx_v_self->capsule, __pyx_v_stage, ((int *)__pyx_t_14), ((double *)__pyx_t_15), __pyx_v_n_update) == 0); - if (unlikely(!__pyx_t_4)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(0, 788, __pyx_L1_error) - } - } - #else - if ((1)); else __PYX_ERR(0, 788, __pyx_L1_error) - #endif - - /* "acados_template/acados_ocp_solver_pyx.pyx":789 - * - * assert acados_solver.acados_update_params_sparse(self.capsule, stage, idx.data, value.data, n_update) == 0 - * return # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":748 - * - * - * def set_params_sparse(self, int stage, idx_values_, param_values_): # <<<<<<<<<<<<<< - * """ - * set parameters of the solvers external function partially: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_idx.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_value.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.set_params_sparse", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_idx.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_value.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_value); - __Pyx_XDECREF((PyObject *)__pyx_v_idx); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "acados_template/acados_ocp_solver_pyx.pyx":792 - * - * - * def __del__(self): # <<<<<<<<<<<<<< - * if self.solver_created: - * acados_solver.acados_free(self.capsule) - */ - -/* Python wrapper */ -static void __pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_51__del__(PyObject *__pyx_v_self); /*proto*/ -static void __pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_51__del__(PyObject *__pyx_v_self) { - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); - __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_50__del__(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -static void __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_50__del__(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":793 - * - * def __del__(self): - * if self.solver_created: # <<<<<<<<<<<<<< - * acados_solver.acados_free(self.capsule) - * acados_solver.acados_free_capsule(self.capsule) - */ - if (__pyx_v_self->solver_created) { - - /* "acados_template/acados_ocp_solver_pyx.pyx":794 - * def __del__(self): - * if self.solver_created: - * acados_solver.acados_free(self.capsule) # <<<<<<<<<<<<<< - * acados_solver.acados_free_capsule(self.capsule) - */ - (void)(lat_acados_free(__pyx_v_self->capsule)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":795 - * if self.solver_created: - * acados_solver.acados_free(self.capsule) - * acados_solver.acados_free_capsule(self.capsule) # <<<<<<<<<<<<<< - */ - (void)(lat_acados_free_capsule(__pyx_v_self->capsule)); - - /* "acados_template/acados_ocp_solver_pyx.pyx":793 - * - * def __del__(self): - * if self.solver_created: # <<<<<<<<<<<<<< - * acados_solver.acados_free(self.capsule) - * acados_solver.acados_free_capsule(self.capsule) - */ - } - - /* "acados_template/acados_ocp_solver_pyx.pyx":792 - * - * - * def __del__(self): # <<<<<<<<<<<<<< - * if self.solver_created: - * acados_solver.acados_free(self.capsule) - */ - - /* function exit code */ -} - -/* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_53__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_53__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_53__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_53__reduce_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - if (unlikely(__pyx_nargs > 0)) { - __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} - if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_52__reduce_cython__(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self)); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_52__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__reduce_cython__", 1); - - /* "(tree fragment)":2 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 2, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_55__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -); /*proto*/ -static PyMethodDef __pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_55__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_55__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_55__setstate_cython__(PyObject *__pyx_v_self, -#if CYTHON_METH_FASTCALL -PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds -#else -PyObject *__pyx_args, PyObject *__pyx_kwds -#endif -) { - CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; - #if !CYTHON_METH_FASTCALL - CYTHON_UNUSED Py_ssize_t __pyx_nargs; - #endif - CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - PyObject* values[1] = {0}; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); - #if !CYTHON_METH_FASTCALL - #if CYTHON_ASSUME_SAFE_MACROS - __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); - #else - __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; - #endif - #endif - __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); - { - PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; - if (__pyx_kwds) { - Py_ssize_t kw_args; - switch (__pyx_nargs) { - case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); - switch (__pyx_nargs) { - case 0: - if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { - (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); - kw_args--; - } - else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3, __pyx_L3_error) - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(1, 3, __pyx_L3_error) - } - } else if (unlikely(__pyx_nargs != 1)) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); - } - __pyx_v___pyx_state = values[0]; - } - goto __pyx_L6_skip; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error) - __pyx_L6_skip:; - goto __pyx_L4_argument_unpacking_done; - __pyx_L3_error:; - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_54__setstate_cython__(((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)__pyx_v_self), __pyx_v___pyx_state); - - /* function exit code */ - { - Py_ssize_t __pyx_temp; - for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); - } - } - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_54__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__setstate_cython__", 1); - - /* "(tree fragment)":4 - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< - */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0); - __PYX_ERR(1, 4, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_AddTraceback("acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_tp_new_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)o); - p->model_name = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->nlp_solver_type = ((PyObject*)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_1__cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -#if CYTHON_USE_TP_FINALIZE -static void __pyx_tp_finalize_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython(PyObject *o) { - PyObject *etype, *eval, *etb; - PyErr_Fetch(&etype, &eval, &etb); - __pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_51__del__(o); - PyErr_Restore(etype, eval, etb); -} -#endif - -static void __pyx_tp_dealloc_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython(PyObject *o) { - struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *p = (struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - Py_CLEAR(p->model_name); - Py_CLEAR(p->nlp_solver_type); - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} - -static PyMethodDef __pyx_methods_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython[] = { - {"_AcadosOcpSolverCython__get_pointers_solver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_3_AcadosOcpSolverCython__get_pointers_solver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_2__get_pointers_solver}, - {"solve_for_x0", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_5solve_for_x0, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_4solve_for_x0}, - {"solve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_7solve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_6solve}, - {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_9reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_8reset}, - {"custom_update", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_11custom_update, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_10custom_update}, - {"set_new_time_steps", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13set_new_time_steps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_12set_new_time_steps}, - {"update_qp_solver_cond_N", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_15update_qp_solver_cond_N, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_14update_qp_solver_cond_N}, - {"eval_param_sens", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_17eval_param_sens, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_16eval_param_sens}, - {"get", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_19get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_18get}, - {"print_statistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_21print_statistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_20print_statistics}, - {"store_iterate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_23store_iterate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_22store_iterate}, - {"load_iterate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_25load_iterate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_24load_iterate}, - {"get_stats", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_27get_stats, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_26get_stats}, - {"_AcadosOcpSolverCython__get_stat_int", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_29_AcadosOcpSolverCython__get_stat_int, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"_AcadosOcpSolverCython__get_stat_double", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_31_AcadosOcpSolverCython__get_stat_double, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"_AcadosOcpSolverCython__get_stat_matrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_33_AcadosOcpSolverCython__get_stat_matrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"get_cost", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_35get_cost, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_34get_cost}, - {"get_residuals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_37get_residuals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_36get_residuals}, - {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_39set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_38set}, - {"cost_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_41cost_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_40cost_set}, - {"constraints_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_43constraints_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_42constraints_set}, - {"get_from_qp_in", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_45get_from_qp_in, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_44get_from_qp_in}, - {"options_set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_47options_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_46options_set}, - {"set_params_sparse", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_49set_params_sparse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_48set_params_sparse}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_53__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_55__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython}, - {Py_tp_doc, (void *)PyDoc_STR("\n Class to interact with the acados ocp solver C object.\n ")}, - {Py_tp_methods, (void *)__pyx_methods_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython}, - {Py_tp_new, (void *)__pyx_tp_new_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython}, - #if PY_VERSION_HEX >= 0x030400a1 - {Py_tp_finalize, (void *)__pyx_tp_finalize_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython}, - #endif - {0, 0}, -}; -static PyType_Spec __pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython_spec = { - "acados_template.acados_ocp_solver_pyx.AcadosOcpSolverCython", - sizeof(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_FINALIZE, - __pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython_slots, -}; -#else - -static PyTypeObject __pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython = { - PyVarObject_HEAD_INIT(0, 0) - "acados_template.acados_ocp_solver_pyx.""AcadosOcpSolverCython", /*tp_name*/ - sizeof(struct __pyx_obj_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/ - PyDoc_STR("\n Class to interact with the acados ocp solver C object.\n "), /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - __pyx_tp_finalize_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif -static struct __pyx_vtabstruct_array __pyx_vtable_array; - -static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_array_obj *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_array_obj *)o); - p->__pyx_vtab = __pyx_vtabptr_array; - p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None); - p->_format = ((PyObject*)Py_None); Py_INCREF(Py_None); - if (unlikely(__pyx_array___cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_array(PyObject *o) { - struct __pyx_array_obj *p = (struct __pyx_array_obj *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_array) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - { - PyObject *etype, *eval, *etb; - PyErr_Fetch(&etype, &eval, &etb); - __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); - __pyx_array___dealloc__(o); - __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); - PyErr_Restore(etype, eval, etb); - } - Py_CLEAR(p->mode); - Py_CLEAR(p->_format); - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} -static PyObject *__pyx_sq_item_array(PyObject *o, Py_ssize_t i) { - PyObject *r; - PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0; - r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); - Py_DECREF(x); - return r; -} - -static int __pyx_mp_ass_subscript_array(PyObject *o, PyObject *i, PyObject *v) { - if (v) { - return __pyx_array___setitem__(o, i, v); - } - else { - __Pyx_TypeName o_type_name; - o_type_name = __Pyx_PyType_GetName(Py_TYPE(o)); - PyErr_Format(PyExc_NotImplementedError, - "Subscript deletion not supported by " __Pyx_FMT_TYPENAME, o_type_name); - __Pyx_DECREF_TypeName(o_type_name); - return -1; - } -} - -static PyObject *__pyx_tp_getattro_array(PyObject *o, PyObject *n) { - PyObject *v = __Pyx_PyObject_GenericGetAttr(o, n); - if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - v = __pyx_array___getattr__(o, n); - } - return v; -} - -static PyObject *__pyx_getprop___pyx_array_memview(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(o); -} - -static PyMethodDef __pyx_methods_array[] = { - {"__getattr__", (PyCFunction)__pyx_array___getattr__, METH_O|METH_COEXIST, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_array_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_array_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_array[] = { - {(char *)"memview", __pyx_getprop___pyx_array_memview, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -#if !CYTHON_COMPILING_IN_LIMITED_API - -static PyBufferProcs __pyx_tp_as_buffer_array = { - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getreadbuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getwritebuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getsegcount*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getcharbuffer*/ - #endif - __pyx_array_getbuffer, /*bf_getbuffer*/ - 0, /*bf_releasebuffer*/ -}; -#endif -static PyType_Slot __pyx_type___pyx_array_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_array}, - {Py_sq_length, (void *)__pyx_array___len__}, - {Py_sq_item, (void *)__pyx_sq_item_array}, - {Py_mp_length, (void *)__pyx_array___len__}, - {Py_mp_subscript, (void *)__pyx_array___getitem__}, - {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_array}, - {Py_tp_getattro, (void *)__pyx_tp_getattro_array}, - #if defined(Py_bf_getbuffer) - {Py_bf_getbuffer, (void *)__pyx_array_getbuffer}, - #endif - {Py_tp_methods, (void *)__pyx_methods_array}, - {Py_tp_getset, (void *)__pyx_getsets_array}, - {Py_tp_new, (void *)__pyx_tp_new_array}, - {0, 0}, -}; -static PyType_Spec __pyx_type___pyx_array_spec = { - "acados_template.acados_ocp_solver_pyx.array", - sizeof(struct __pyx_array_obj), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_SEQUENCE, - __pyx_type___pyx_array_slots, -}; -#else - -static PySequenceMethods __pyx_tp_as_sequence_array = { - __pyx_array___len__, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - __pyx_sq_item_array, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; - -static PyMappingMethods __pyx_tp_as_mapping_array = { - __pyx_array___len__, /*mp_length*/ - __pyx_array___getitem__, /*mp_subscript*/ - __pyx_mp_ass_subscript_array, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_array = { - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getreadbuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getwritebuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getsegcount*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getcharbuffer*/ - #endif - __pyx_array_getbuffer, /*bf_getbuffer*/ - 0, /*bf_releasebuffer*/ -}; - -static PyTypeObject __pyx_type___pyx_array = { - PyVarObject_HEAD_INIT(0, 0) - "acados_template.acados_ocp_solver_pyx.""array", /*tp_name*/ - sizeof(struct __pyx_array_obj), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_array, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - &__pyx_tp_as_sequence_array, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_array, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - __pyx_tp_getattro_array, /*tp_getattro*/ - 0, /*tp_setattro*/ - &__pyx_tp_as_buffer_array, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_SEQUENCE, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_array, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_array, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_array, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_MemviewEnum_obj *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_MemviewEnum_obj *)o); - p->name = Py_None; Py_INCREF(Py_None); - return o; -} - -static void __pyx_tp_dealloc_Enum(PyObject *o) { - struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_Enum) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - Py_CLEAR(p->name); - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} - -static int __pyx_tp_traverse_Enum(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; - if (p->name) { - e = (*v)(p->name, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_Enum(PyObject *o) { - PyObject* tmp; - struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; - tmp = ((PyObject*)p->name); - p->name = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyObject *__pyx_specialmethod___pyx_MemviewEnum___repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) { - return __pyx_MemviewEnum___repr__(self); -} - -static PyMethodDef __pyx_methods_Enum[] = { - {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_MemviewEnum___repr__, METH_NOARGS|METH_COEXIST, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_MemviewEnum_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_MemviewEnum_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type___pyx_MemviewEnum_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_Enum}, - {Py_tp_repr, (void *)__pyx_MemviewEnum___repr__}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_Enum}, - {Py_tp_clear, (void *)__pyx_tp_clear_Enum}, - {Py_tp_methods, (void *)__pyx_methods_Enum}, - {Py_tp_init, (void *)__pyx_MemviewEnum___init__}, - {Py_tp_new, (void *)__pyx_tp_new_Enum}, - {0, 0}, -}; -static PyType_Spec __pyx_type___pyx_MemviewEnum_spec = { - "acados_template.acados_ocp_solver_pyx.Enum", - sizeof(struct __pyx_MemviewEnum_obj), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type___pyx_MemviewEnum_slots, -}; -#else - -static PyTypeObject __pyx_type___pyx_MemviewEnum = { - PyVarObject_HEAD_INIT(0, 0) - "acados_template.acados_ocp_solver_pyx.""Enum", /*tp_name*/ - sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_Enum, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_MemviewEnum___repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_Enum, /*tp_traverse*/ - __pyx_tp_clear_Enum, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_Enum, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - __pyx_MemviewEnum___init__, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_Enum, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif -static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview; - -static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_memoryview_obj *p; - PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); - } - if (unlikely(!o)) return 0; - #endif - p = ((struct __pyx_memoryview_obj *)o); - p->__pyx_vtab = __pyx_vtabptr_memoryview; - p->obj = Py_None; Py_INCREF(Py_None); - p->_size = Py_None; Py_INCREF(Py_None); - p->_array_interface = Py_None; Py_INCREF(Py_None); - p->view.obj = NULL; - if (unlikely(__pyx_memoryview___cinit__(o, a, k) < 0)) goto bad; - return o; - bad: - Py_DECREF(o); o = 0; - return NULL; -} - -static void __pyx_tp_dealloc_memoryview(PyObject *o) { - struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_memoryview) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - { - PyObject *etype, *eval, *etb; - PyErr_Fetch(&etype, &eval, &etb); - __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); - __pyx_memoryview___dealloc__(o); - __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); - PyErr_Restore(etype, eval, etb); - } - Py_CLEAR(p->obj); - Py_CLEAR(p->_size); - Py_CLEAR(p->_array_interface); - #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - (*Py_TYPE(o)->tp_free)(o); - #else - { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); - if (tp_free) tp_free(o); - } - #endif -} - -static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; - if (p->obj) { - e = (*v)(p->obj, a); if (e) return e; - } - if (p->_size) { - e = (*v)(p->_size, a); if (e) return e; - } - if (p->_array_interface) { - e = (*v)(p->_array_interface, a); if (e) return e; - } - if (p->view.obj) { - e = (*v)(p->view.obj, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_memoryview(PyObject *o) { - PyObject* tmp; - struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; - tmp = ((PyObject*)p->obj); - p->obj = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_size); - p->_size = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->_array_interface); - p->_array_interface = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - Py_CLEAR(p->view.obj); - return 0; -} -static PyObject *__pyx_sq_item_memoryview(PyObject *o, Py_ssize_t i) { - PyObject *r; - PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0; - r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); - Py_DECREF(x); - return r; -} - -static int __pyx_mp_ass_subscript_memoryview(PyObject *o, PyObject *i, PyObject *v) { - if (v) { - return __pyx_memoryview___setitem__(o, i, v); - } - else { - __Pyx_TypeName o_type_name; - o_type_name = __Pyx_PyType_GetName(Py_TYPE(o)); - PyErr_Format(PyExc_NotImplementedError, - "Subscript deletion not supported by " __Pyx_FMT_TYPENAME, o_type_name); - __Pyx_DECREF_TypeName(o_type_name); - return -1; - } -} - -static PyObject *__pyx_getprop___pyx_memoryview_T(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(o); -} - -static PyObject *__pyx_getprop___pyx_memoryview_base(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(o); -} - -static PyObject *__pyx_getprop___pyx_memoryview_shape(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(o); -} - -static PyObject *__pyx_getprop___pyx_memoryview_strides(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(o); -} - -static PyObject *__pyx_getprop___pyx_memoryview_suboffsets(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(o); -} - -static PyObject *__pyx_getprop___pyx_memoryview_ndim(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(o); -} - -static PyObject *__pyx_getprop___pyx_memoryview_itemsize(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(o); -} - -static PyObject *__pyx_getprop___pyx_memoryview_nbytes(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(o); -} - -static PyObject *__pyx_getprop___pyx_memoryview_size(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(o); -} - -static PyObject *__pyx_specialmethod___pyx_memoryview___repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) { - return __pyx_memoryview___repr__(self); -} - -static PyMethodDef __pyx_methods_memoryview[] = { - {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_memoryview___repr__, METH_NOARGS|METH_COEXIST, 0}, - {"is_c_contig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_memoryview_is_c_contig, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"is_f_contig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_memoryview_is_f_contig, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_memoryview_copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"copy_fortran", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_memoryview_copy_fortran, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_memoryview_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_memoryview_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -static struct PyGetSetDef __pyx_getsets_memoryview[] = { - {(char *)"T", __pyx_getprop___pyx_memoryview_T, 0, (char *)0, 0}, - {(char *)"base", __pyx_getprop___pyx_memoryview_base, 0, (char *)0, 0}, - {(char *)"shape", __pyx_getprop___pyx_memoryview_shape, 0, (char *)0, 0}, - {(char *)"strides", __pyx_getprop___pyx_memoryview_strides, 0, (char *)0, 0}, - {(char *)"suboffsets", __pyx_getprop___pyx_memoryview_suboffsets, 0, (char *)0, 0}, - {(char *)"ndim", __pyx_getprop___pyx_memoryview_ndim, 0, (char *)0, 0}, - {(char *)"itemsize", __pyx_getprop___pyx_memoryview_itemsize, 0, (char *)0, 0}, - {(char *)"nbytes", __pyx_getprop___pyx_memoryview_nbytes, 0, (char *)0, 0}, - {(char *)"size", __pyx_getprop___pyx_memoryview_size, 0, (char *)0, 0}, - {0, 0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -#if !CYTHON_COMPILING_IN_LIMITED_API - -static PyBufferProcs __pyx_tp_as_buffer_memoryview = { - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getreadbuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getwritebuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getsegcount*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getcharbuffer*/ - #endif - __pyx_memoryview_getbuffer, /*bf_getbuffer*/ - 0, /*bf_releasebuffer*/ -}; -#endif -static PyType_Slot __pyx_type___pyx_memoryview_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_memoryview}, - {Py_tp_repr, (void *)__pyx_memoryview___repr__}, - {Py_sq_length, (void *)__pyx_memoryview___len__}, - {Py_sq_item, (void *)__pyx_sq_item_memoryview}, - {Py_mp_length, (void *)__pyx_memoryview___len__}, - {Py_mp_subscript, (void *)__pyx_memoryview___getitem__}, - {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_memoryview}, - {Py_tp_str, (void *)__pyx_memoryview___str__}, - #if defined(Py_bf_getbuffer) - {Py_bf_getbuffer, (void *)__pyx_memoryview_getbuffer}, - #endif - {Py_tp_traverse, (void *)__pyx_tp_traverse_memoryview}, - {Py_tp_clear, (void *)__pyx_tp_clear_memoryview}, - {Py_tp_methods, (void *)__pyx_methods_memoryview}, - {Py_tp_getset, (void *)__pyx_getsets_memoryview}, - {Py_tp_new, (void *)__pyx_tp_new_memoryview}, - {0, 0}, -}; -static PyType_Spec __pyx_type___pyx_memoryview_spec = { - "acados_template.acados_ocp_solver_pyx.memoryview", - sizeof(struct __pyx_memoryview_obj), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type___pyx_memoryview_slots, -}; -#else - -static PySequenceMethods __pyx_tp_as_sequence_memoryview = { - __pyx_memoryview___len__, /*sq_length*/ - 0, /*sq_concat*/ - 0, /*sq_repeat*/ - __pyx_sq_item_memoryview, /*sq_item*/ - 0, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ - 0, /*sq_contains*/ - 0, /*sq_inplace_concat*/ - 0, /*sq_inplace_repeat*/ -}; - -static PyMappingMethods __pyx_tp_as_mapping_memoryview = { - __pyx_memoryview___len__, /*mp_length*/ - __pyx_memoryview___getitem__, /*mp_subscript*/ - __pyx_mp_ass_subscript_memoryview, /*mp_ass_subscript*/ -}; - -static PyBufferProcs __pyx_tp_as_buffer_memoryview = { - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getreadbuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getwritebuffer*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getsegcount*/ - #endif - #if PY_MAJOR_VERSION < 3 - 0, /*bf_getcharbuffer*/ - #endif - __pyx_memoryview_getbuffer, /*bf_getbuffer*/ - 0, /*bf_releasebuffer*/ -}; - -static PyTypeObject __pyx_type___pyx_memoryview = { - PyVarObject_HEAD_INIT(0, 0) - "acados_template.acados_ocp_solver_pyx.""memoryview", /*tp_name*/ - sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_memoryview, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - __pyx_memoryview___repr__, /*tp_repr*/ - 0, /*tp_as_number*/ - &__pyx_tp_as_sequence_memoryview, /*tp_as_sequence*/ - &__pyx_tp_as_mapping_memoryview, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - __pyx_memoryview___str__, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - &__pyx_tp_as_buffer_memoryview, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_memoryview, /*tp_traverse*/ - __pyx_tp_clear_memoryview, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods_memoryview, /*tp_methods*/ - 0, /*tp_members*/ - __pyx_getsets_memoryview, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_memoryview, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif -static struct __pyx_vtabstruct__memoryviewslice __pyx_vtable__memoryviewslice; - -static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k) { - struct __pyx_memoryviewslice_obj *p; - PyObject *o = __pyx_tp_new_memoryview(t, a, k); - if (unlikely(!o)) return 0; - p = ((struct __pyx_memoryviewslice_obj *)o); - p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_memoryview*)__pyx_vtabptr__memoryviewslice; - p->from_object = Py_None; Py_INCREF(Py_None); - p->from_slice.memview = NULL; - return o; -} - -static void __pyx_tp_dealloc__memoryviewslice(PyObject *o) { - struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; - #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc__memoryviewslice) { - if (PyObject_CallFinalizerFromDealloc(o)) return; - } - } - #endif - PyObject_GC_UnTrack(o); - { - PyObject *etype, *eval, *etb; - PyErr_Fetch(&etype, &eval, &etb); - __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); - __pyx_memoryviewslice___dealloc__(o); - __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); - PyErr_Restore(etype, eval, etb); - } - Py_CLEAR(p->from_object); - PyObject_GC_Track(o); - __pyx_tp_dealloc_memoryview(o); -} - -static int __pyx_tp_traverse__memoryviewslice(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; - e = __pyx_tp_traverse_memoryview(o, v, a); if (e) return e; - if (p->from_object) { - e = (*v)(p->from_object, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear__memoryviewslice(PyObject *o) { - PyObject* tmp; - struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; - __pyx_tp_clear_memoryview(o); - tmp = ((PyObject*)p->from_object); - p->from_object = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - __PYX_XCLEAR_MEMVIEW(&p->from_slice, 1); - return 0; -} - -static PyMethodDef __pyx_methods__memoryviewslice[] = { - {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_memoryviewslice_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw___pyx_memoryviewslice_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type___pyx_memoryviewslice_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc__memoryviewslice}, - {Py_tp_doc, (void *)PyDoc_STR("Internal class for passing memoryview slices to Python")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse__memoryviewslice}, - {Py_tp_clear, (void *)__pyx_tp_clear__memoryviewslice}, - {Py_tp_methods, (void *)__pyx_methods__memoryviewslice}, - {Py_tp_new, (void *)__pyx_tp_new__memoryviewslice}, - {0, 0}, -}; -static PyType_Spec __pyx_type___pyx_memoryviewslice_spec = { - "acados_template.acados_ocp_solver_pyx._memoryviewslice", - sizeof(struct __pyx_memoryviewslice_obj), - 0, - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_SEQUENCE, - __pyx_type___pyx_memoryviewslice_slots, -}; -#else - -static PyTypeObject __pyx_type___pyx_memoryviewslice = { - PyVarObject_HEAD_INIT(0, 0) - "acados_template.acados_ocp_solver_pyx.""_memoryviewslice", /*tp_name*/ - sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_memoryview___repr__, /*tp_repr*/ - #else - 0, /*tp_repr*/ - #endif - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - #if CYTHON_COMPILING_IN_PYPY || 0 - __pyx_memoryview___str__, /*tp_str*/ - #else - 0, /*tp_str*/ - #endif - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_SEQUENCE, /*tp_flags*/ - PyDoc_STR("Internal class for passing memoryview slices to Python"), /*tp_doc*/ - __pyx_tp_traverse__memoryviewslice, /*tp_traverse*/ - __pyx_tp_clear__memoryviewslice, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - __pyx_methods__memoryviewslice, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - #if !CYTHON_USE_TYPE_SPECS - 0, /*tp_dictoffset*/ - #endif - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new__memoryviewslice, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - #if CYTHON_USE_TP_FINALIZE - 0, /*tp_finalize*/ - #else - NULL, /*tp_finalize*/ - #endif - #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, /*tp_vectorcall*/ - #endif - #if __PYX_NEED_TP_PRINT_SLOT == 1 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030C0000 - 0, /*tp_watched*/ - #endif - #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, /*tp_pypy_flags*/ - #endif -}; -#endif - -static PyMethodDef __pyx_methods[] = { - {0, 0, 0, 0} -}; -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif -/* #### Code section: pystring_table ### */ - -static int __Pyx_CreateStringTabAndInitStrings(void) { - __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0}, - {&__pyx_kp_u_0, __pyx_k_0, sizeof(__pyx_k_0), 0, 1, 0, 0}, - {&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython, __pyx_k_AcadosOcpSolverCython, sizeof(__pyx_k_AcadosOcpSolverCython), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython___get_poin, __pyx_k_AcadosOcpSolverCython___get_poin, sizeof(__pyx_k_AcadosOcpSolverCython___get_poin), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython___get_stat, __pyx_k_AcadosOcpSolverCython___get_stat, sizeof(__pyx_k_AcadosOcpSolverCython___get_stat), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython___get_stat_2, __pyx_k_AcadosOcpSolverCython___get_stat_2, sizeof(__pyx_k_AcadosOcpSolverCython___get_stat_2), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython___get_stat_3, __pyx_k_AcadosOcpSolverCython___get_stat_3, sizeof(__pyx_k_AcadosOcpSolverCython___get_stat_3), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython___reduce_c, __pyx_k_AcadosOcpSolverCython___reduce_c, sizeof(__pyx_k_AcadosOcpSolverCython___reduce_c), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython___setstate, __pyx_k_AcadosOcpSolverCython___setstate, sizeof(__pyx_k_AcadosOcpSolverCython___setstate), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython__get_poin, __pyx_k_AcadosOcpSolverCython__get_poin, sizeof(__pyx_k_AcadosOcpSolverCython__get_poin), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython__get_stat, __pyx_k_AcadosOcpSolverCython__get_stat, sizeof(__pyx_k_AcadosOcpSolverCython__get_stat), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython__get_stat_2, __pyx_k_AcadosOcpSolverCython__get_stat_2, sizeof(__pyx_k_AcadosOcpSolverCython__get_stat_2), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython__get_stat_3, __pyx_k_AcadosOcpSolverCython__get_stat_3, sizeof(__pyx_k_AcadosOcpSolverCython__get_stat_3), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_constraint, __pyx_k_AcadosOcpSolverCython_constraint, sizeof(__pyx_k_AcadosOcpSolverCython_constraint), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_constraint_2, __pyx_k_AcadosOcpSolverCython_constraint_2, sizeof(__pyx_k_AcadosOcpSolverCython_constraint_2), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_cost_set, __pyx_k_AcadosOcpSolverCython_cost_set, sizeof(__pyx_k_AcadosOcpSolverCython_cost_set), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_cost_set_m, __pyx_k_AcadosOcpSolverCython_cost_set_m, sizeof(__pyx_k_AcadosOcpSolverCython_cost_set_m), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_custom_upd, __pyx_k_AcadosOcpSolverCython_custom_upd, sizeof(__pyx_k_AcadosOcpSolverCython_custom_upd), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_does_not_s, __pyx_k_AcadosOcpSolverCython_does_not_s, sizeof(__pyx_k_AcadosOcpSolverCython_does_not_s), 0, 1, 0, 0}, - {&__pyx_kp_u_AcadosOcpSolverCython_does_not_s_2, __pyx_k_AcadosOcpSolverCython_does_not_s_2, sizeof(__pyx_k_AcadosOcpSolverCython_does_not_s_2), 0, 1, 0, 0}, - {&__pyx_kp_u_AcadosOcpSolverCython_eval_param, __pyx_k_AcadosOcpSolverCython_eval_param, sizeof(__pyx_k_AcadosOcpSolverCython_eval_param), 0, 1, 0, 0}, - {&__pyx_kp_u_AcadosOcpSolverCython_eval_param_2, __pyx_k_AcadosOcpSolverCython_eval_param_2, sizeof(__pyx_k_AcadosOcpSolverCython_eval_param_2), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_eval_param_3, __pyx_k_AcadosOcpSolverCython_eval_param_3, sizeof(__pyx_k_AcadosOcpSolverCython_eval_param_3), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_get, __pyx_k_AcadosOcpSolverCython_get, sizeof(__pyx_k_AcadosOcpSolverCython_get), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_get_cost, __pyx_k_AcadosOcpSolverCython_get_cost, sizeof(__pyx_k_AcadosOcpSolverCython_get_cost), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_get_field, __pyx_k_AcadosOcpSolverCython_get_field, sizeof(__pyx_k_AcadosOcpSolverCython_get_field), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_get_from_q, __pyx_k_AcadosOcpSolverCython_get_from_q, sizeof(__pyx_k_AcadosOcpSolverCython_get_from_q), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_get_is_an, __pyx_k_AcadosOcpSolverCython_get_is_an, sizeof(__pyx_k_AcadosOcpSolverCython_get_is_an), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_get_residu, __pyx_k_AcadosOcpSolverCython_get_residu, sizeof(__pyx_k_AcadosOcpSolverCython_get_residu), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_get_stage, __pyx_k_AcadosOcpSolverCython_get_stage, sizeof(__pyx_k_AcadosOcpSolverCython_get_stage), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_get_stats, __pyx_k_AcadosOcpSolverCython_get_stats, sizeof(__pyx_k_AcadosOcpSolverCython_get_stats), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_load_itera, __pyx_k_AcadosOcpSolverCython_load_itera, sizeof(__pyx_k_AcadosOcpSolverCython_load_itera), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_options_se, __pyx_k_AcadosOcpSolverCython_options_se, sizeof(__pyx_k_AcadosOcpSolverCython_options_se), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_options_se_2, __pyx_k_AcadosOcpSolverCython_options_se_2, sizeof(__pyx_k_AcadosOcpSolverCython_options_se_2), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_print_stat, __pyx_k_AcadosOcpSolverCython_print_stat, sizeof(__pyx_k_AcadosOcpSolverCython_print_stat), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_reset, __pyx_k_AcadosOcpSolverCython_reset, sizeof(__pyx_k_AcadosOcpSolverCython_reset), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_set, __pyx_k_AcadosOcpSolverCython_set, sizeof(__pyx_k_AcadosOcpSolverCython_set), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_set_is_not, __pyx_k_AcadosOcpSolverCython_set_is_not, sizeof(__pyx_k_AcadosOcpSolverCython_set_is_not), 0, 1, 0, 0}, - {&__pyx_kp_u_AcadosOcpSolverCython_set_mismat, __pyx_k_AcadosOcpSolverCython_set_mismat, sizeof(__pyx_k_AcadosOcpSolverCython_set_mismat), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_set_new_ti, __pyx_k_AcadosOcpSolverCython_set_new_ti, sizeof(__pyx_k_AcadosOcpSolverCython_set_new_ti), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_set_params, __pyx_k_AcadosOcpSolverCython_set_params, sizeof(__pyx_k_AcadosOcpSolverCython_set_params), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_solve, __pyx_k_AcadosOcpSolverCython_solve, sizeof(__pyx_k_AcadosOcpSolverCython_solve), 0, 0, 1, 1}, - {&__pyx_kp_u_AcadosOcpSolverCython_solve_argu, __pyx_k_AcadosOcpSolverCython_solve_argu, sizeof(__pyx_k_AcadosOcpSolverCython_solve_argu), 0, 1, 0, 0}, - {&__pyx_kp_u_AcadosOcpSolverCython_solve_argu_2, __pyx_k_AcadosOcpSolverCython_solve_argu_2, sizeof(__pyx_k_AcadosOcpSolverCython_solve_argu_2), 0, 1, 0, 0}, - {&__pyx_n_s_AcadosOcpSolverCython_solve_for, __pyx_k_AcadosOcpSolverCython_solve_for, sizeof(__pyx_k_AcadosOcpSolverCython_solve_for), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_store_iter, __pyx_k_AcadosOcpSolverCython_store_iter, sizeof(__pyx_k_AcadosOcpSolverCython_store_iter), 0, 0, 1, 1}, - {&__pyx_n_s_AcadosOcpSolverCython_update_qp, __pyx_k_AcadosOcpSolverCython_update_qp, sizeof(__pyx_k_AcadosOcpSolverCython_update_qp), 0, 0, 1, 1}, - {&__pyx_kp_s_All_dimensions_preceding_dimensi, __pyx_k_All_dimensions_preceding_dimensi, sizeof(__pyx_k_All_dimensions_preceding_dimensi), 0, 0, 1, 0}, - {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1}, - {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0}, - {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0}, - {&__pyx_kp_s_Cannot_assign_to_read_only_memor, __pyx_k_Cannot_assign_to_read_only_memor, sizeof(__pyx_k_Cannot_assign_to_read_only_memor), 0, 0, 1, 0}, - {&__pyx_kp_s_Cannot_create_writable_memory_vi, __pyx_k_Cannot_create_writable_memory_vi, sizeof(__pyx_k_Cannot_create_writable_memory_vi), 0, 0, 1, 0}, - {&__pyx_kp_u_Cannot_index_with_type, __pyx_k_Cannot_index_with_type, sizeof(__pyx_k_Cannot_index_with_type), 0, 1, 0, 0}, - {&__pyx_kp_s_Cannot_transpose_memoryview_with, __pyx_k_Cannot_transpose_memoryview_with, sizeof(__pyx_k_Cannot_transpose_memoryview_with), 0, 0, 1, 0}, - {&__pyx_kp_s_Dimension_d_is_not_direct, __pyx_k_Dimension_d_is_not_direct, sizeof(__pyx_k_Dimension_d_is_not_direct), 0, 0, 1, 0}, - {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1}, - {&__pyx_kp_s_Empty_shape_tuple_for_cython_arr, __pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 0, 1, 0}, - {&__pyx_n_u_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 1, 0, 1}, - {&__pyx_kp_u_Got_sizes_idx, __pyx_k_Got_sizes_idx, sizeof(__pyx_k_Got_sizes_idx), 0, 1, 0, 0}, - {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, - {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0}, - {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1}, - {&__pyx_kp_s_Index_out_of_bounds_axis_d, __pyx_k_Index_out_of_bounds_axis_d, sizeof(__pyx_k_Index_out_of_bounds_axis_d), 0, 0, 1, 0}, - {&__pyx_kp_s_Indirect_dimensions_not_supporte, __pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 0, 1, 0}, - {&__pyx_kp_u_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 1, 0, 0}, - {&__pyx_kp_u_Invalid_shape_in_axis, __pyx_k_Invalid_shape_in_axis, sizeof(__pyx_k_Invalid_shape_in_axis), 0, 1, 0, 0}, - {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1}, - {&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0}, - {&__pyx_kp_s_MemoryView_of_r_object, __pyx_k_MemoryView_of_r_object, sizeof(__pyx_k_MemoryView_of_r_object), 0, 0, 1, 0}, - {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 1}, - {&__pyx_kp_u_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 1, 0, 0}, - {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1}, - {&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1}, - {&__pyx_kp_u_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 1, 0, 0}, - {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1}, - {&__pyx_n_u_SQP, __pyx_k_SQP, sizeof(__pyx_k_SQP), 0, 1, 0, 1}, - {&__pyx_n_u_SQP_RTI, __pyx_k_SQP_RTI, sizeof(__pyx_k_SQP_RTI), 0, 1, 0, 1}, - {&__pyx_n_s_Sequence, __pyx_k_Sequence, sizeof(__pyx_k_Sequence), 0, 0, 1, 1}, - {&__pyx_kp_s_Step_may_not_be_zero_axis_d, __pyx_k_Step_may_not_be_zero_axis_d, sizeof(__pyx_k_Step_may_not_be_zero_axis_d), 0, 0, 1, 0}, - {&__pyx_kp_u_TODO, __pyx_k_TODO, sizeof(__pyx_k_TODO), 0, 1, 0, 0}, - {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, - {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0}, - {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, - {&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1}, - {&__pyx_kp_u_Warning_acados_ocp_solver_reache, __pyx_k_Warning_acados_ocp_solver_reache, sizeof(__pyx_k_Warning_acados_ocp_solver_reache), 0, 1, 0, 0}, - {&__pyx_kp_u_Y_m_d_H_M_S_f, __pyx_k_Y_m_d_H_M_S_f, sizeof(__pyx_k_Y_m_d_H_M_S_f), 0, 1, 0, 0}, - {&__pyx_kp_u__16, __pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0, 0}, - {&__pyx_n_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 1}, - {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, - {&__pyx_n_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 1}, - {&__pyx_kp_u__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 1, 0, 0}, - {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, - {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0}, - {&__pyx_n_s__94, __pyx_k__94, sizeof(__pyx_k__94), 0, 0, 1, 1}, - {&__pyx_n_s_abc, __pyx_k_abc, sizeof(__pyx_k_abc), 0, 0, 1, 1}, - {&__pyx_kp_u_acados_acados_ocp_solver_returne, __pyx_k_acados_acados_ocp_solver_returne, sizeof(__pyx_k_acados_acados_ocp_solver_returne), 0, 1, 0, 0}, - {&__pyx_n_s_acados_template_acados_ocp_solve, __pyx_k_acados_template_acados_ocp_solve, sizeof(__pyx_k_acados_template_acados_ocp_solve), 0, 0, 1, 1}, - {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1}, - {&__pyx_n_u_alpha, __pyx_k_alpha, sizeof(__pyx_k_alpha), 0, 1, 0, 1}, - {&__pyx_n_u_alpha_min, __pyx_k_alpha_min, sizeof(__pyx_k_alpha_min), 0, 1, 0, 1}, - {&__pyx_n_u_alpha_reduction, __pyx_k_alpha_reduction, sizeof(__pyx_k_alpha_reduction), 0, 1, 0, 1}, - {&__pyx_kp_u_alpha_values_are_not_available_f, __pyx_k_alpha_values_are_not_available_f, sizeof(__pyx_k_alpha_values_are_not_available_f), 0, 1, 0, 0}, - {&__pyx_kp_u_and, __pyx_k_and, sizeof(__pyx_k_and), 0, 1, 0, 0}, - {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1}, - {&__pyx_n_s_ascontiguousarray, __pyx_k_ascontiguousarray, sizeof(__pyx_k_ascontiguousarray), 0, 0, 1, 1}, - {&__pyx_n_s_asfortranarray, __pyx_k_asfortranarray, sizeof(__pyx_k_asfortranarray), 0, 0, 1, 1}, - {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, - {&__pyx_kp_u_at_stage, __pyx_k_at_stage, sizeof(__pyx_k_at_stage), 0, 1, 0, 0}, - {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1}, - {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1}, - {&__pyx_n_u_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 1, 0, 1}, - {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1}, - {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1}, - {&__pyx_kp_s_collections_abc, __pyx_k_collections_abc, sizeof(__pyx_k_collections_abc), 0, 0, 1, 0}, - {&__pyx_n_s_constraints_fields, __pyx_k_constraints_fields, sizeof(__pyx_k_constraints_fields), 0, 0, 1, 1}, - {&__pyx_n_s_constraints_set, __pyx_k_constraints_set, sizeof(__pyx_k_constraints_set), 0, 0, 1, 1}, - {&__pyx_kp_u_constraints_set_value_must_be_nu, __pyx_k_constraints_set_value_must_be_nu, sizeof(__pyx_k_constraints_set_value_must_be_nu), 0, 1, 0, 0}, - {&__pyx_kp_s_contiguous_and_direct, __pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 0, 1, 0}, - {&__pyx_kp_s_contiguous_and_indirect, __pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 0, 1, 0}, - {&__pyx_n_s_cost_fields, __pyx_k_cost_fields, sizeof(__pyx_k_cost_fields), 0, 0, 1, 1}, - {&__pyx_n_s_cost_set, __pyx_k_cost_set, sizeof(__pyx_k_cost_set), 0, 0, 1, 1}, - {&__pyx_kp_u_cost_set_value_must_be_numpy_arr, __pyx_k_cost_set_value_must_be_numpy_arr, sizeof(__pyx_k_cost_set_value_must_be_numpy_arr), 0, 1, 0, 0}, - {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1}, - {&__pyx_n_s_custom_update, __pyx_k_custom_update, sizeof(__pyx_k_custom_update), 0, 0, 1, 1}, - {&__pyx_n_u_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 1, 0, 1}, - {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, - {&__pyx_n_s_data_2, __pyx_k_data_2, sizeof(__pyx_k_data_2), 0, 0, 1, 1}, - {&__pyx_n_s_data_len, __pyx_k_data_len, sizeof(__pyx_k_data_len), 0, 0, 1, 1}, - {&__pyx_n_s_datetime, __pyx_k_datetime, sizeof(__pyx_k_datetime), 0, 0, 1, 1}, - {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1}, - {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, - {&__pyx_n_s_dims, __pyx_k_dims, sizeof(__pyx_k_dims), 0, 0, 1, 1}, - {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, - {&__pyx_n_s_double_fields, __pyx_k_double_fields, sizeof(__pyx_k_double_fields), 0, 0, 1, 1}, - {&__pyx_n_s_double_value, __pyx_k_double_value, sizeof(__pyx_k_double_value), 0, 0, 1, 1}, - {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1}, - {&__pyx_n_s_dtype_is_object, __pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 0, 1, 1}, - {&__pyx_n_s_dump, __pyx_k_dump, sizeof(__pyx_k_dump), 0, 0, 1, 1}, - {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, - {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, - {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1}, - {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, - {&__pyx_n_u_eps_sufficient_descent, __pyx_k_eps_sufficient_descent, sizeof(__pyx_k_eps_sufficient_descent), 0, 1, 0, 1}, - {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, - {&__pyx_n_s_eval_param_sens, __pyx_k_eval_param_sens, sizeof(__pyx_k_eval_param_sens), 0, 0, 1, 1}, - {&__pyx_n_u_ex, __pyx_k_ex, sizeof(__pyx_k_ex), 0, 1, 0, 1}, - {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, - {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1}, - {&__pyx_n_s_field, __pyx_k_field, sizeof(__pyx_k_field), 0, 0, 1, 1}, - {&__pyx_n_s_field_2, __pyx_k_field_2, sizeof(__pyx_k_field_2), 0, 0, 1, 1}, - {&__pyx_n_s_fields, __pyx_k_fields, sizeof(__pyx_k_fields), 0, 0, 1, 1}, - {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1}, - {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1}, - {&__pyx_n_s_float64, __pyx_k_float64, sizeof(__pyx_k_float64), 0, 0, 1, 1}, - {&__pyx_kp_u_for_field, __pyx_k_for_field, sizeof(__pyx_k_for_field), 0, 1, 0, 0}, - {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, - {&__pyx_n_s_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 0, 1, 1}, - {&__pyx_n_u_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 0, 1}, - {&__pyx_n_s_full_stats, __pyx_k_full_stats, sizeof(__pyx_k_full_stats), 0, 0, 1, 1}, - {&__pyx_n_u_full_step_dual, __pyx_k_full_step_dual, sizeof(__pyx_k_full_step_dual), 0, 1, 0, 1}, - {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, - {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, - {&__pyx_n_s_get_cost, __pyx_k_get_cost, sizeof(__pyx_k_get_cost), 0, 0, 1, 1}, - {&__pyx_n_s_get_from_qp_in, __pyx_k_get_from_qp_in, sizeof(__pyx_k_get_from_qp_in), 0, 0, 1, 1}, - {&__pyx_n_s_get_pointers_solver, __pyx_k_get_pointers_solver, sizeof(__pyx_k_get_pointers_solver), 0, 0, 1, 1}, - {&__pyx_n_s_get_residuals, __pyx_k_get_residuals, sizeof(__pyx_k_get_residuals), 0, 0, 1, 1}, - {&__pyx_n_s_get_stat_double, __pyx_k_get_stat_double, sizeof(__pyx_k_get_stat_double), 0, 0, 1, 1}, - {&__pyx_n_s_get_stat_int, __pyx_k_get_stat_int, sizeof(__pyx_k_get_stat_int), 0, 0, 1, 1}, - {&__pyx_n_s_get_stat_matrix, __pyx_k_get_stat_matrix, sizeof(__pyx_k_get_stat_matrix), 0, 0, 1, 1}, - {&__pyx_n_s_get_stats, __pyx_k_get_stats, sizeof(__pyx_k_get_stats), 0, 0, 1, 1}, - {&__pyx_n_s_getcwd, __pyx_k_getcwd, sizeof(__pyx_k_getcwd), 0, 0, 1, 1}, - {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, - {&__pyx_n_u_globalization, __pyx_k_globalization, sizeof(__pyx_k_globalization), 0, 1, 0, 1}, - {&__pyx_n_u_globalization_use_SOC, __pyx_k_globalization_use_SOC, sizeof(__pyx_k_globalization_use_SOC), 0, 1, 0, 1}, - {&__pyx_kp_u_got, __pyx_k_got, sizeof(__pyx_k_got), 0, 1, 0, 0}, - {&__pyx_kp_u_got_differing_extents_in_dimensi, __pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 1, 0, 0}, - {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, - {&__pyx_n_s_i_string, __pyx_k_i_string, sizeof(__pyx_k_i_string), 0, 0, 1, 1}, - {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1}, - {&__pyx_n_s_idx, __pyx_k_idx, sizeof(__pyx_k_idx), 0, 0, 1, 1}, - {&__pyx_n_s_idx_values, __pyx_k_idx_values, sizeof(__pyx_k_idx_values), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_indent, __pyx_k_indent, sizeof(__pyx_k_indent), 0, 0, 1, 1}, - {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1}, - {&__pyx_n_u_initialize_t_slacks, __pyx_k_initialize_t_slacks, sizeof(__pyx_k_initialize_t_slacks), 0, 1, 0, 1}, - {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1}, - {&__pyx_n_s_int, __pyx_k_int, sizeof(__pyx_k_int), 0, 0, 1, 1}, - {&__pyx_n_s_int32, __pyx_k_int32, sizeof(__pyx_k_int32), 0, 0, 1, 1}, - {&__pyx_n_s_int_fields, __pyx_k_int_fields, sizeof(__pyx_k_int_fields), 0, 0, 1, 1}, - {&__pyx_n_s_int_value, __pyx_k_int_value, sizeof(__pyx_k_int_value), 0, 0, 1, 1}, - {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, - {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, - {&__pyx_n_s_isfile, __pyx_k_isfile, sizeof(__pyx_k_isfile), 0, 0, 1, 1}, - {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1}, - {&__pyx_kp_s_itemsize_0_for_cython_array, __pyx_k_itemsize_0_for_cython_array, sizeof(__pyx_k_itemsize_0_for_cython_array), 0, 0, 1, 0}, - {&__pyx_n_u_iterate, __pyx_k_iterate, sizeof(__pyx_k_iterate), 0, 1, 0, 1}, - {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, - {&__pyx_n_s_json, __pyx_k_json, sizeof(__pyx_k_json), 0, 0, 1, 1}, - {&__pyx_kp_u_json_2, __pyx_k_json_2, sizeof(__pyx_k_json_2), 0, 1, 0, 0}, - {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1}, - {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1}, - {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1}, - {&__pyx_n_s_lN, __pyx_k_lN, sizeof(__pyx_k_lN), 0, 0, 1, 1}, - {&__pyx_n_u_lam, __pyx_k_lam, sizeof(__pyx_k_lam), 0, 1, 0, 1}, - {&__pyx_n_u_lam_2, __pyx_k_lam_2, sizeof(__pyx_k_lam_2), 0, 1, 0, 1}, - {&__pyx_n_u_lbu, __pyx_k_lbu, sizeof(__pyx_k_lbu), 0, 1, 0, 1}, - {&__pyx_n_u_lbx, __pyx_k_lbx, sizeof(__pyx_k_lbx), 0, 1, 0, 1}, - {&__pyx_n_u_line_search_use_sufficient_desce, __pyx_k_line_search_use_sufficient_desce, sizeof(__pyx_k_line_search_use_sufficient_desce), 0, 1, 0, 1}, - {&__pyx_n_s_load, __pyx_k_load, sizeof(__pyx_k_load), 0, 0, 1, 1}, - {&__pyx_n_s_load_iterate, __pyx_k_load_iterate, sizeof(__pyx_k_load_iterate), 0, 0, 1, 1}, - {&__pyx_kp_u_load_iterate_failed_file_does_no, __pyx_k_load_iterate_failed_file_does_no, sizeof(__pyx_k_load_iterate_failed_file_does_no), 0, 1, 0, 0}, - {&__pyx_n_s_m, __pyx_k_m, sizeof(__pyx_k_m), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_mem_fields, __pyx_k_mem_fields, sizeof(__pyx_k_mem_fields), 0, 0, 1, 1}, - {&__pyx_n_s_memview, __pyx_k_memview, sizeof(__pyx_k_memview), 0, 0, 1, 1}, - {&__pyx_n_s_min_size, __pyx_k_min_size, sizeof(__pyx_k_min_size), 0, 0, 1, 1}, - {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1}, - {&__pyx_n_s_model_name, __pyx_k_model_name, sizeof(__pyx_k_model_name), 0, 0, 1, 1}, - {&__pyx_n_s_msg, __pyx_k_msg, sizeof(__pyx_k_msg), 0, 0, 1, 1}, - {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1}, - {&__pyx_n_s_n_update, __pyx_k_n_update, sizeof(__pyx_k_n_update), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, - {&__pyx_n_s_ndarray, __pyx_k_ndarray, sizeof(__pyx_k_ndarray), 0, 0, 1, 1}, - {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1}, - {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1}, - {&__pyx_n_s_new_time_steps, __pyx_k_new_time_steps, sizeof(__pyx_k_new_time_steps), 0, 0, 1, 1}, - {&__pyx_n_s_nlp_solver_type, __pyx_k_nlp_solver_type, sizeof(__pyx_k_nlp_solver_type), 0, 0, 1, 1}, - {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0}, - {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, - {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, - {&__pyx_kp_u_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 1, 0, 0}, - {&__pyx_kp_u_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 1, 0, 0}, - {&__pyx_n_s_nx, __pyx_k_nx, sizeof(__pyx_k_nx), 0, 0, 1, 1}, - {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1}, - {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1}, - {&__pyx_n_s_options_set, __pyx_k_options_set, sizeof(__pyx_k_options_set), 0, 0, 1, 1}, - {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1}, - {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, - {&__pyx_n_s_out, __pyx_k_out, sizeof(__pyx_k_out), 0, 0, 1, 1}, - {&__pyx_n_s_out_fields, __pyx_k_out_fields, sizeof(__pyx_k_out_fields), 0, 0, 1, 1}, - {&__pyx_n_s_out_mat, __pyx_k_out_mat, sizeof(__pyx_k_out_mat), 0, 0, 1, 1}, - {&__pyx_n_s_overwrite, __pyx_k_overwrite, sizeof(__pyx_k_overwrite), 0, 0, 1, 1}, - {&__pyx_n_u_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 1, 0, 1}, - {&__pyx_n_s_pack, __pyx_k_pack, sizeof(__pyx_k_pack), 0, 0, 1, 1}, - {&__pyx_n_s_param_values, __pyx_k_param_values, sizeof(__pyx_k_param_values), 0, 0, 1, 1}, - {&__pyx_kp_u_param_values_2, __pyx_k_param_values_2, sizeof(__pyx_k_param_values_2), 0, 1, 0, 0}, - {&__pyx_kp_u_param_values__and_idx_values__mu, __pyx_k_param_values__and_idx_values__mu, sizeof(__pyx_k_param_values__and_idx_values__mu), 0, 1, 0, 0}, - {&__pyx_kp_u_param_values__must_be_np_array, __pyx_k_param_values__must_be_np_array, sizeof(__pyx_k_param_values__must_be_np_array), 0, 1, 0, 0}, - {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, - {&__pyx_n_u_pi, __pyx_k_pi, sizeof(__pyx_k_pi), 0, 1, 0, 1}, - {&__pyx_n_u_pi_2, __pyx_k_pi_2, sizeof(__pyx_k_pi_2), 0, 1, 0, 1}, - {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, - {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, - {&__pyx_n_u_print_level, __pyx_k_print_level, sizeof(__pyx_k_print_level), 0, 1, 0, 1}, - {&__pyx_n_s_print_statistics, __pyx_k_print_statistics, sizeof(__pyx_k_print_statistics), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_unpickle_Enum, __pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 0, 1, 1}, - {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, - {&__pyx_n_u_qp_iter, __pyx_k_qp_iter, sizeof(__pyx_k_qp_iter), 0, 1, 0, 1}, - {&__pyx_n_u_qp_mu0, __pyx_k_qp_mu0, sizeof(__pyx_k_qp_mu0), 0, 1, 0, 1}, - {&__pyx_n_s_qp_solver_cond_N, __pyx_k_qp_solver_cond_N, sizeof(__pyx_k_qp_solver_cond_N), 0, 0, 1, 1}, - {&__pyx_n_u_qp_tau_min, __pyx_k_qp_tau_min, sizeof(__pyx_k_qp_tau_min), 0, 1, 0, 1}, - {&__pyx_n_u_qp_tol_comp, __pyx_k_qp_tol_comp, sizeof(__pyx_k_qp_tol_comp), 0, 1, 0, 1}, - {&__pyx_n_u_qp_tol_eq, __pyx_k_qp_tol_eq, sizeof(__pyx_k_qp_tol_eq), 0, 1, 0, 1}, - {&__pyx_n_u_qp_tol_ineq, __pyx_k_qp_tol_ineq, sizeof(__pyx_k_qp_tol_ineq), 0, 1, 0, 1}, - {&__pyx_n_u_qp_tol_stat, __pyx_k_qp_tol_stat, sizeof(__pyx_k_qp_tol_stat), 0, 1, 0, 1}, - {&__pyx_n_u_qp_warm_start, __pyx_k_qp_warm_start, sizeof(__pyx_k_qp_warm_start), 0, 1, 0, 1}, - {&__pyx_n_u_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 1, 0, 1}, - {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, - {&__pyx_n_s_recompute, __pyx_k_recompute, sizeof(__pyx_k_recompute), 0, 0, 1, 1}, - {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, - {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, - {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, - {&__pyx_n_s_register, __pyx_k_register, sizeof(__pyx_k_register), 0, 0, 1, 1}, - {&__pyx_n_b_res_comp, __pyx_k_res_comp, sizeof(__pyx_k_res_comp), 0, 0, 0, 1}, - {&__pyx_n_b_res_eq, __pyx_k_res_eq, sizeof(__pyx_k_res_eq), 0, 0, 0, 1}, - {&__pyx_n_b_res_ineq, __pyx_k_res_ineq, sizeof(__pyx_k_res_ineq), 0, 0, 0, 1}, - {&__pyx_n_b_res_stat, __pyx_k_res_stat, sizeof(__pyx_k_res_stat), 0, 0, 0, 1}, - {&__pyx_n_s_reset, __pyx_k_reset, sizeof(__pyx_k_reset), 0, 0, 1, 1}, - {&__pyx_n_s_reset_qp_solver_mem, __pyx_k_reset_qp_solver_mem, sizeof(__pyx_k_reset_qp_solver_mem), 0, 0, 1, 1}, - {&__pyx_n_u_residuals, __pyx_k_residuals, sizeof(__pyx_k_residuals), 0, 1, 0, 1}, - {&__pyx_n_u_rti_phase, __pyx_k_rti_phase, sizeof(__pyx_k_rti_phase), 0, 1, 0, 1}, - {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, - {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1}, - {&__pyx_n_s_set_new_time_steps, __pyx_k_set_new_time_steps, sizeof(__pyx_k_set_new_time_steps), 0, 0, 1, 1}, - {&__pyx_n_s_set_params_sparse, __pyx_k_set_params_sparse, sizeof(__pyx_k_set_params_sparse), 0, 0, 1, 1}, - {&__pyx_kp_u_set_value_must_be_numpy_array_go, __pyx_k_set_value_must_be_numpy_array_go, sizeof(__pyx_k_set_value_must_be_numpy_array_go), 0, 1, 0, 0}, - {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, - {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, - {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1}, - {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, - {&__pyx_n_u_sl, __pyx_k_sl, sizeof(__pyx_k_sl), 0, 1, 0, 1}, - {&__pyx_n_u_sl_2, __pyx_k_sl_2, sizeof(__pyx_k_sl_2), 0, 1, 0, 1}, - {&__pyx_n_s_solution, __pyx_k_solution, sizeof(__pyx_k_solution), 0, 0, 1, 1}, - {&__pyx_n_s_solve, __pyx_k_solve, sizeof(__pyx_k_solve), 0, 0, 1, 1}, - {&__pyx_n_s_solve_for_x0, __pyx_k_solve_for_x0, sizeof(__pyx_k_solve_for_x0), 0, 0, 1, 1}, - {&__pyx_kp_u_solver_option_must_be_of_type_fl, __pyx_k_solver_option_must_be_of_type_fl, sizeof(__pyx_k_solver_option_must_be_of_type_fl), 0, 1, 0, 0}, - {&__pyx_kp_u_solver_option_must_be_of_type_in, __pyx_k_solver_option_must_be_of_type_in, sizeof(__pyx_k_solver_option_must_be_of_type_in), 0, 1, 0, 0}, - {&__pyx_kp_u_solver_option_must_be_of_type_st, __pyx_k_solver_option_must_be_of_type_st, sizeof(__pyx_k_solver_option_must_be_of_type_st), 0, 1, 0, 0}, - {&__pyx_n_s_sort_keys, __pyx_k_sort_keys, sizeof(__pyx_k_sort_keys), 0, 0, 1, 1}, - {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1}, - {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, - {&__pyx_n_s_sqp_iter, __pyx_k_sqp_iter, sizeof(__pyx_k_sqp_iter), 0, 0, 1, 1}, - {&__pyx_n_u_sqp_iter, __pyx_k_sqp_iter, sizeof(__pyx_k_sqp_iter), 0, 1, 0, 1}, - {&__pyx_n_s_stage, __pyx_k_stage, sizeof(__pyx_k_stage), 0, 0, 1, 1}, - {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1}, - {&__pyx_n_s_stat_m, __pyx_k_stat_m, sizeof(__pyx_k_stat_m), 0, 0, 1, 1}, - {&__pyx_n_u_stat_m, __pyx_k_stat_m, sizeof(__pyx_k_stat_m), 0, 1, 0, 1}, - {&__pyx_n_s_stat_n, __pyx_k_stat_n, sizeof(__pyx_k_stat_n), 0, 0, 1, 1}, - {&__pyx_n_u_stat_n, __pyx_k_stat_n, sizeof(__pyx_k_stat_n), 0, 1, 0, 1}, - {&__pyx_n_u_statistics, __pyx_k_statistics, sizeof(__pyx_k_statistics), 0, 1, 0, 1}, - {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1}, - {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1}, - {&__pyx_n_u_step_length, __pyx_k_step_length, sizeof(__pyx_k_step_length), 0, 1, 0, 1}, - {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1}, - {&__pyx_n_s_store_iterate, __pyx_k_store_iterate, sizeof(__pyx_k_store_iterate), 0, 0, 1, 1}, - {&__pyx_n_s_store_iterate_locals_lambda, __pyx_k_store_iterate_locals_lambda, sizeof(__pyx_k_store_iterate_locals_lambda), 0, 0, 1, 1}, - {&__pyx_kp_u_stored_current_iterate_in, __pyx_k_stored_current_iterate_in, sizeof(__pyx_k_stored_current_iterate_in), 0, 1, 0, 0}, - {&__pyx_n_s_strftime, __pyx_k_strftime, sizeof(__pyx_k_strftime), 0, 0, 1, 1}, - {&__pyx_kp_s_strided_and_direct, __pyx_k_strided_and_direct, sizeof(__pyx_k_strided_and_direct), 0, 0, 1, 0}, - {&__pyx_kp_s_strided_and_direct_or_indirect, __pyx_k_strided_and_direct_or_indirect, sizeof(__pyx_k_strided_and_direct_or_indirect), 0, 0, 1, 0}, - {&__pyx_kp_s_strided_and_indirect, __pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 0, 1, 0}, - {&__pyx_n_s_string_fields, __pyx_k_string_fields, sizeof(__pyx_k_string_fields), 0, 0, 1, 1}, - {&__pyx_n_s_string_value, __pyx_k_string_value, sizeof(__pyx_k_string_value), 0, 0, 1, 1}, - {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, - {&__pyx_n_s_struct, __pyx_k_struct, sizeof(__pyx_k_struct), 0, 0, 1, 1}, - {&__pyx_n_u_su, __pyx_k_su, sizeof(__pyx_k_su), 0, 1, 0, 1}, - {&__pyx_n_u_su_2, __pyx_k_su_2, sizeof(__pyx_k_su_2), 0, 1, 0, 1}, - {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, - {&__pyx_n_u_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 1, 0, 1}, - {&__pyx_n_u_t_2, __pyx_k_t_2, sizeof(__pyx_k_t_2), 0, 1, 0, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_kp_s_third_party_acados_acados_templa, __pyx_k_third_party_acados_acados_templa, sizeof(__pyx_k_third_party_acados_acados_templa), 0, 0, 1, 0}, - {&__pyx_n_u_time_glob, __pyx_k_time_glob, sizeof(__pyx_k_time_glob), 0, 1, 0, 1}, - {&__pyx_n_u_time_lin, __pyx_k_time_lin, sizeof(__pyx_k_time_lin), 0, 1, 0, 1}, - {&__pyx_n_u_time_qp, __pyx_k_time_qp, sizeof(__pyx_k_time_qp), 0, 1, 0, 1}, - {&__pyx_n_u_time_qp_solver_call, __pyx_k_time_qp_solver_call, sizeof(__pyx_k_time_qp_solver_call), 0, 1, 0, 1}, - {&__pyx_n_u_time_qp_xcond, __pyx_k_time_qp_xcond, sizeof(__pyx_k_time_qp_xcond), 0, 1, 0, 1}, - {&__pyx_n_u_time_reg, __pyx_k_time_reg, sizeof(__pyx_k_time_reg), 0, 1, 0, 1}, - {&__pyx_n_u_time_sim, __pyx_k_time_sim, sizeof(__pyx_k_time_sim), 0, 1, 0, 1}, - {&__pyx_n_u_time_sim_ad, __pyx_k_time_sim_ad, sizeof(__pyx_k_time_sim_ad), 0, 1, 0, 1}, - {&__pyx_n_u_time_sim_la, __pyx_k_time_sim_la, sizeof(__pyx_k_time_sim_la), 0, 1, 0, 1}, - {&__pyx_n_u_time_solution_sensitivities, __pyx_k_time_solution_sensitivities, sizeof(__pyx_k_time_solution_sensitivities), 0, 1, 0, 1}, - {&__pyx_n_u_time_tot, __pyx_k_time_tot, sizeof(__pyx_k_time_tot), 0, 1, 0, 1}, - {&__pyx_n_u_tol_comp, __pyx_k_tol_comp, sizeof(__pyx_k_tol_comp), 0, 1, 0, 1}, - {&__pyx_n_u_tol_eq, __pyx_k_tol_eq, sizeof(__pyx_k_tol_eq), 0, 1, 0, 1}, - {&__pyx_n_u_tol_ineq, __pyx_k_tol_ineq, sizeof(__pyx_k_tol_ineq), 0, 1, 0, 1}, - {&__pyx_n_u_tol_stat, __pyx_k_tol_stat, sizeof(__pyx_k_tol_stat), 0, 1, 0, 1}, - {&__pyx_n_s_tolist, __pyx_k_tolist, sizeof(__pyx_k_tolist), 0, 0, 1, 1}, - {&__pyx_n_u_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 1, 0, 1}, - {&__pyx_n_s_u0, __pyx_k_u0, sizeof(__pyx_k_u0), 0, 0, 1, 1}, - {&__pyx_n_u_u_2, __pyx_k_u_2, sizeof(__pyx_k_u_2), 0, 1, 0, 1}, - {&__pyx_n_u_ubu, __pyx_k_ubu, sizeof(__pyx_k_ubu), 0, 1, 0, 1}, - {&__pyx_n_u_ubx, __pyx_k_ubx, sizeof(__pyx_k_ubx), 0, 1, 0, 1}, - {&__pyx_kp_s_unable_to_allocate_array_data, __pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 0, 1, 0}, - {&__pyx_kp_s_unable_to_allocate_shape_and_str, __pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 0, 1, 0}, - {&__pyx_n_s_unpack, __pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 0, 1, 1}, - {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1}, - {&__pyx_n_s_update_qp_solver_cond_N, __pyx_k_update_qp_solver_cond_N, sizeof(__pyx_k_update_qp_solver_cond_N), 0, 0, 1, 1}, - {&__pyx_n_s_utcnow, __pyx_k_utcnow, sizeof(__pyx_k_utcnow), 0, 0, 1, 1}, - {&__pyx_kp_u_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 1, 0, 0}, - {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1}, - {&__pyx_n_s_value_2, __pyx_k_value_2, sizeof(__pyx_k_value_2), 0, 0, 1, 1}, - {&__pyx_n_s_value_shape, __pyx_k_value_shape, sizeof(__pyx_k_value_shape), 0, 0, 1, 1}, - {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1}, - {&__pyx_n_u_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 1, 0, 1}, - {&__pyx_n_u_warm_start_first_qp, __pyx_k_warm_start_first_qp, sizeof(__pyx_k_warm_start_first_qp), 0, 1, 0, 1}, - {&__pyx_kp_u_with_dimension, __pyx_k_with_dimension, sizeof(__pyx_k_with_dimension), 0, 1, 0, 0}, - {&__pyx_kp_u_with_dimension_you_have, __pyx_k_with_dimension_you_have, sizeof(__pyx_k_with_dimension_you_have), 0, 1, 0, 0}, - {&__pyx_n_b_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 0, 1}, - {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, - {&__pyx_n_u_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 1, 0, 1}, - {&__pyx_n_s_x0_bar, __pyx_k_x0_bar, sizeof(__pyx_k_x0_bar), 0, 0, 1, 1}, - {&__pyx_n_u_x_2, __pyx_k_x_2, sizeof(__pyx_k_x_2), 0, 1, 0, 1}, - {&__pyx_n_u_xdot_guess, __pyx_k_xdot_guess, sizeof(__pyx_k_xdot_guess), 0, 1, 0, 1}, - {&__pyx_n_u_y_ref, __pyx_k_y_ref, sizeof(__pyx_k_y_ref), 0, 1, 0, 1}, - {&__pyx_kp_u_you_have, __pyx_k_you_have, sizeof(__pyx_k_you_have), 0, 1, 0, 0}, - {&__pyx_n_u_yref, __pyx_k_yref, sizeof(__pyx_k_yref), 0, 1, 0, 1}, - {&__pyx_n_u_z, __pyx_k_z, sizeof(__pyx_k_z), 0, 1, 0, 1}, - {&__pyx_n_u_z_2, __pyx_k_z_2, sizeof(__pyx_k_z_2), 0, 1, 0, 1}, - {&__pyx_n_b_z_guess, __pyx_k_z_guess, sizeof(__pyx_k_z_guess), 0, 0, 0, 1}, - {&__pyx_n_u_z_guess, __pyx_k_z_guess, sizeof(__pyx_k_z_guess), 0, 1, 0, 1}, - {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} - }; - return __Pyx_InitStrings(__pyx_string_tab); -} -/* #### Code section: cached_builtins ### */ -static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 82, __pyx_L1_error) - __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 113, __pyx_L1_error) - __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 160, __pyx_L1_error) - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 340, __pyx_L1_error) - __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(0, 357, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) - __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_n_s_import); if (!__pyx_builtin___import__) __PYX_ERR(1, 100, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 141, __pyx_L1_error) - __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 156, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 159, __pyx_L1_error) - __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 408, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(1, 618, __pyx_L1_error) - __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 914, __pyx_L1_error) - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 984, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} -/* #### Code section: cached_constants ### */ - -static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "View.MemoryView":582 - * def suboffsets(self): - * if self.view.suboffsets == NULL: - * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< - * - * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) - */ - __pyx_tuple__4 = PyTuple_New(1); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 582, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__4); - __Pyx_INCREF(__pyx_int_neg_1); - __Pyx_GIVEREF(__pyx_int_neg_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_tuple__4, 0, __pyx_int_neg_1)) __PYX_ERR(1, 582, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_tuple__4); - - /* "View.MemoryView":679 - * tup = index if isinstance(index, tuple) else (index,) - * - * result = [slice(None)] * ndim # <<<<<<<<<<<<<< - * have_slices = False - * seen_ellipsis = False - */ - __pyx_slice__5 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(1, 679, __pyx_L1_error) - __Pyx_GOTREF(__pyx_slice__5); - __Pyx_GIVEREF(__pyx_slice__5); - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum - */ - __pyx_tuple__8 = PyTuple_Pack(3, __pyx_int_136983863, __pyx_int_112105877, __pyx_int_184977713); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":984 - * __pyx_import_array() - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_umath() except -1: - */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(2, 984, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - - /* "../../usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/__init__.cython-30.pxd":990 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_ufunc() except -1: - */ - __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(2, 990, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - - /* "acados_template/acados_ocp_solver_pyx.pyx":113 - * - * if status == 2: - * print("Warning: acados_ocp_solver reached maximum iterations.") # <<<<<<<<<<<<<< - * elif status != 0: - * raise Exception(f'acados acados_ocp_solver returned status {status}') - */ - __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Warning_acados_ocp_solver_reache); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__11); - __Pyx_GIVEREF(__pyx_tuple__11); - - /* "acados_template/acados_ocp_solver_pyx.pyx":117 - * raise Exception(f'acados acados_ocp_solver returned status {status}') - * - * u0 = self.get(0, "u") # <<<<<<<<<<<<<< - * return u0 - * - */ - __pyx_tuple__12 = PyTuple_Pack(2, __pyx_int_0, __pyx_n_u_u); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); - - /* "acados_template/acados_ocp_solver_pyx.pyx":160 - * """ - * - * raise NotImplementedError("AcadosOcpSolverCython: does not support set_new_time_steps() since it is only a prototyping feature") # <<<<<<<<<<<<<< - * # # unlikely but still possible - * # if not self.solver_created: - */ - __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_AcadosOcpSolverCython_does_not_s); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - - /* "acados_template/acados_ocp_solver_pyx.pyx":212 - * `qp_solver_cond_N < N`. - * """ - * raise NotImplementedError("AcadosOcpSolverCython: does not support update_qp_solver_cond_N() since it is only a prototyping feature") # <<<<<<<<<<<<<< - * - * # # unlikely but still possible - */ - __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_u_AcadosOcpSolverCython_does_not_s_2); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 212, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__14); - __Pyx_GIVEREF(__pyx_tuple__14); - - /* "acados_template/acados_ocp_solver_pyx.pyx":245 - * # checks - * if not isinstance(index, int): - * raise Exception('AcadosOcpSolverCython.eval_param_sens(): index must be Integer.') # <<<<<<<<<<<<<< - * - * cdef int nx = acados_solver_common.ocp_nlp_dims_get_from_attr(self.nlp_config, self.nlp_dims, self.nlp_out, 0, "x".encode('utf-8')) - */ - __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_AcadosOcpSolverCython_eval_param); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 245, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); - - /* "acados_template/acados_ocp_solver_pyx.pyx":333 - * # append timestamp - * if os.path.isfile(filename): - * filename = filename[:-5] # <<<<<<<<<<<<<< - * filename += datetime.utcnow().strftime('%Y-%m-%d-%H:%M:%S.%f') + '.json' - * - */ - __pyx_slice__18 = PySlice_New(Py_None, __pyx_int_neg_5, Py_None); if (unlikely(!__pyx_slice__18)) __PYX_ERR(0, 333, __pyx_L1_error) - __Pyx_GOTREF(__pyx_slice__18); - __Pyx_GIVEREF(__pyx_slice__18); - - /* "acados_template/acados_ocp_solver_pyx.pyx":357 - * - * # save - * with open(filename, 'w') as f: # <<<<<<<<<<<<<< - * json.dump(solution, f, default=lambda x: x.tolist(), indent=4, sort_keys=True) - * print("stored current iterate in ", os.path.join(os.getcwd(), filename)) - */ - __pyx_tuple__19 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 357, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); - - /* "acados_template/acados_ocp_solver_pyx.pyx":442 - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': - * return full_stats[6, :] # <<<<<<<<<<<<<< - * elif self.nlp_solver_type == 'SQP_RTI': - * return full_stats[2, :] - */ - __pyx_tuple__20 = PyTuple_Pack(2, __pyx_int_6, __pyx_slice__5); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 442, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__20); - __Pyx_GIVEREF(__pyx_tuple__20); - - /* "acados_template/acados_ocp_solver_pyx.pyx":444 - * return full_stats[6, :] - * elif self.nlp_solver_type == 'SQP_RTI': - * return full_stats[2, :] # <<<<<<<<<<<<<< - * - * elif field_ == 'alpha': - */ - __pyx_tuple__21 = PyTuple_Pack(2, __pyx_int_2, __pyx_slice__5); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 444, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); - - /* "acados_template/acados_ocp_solver_pyx.pyx":449 - * full_stats = self.get_stats('statistics') - * if self.nlp_solver_type == 'SQP': - * return full_stats[7, :] # <<<<<<<<<<<<<< - * else: # self.nlp_solver_type == 'SQP_RTI': - * raise Exception("alpha values are not available for SQP_RTI") - */ - __pyx_tuple__22 = PyTuple_Pack(2, __pyx_int_7, __pyx_slice__5); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 449, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__22); - __Pyx_GIVEREF(__pyx_tuple__22); - - /* "acados_template/acados_ocp_solver_pyx.pyx":451 - * return full_stats[7, :] - * else: # self.nlp_solver_type == 'SQP_RTI': - * raise Exception("alpha values are not available for SQP_RTI") # <<<<<<<<<<<<<< - * - * elif field_ == 'residuals': - */ - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_alpha_values_are_not_available_f); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 451, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); - - /* "acados_template/acados_ocp_solver_pyx.pyx":457 - * - * else: - * raise NotImplementedError("TODO!") # <<<<<<<<<<<<<< - * - * - */ - __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_TODO); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 457, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__24); - __Pyx_GIVEREF(__pyx_tuple__24); - - /* "acados_template/acados_ocp_solver_pyx.pyx":466 - * - * def __get_stat_double(self, field): - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((1,)) # <<<<<<<<<<<<<< - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out.data) - * return out - */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 466, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); - - /* "acados_template/acados_ocp_solver_pyx.pyx":501 - * - * # create output array - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.ascontiguousarray(np.zeros((4,), dtype=np.float64)) # <<<<<<<<<<<<<< - * cdef double double_value - * - */ - __pyx_tuple__26 = PyTuple_Pack(1, __pyx_int_4); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__26); - __Pyx_GIVEREF(__pyx_tuple__26); - __pyx_tuple__27 = PyTuple_Pack(1, __pyx_tuple__26); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 501, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); - - /* "acados_template/acados_ocp_solver_pyx.pyx":611 - * if len(value_shape) == 1: - * value_shape = (value_shape[0], 0) - * value = np.asfortranarray(value_[None,:]) # <<<<<<<<<<<<<< - * - * elif len(value_shape) == 2: - */ - __pyx_tuple__28 = PyTuple_Pack(2, Py_None, __pyx_slice__5); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 611, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__28); - __Pyx_GIVEREF(__pyx_tuple__28); - - /* "acados_template/acados_ocp_solver_pyx.pyx":720 - * if field_ == 'rti_phase': - * if value_ < 0 or value_ > 2: - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' # <<<<<<<<<<<<<< - * 'take only values 0, 1, 2 for SQP-RTI-type solvers') - * if self.nlp_solver_type != 'SQP_RTI' and value_ > 0: - */ - __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_u_AcadosOcpSolverCython_solve_argu); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 720, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__29); - __Pyx_GIVEREF(__pyx_tuple__29); - - /* "acados_template/acados_ocp_solver_pyx.pyx":723 - * 'take only values 0, 1, 2 for SQP-RTI-type solvers') - * if self.nlp_solver_type != 'SQP_RTI' and value_ > 0: - * raise Exception('AcadosOcpSolverCython.solve(): argument \'rti_phase\' can ' # <<<<<<<<<<<<<< - * 'take only value 0 for SQP-type solvers') - * - */ - __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_u_AcadosOcpSolverCython_solve_argu_2); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 723, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__30); - __Pyx_GIVEREF(__pyx_tuple__30); - - /* "acados_template/acados_ocp_solver_pyx.pyx":759 - * - * if not isinstance(param_values_, np.ndarray): - * raise Exception('param_values_ must be np.array.') # <<<<<<<<<<<<<< - * - * if param_values_.shape[0] != len(idx_values_): - */ - __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_param_values__must_be_np_array); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 759, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__32); - __Pyx_GIVEREF(__pyx_tuple__32); - - /* "View.MemoryView":100 - * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence" - * try: - * if __import__("sys").version_info >= (3, 3): # <<<<<<<<<<<<<< - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - * else: - */ - __pyx_tuple__33 = PyTuple_Pack(1, __pyx_n_s_sys); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__33); - __Pyx_GIVEREF(__pyx_tuple__33); - __pyx_tuple__34 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_3); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__34); - __Pyx_GIVEREF(__pyx_tuple__34); - - /* "View.MemoryView":101 - * try: - * if __import__("sys").version_info >= (3, 3): - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence # <<<<<<<<<<<<<< - * else: - * __pyx_collections_abc_Sequence = __import__("collections").Sequence - */ - __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_collections_abc); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__35); - __Pyx_GIVEREF(__pyx_tuple__35); - - /* "View.MemoryView":103 - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - * else: - * __pyx_collections_abc_Sequence = __import__("collections").Sequence # <<<<<<<<<<<<<< - * except: - * - */ - __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_collections); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__36); - __Pyx_GIVEREF(__pyx_tuple__36); - - /* "View.MemoryView":309 - * return self.name - * - * cdef generic = Enum("") # <<<<<<<<<<<<<< - * cdef strided = Enum("") # default - * cdef indirect = Enum("") - */ - __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 309, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__37); - __Pyx_GIVEREF(__pyx_tuple__37); - - /* "View.MemoryView":310 - * - * cdef generic = Enum("") - * cdef strided = Enum("") # default # <<<<<<<<<<<<<< - * cdef indirect = Enum("") - * - */ - __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 310, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__38); - __Pyx_GIVEREF(__pyx_tuple__38); - - /* "View.MemoryView":311 - * cdef generic = Enum("") - * cdef strided = Enum("") # default - * cdef indirect = Enum("") # <<<<<<<<<<<<<< - * - * - */ - __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 311, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__39); - __Pyx_GIVEREF(__pyx_tuple__39); - - /* "View.MemoryView":314 - * - * - * cdef contiguous = Enum("") # <<<<<<<<<<<<<< - * cdef indirect_contiguous = Enum("") - * - */ - __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__40); - __Pyx_GIVEREF(__pyx_tuple__40); - - /* "View.MemoryView":315 - * - * cdef contiguous = Enum("") - * cdef indirect_contiguous = Enum("") # <<<<<<<<<<<<<< - * - * - */ - __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 315, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__41); - __Pyx_GIVEREF(__pyx_tuple__41); - - /* "(tree fragment)":1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - __pyx_tuple__42 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__42); - __Pyx_GIVEREF(__pyx_tuple__42); - __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":89 - * - * - * def __get_pointers_solver(self): # <<<<<<<<<<<<<< - * """ - * Private function to get the pointers for solver - */ - __pyx_tuple__44 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__44); - __Pyx_GIVEREF(__pyx_tuple__44); - __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get_pointers_solver, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 89, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":103 - * - * - * def solve_for_x0(self, x0_bar): # <<<<<<<<<<<<<< - * """ - * Wrapper around `solve()` which sets initial state constraint, solves the OCP, and returns u0. - */ - __pyx_tuple__46 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x0_bar, __pyx_n_s_status, __pyx_n_s_u0); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__46); - __Pyx_GIVEREF(__pyx_tuple__46); - __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_solve_for_x0, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 103, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":121 - * - * - * def solve(self): # <<<<<<<<<<<<<< - * """ - * Solve the ocp with current input. - */ - __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_solve, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 121, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":128 - * - * - * def reset(self, reset_qp_solver_mem=1): # <<<<<<<<<<<<<< - * """ - * Sets current iterate to all zeros. - */ - __pyx_tuple__49 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_reset_qp_solver_mem); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__49); - __Pyx_GIVEREF(__pyx_tuple__49); - __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_reset, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 128, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":135 - * - * - * def custom_update(self, data_): # <<<<<<<<<<<<<< - * """ - * A custom function that can be implemented by a user to be called between solver calls. - */ - __pyx_tuple__51 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_data, __pyx_n_s_data_len, __pyx_n_s_data_2); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 135, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__51); - __Pyx_GIVEREF(__pyx_tuple__51); - __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_custom_update, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 135, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":148 - * - * - * def set_new_time_steps(self, new_time_steps): # <<<<<<<<<<<<<< - * """ - * Set new time steps. - */ - __pyx_tuple__53 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_new_time_steps); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__53); - __Pyx_GIVEREF(__pyx_tuple__53); - __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_set_new_time_steps, 148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 148, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":199 - * - * - * def update_qp_solver_cond_N(self, qp_solver_cond_N: int): # <<<<<<<<<<<<<< - * """ - * Recreate solver with new value `qp_solver_cond_N` with a partial condensing QP solver. - */ - __pyx_tuple__55 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_qp_solver_cond_N); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__55); - __Pyx_GIVEREF(__pyx_tuple__55); - __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_update_qp_solver_cond_N, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 199, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":233 - * - * - * def eval_param_sens(self, index, stage=0, field="ex"): # <<<<<<<<<<<<<< - * """ - * Calculate the sensitivity of the curent solution with respect to the initial state component of index - */ - __pyx_tuple__57 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_stage, __pyx_n_s_field, __pyx_n_s_field_2, __pyx_n_s_nx); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 233, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__57); - __Pyx_GIVEREF(__pyx_tuple__57); - __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_eval_param_sens, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 233, __pyx_L1_error) - __pyx_tuple__59 = PyTuple_Pack(2, __pyx_int_0, __pyx_n_u_ex); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 233, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__59); - __Pyx_GIVEREF(__pyx_tuple__59); - - /* "acados_template/acados_ocp_solver_pyx.pyx":258 - * - * - * def get(self, int stage, str field_): # <<<<<<<<<<<<<< - * """ - * Get the last solution of the solver: - */ - __pyx_tuple__60 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_stage, __pyx_n_s_field_2, __pyx_n_s_out_fields, __pyx_n_s_field, __pyx_n_s_dims, __pyx_n_s_out); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__60); - __Pyx_GIVEREF(__pyx_tuple__60); - __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 258, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":301 - * - * - * def print_statistics(self): # <<<<<<<<<<<<<< - * """ - * prints statistics of previous solver run as a table: - */ - __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_print_statistics, 301, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 301, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":319 - * - * - * def store_iterate(self, filename='', overwrite=False): # <<<<<<<<<<<<<< - * """ - * Stores the current iterate of the ocp solver in a json file. - */ - __pyx_tuple__63 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_filename, __pyx_n_s_overwrite, __pyx_n_s_json, __pyx_n_s_solution, __pyx_n_s_lN, __pyx_n_s_i, __pyx_n_s_i_string, __pyx_n_s_k, __pyx_n_s_f); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 319, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__63); - __Pyx_GIVEREF(__pyx_tuple__63); - __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_store_iterate, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 319, __pyx_L1_error) - __pyx_tuple__65 = PyTuple_Pack(2, __pyx_kp_u__16, Py_False); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 319, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__65); - __Pyx_GIVEREF(__pyx_tuple__65); - - /* "acados_template/acados_ocp_solver_pyx.pyx":362 - * - * - * def load_iterate(self, filename): # <<<<<<<<<<<<<< - * """ - * Loads the iterate stored in json file with filename into the ocp solver. - */ - __pyx_tuple__66 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_filename, __pyx_n_s_json, __pyx_n_s_f, __pyx_n_s_solution, __pyx_n_s_key, __pyx_n_s_field, __pyx_n_s_stage); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 362, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__66); - __Pyx_GIVEREF(__pyx_tuple__66); - __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_load_iterate, 362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 362, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":378 - * - * - * def get_stats(self, field_): # <<<<<<<<<<<<<< - * """ - * Get the information of the last solver call. - */ - __pyx_tuple__68 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_field_2, __pyx_n_s_double_fields, __pyx_n_s_fields, __pyx_n_s_field, __pyx_n_s_sqp_iter, __pyx_n_s_stat_m, __pyx_n_s_stat_n, __pyx_n_s_min_size, __pyx_n_s_full_stats); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__68); - __Pyx_GIVEREF(__pyx_tuple__68); - __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get_stats, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 378, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":460 - * - * - * def __get_stat_int(self, field): # <<<<<<<<<<<<<< - * cdef int out - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &out) - */ - __pyx_tuple__70 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_field, __pyx_n_s_out); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 460, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__70); - __Pyx_GIVEREF(__pyx_tuple__70); - __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get_stat_int, 460, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 460, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":465 - * return out - * - * def __get_stat_double(self, field): # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((1,)) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out.data) - */ - __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get_stat_double, 465, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 465, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":470 - * return out - * - * def __get_stat_matrix(self, field, n, m): # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=2] out_mat = np.ascontiguousarray(np.zeros((n, m)), dtype=np.float64) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out_mat.data) - */ - __pyx_tuple__73 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_field, __pyx_n_s_n, __pyx_n_s_m, __pyx_n_s_out_mat); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__73); - __Pyx_GIVEREF(__pyx_tuple__73); - __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get_stat_matrix, 470, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 470, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":476 - * - * - * def get_cost(self): # <<<<<<<<<<<<<< - * """ - * Returns the cost value of the current solution. - */ - __pyx_tuple__75 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_out); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 476, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__75); - __Pyx_GIVEREF(__pyx_tuple__75); - __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get_cost, 476, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 476, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":492 - * - * - * def get_residuals(self, recompute=False): # <<<<<<<<<<<<<< - * """ - * Returns an array of the form [res_stat, res_eq, res_ineq, res_comp]. - */ - __pyx_tuple__77 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_recompute, __pyx_n_s_out, __pyx_n_s_double_value, __pyx_n_s_field); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 492, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__77); - __Pyx_GIVEREF(__pyx_tuple__77); - __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get_residuals, 492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 492, __pyx_L1_error) - __pyx_tuple__79 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 492, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__79); - __Pyx_GIVEREF(__pyx_tuple__79); - - /* "acados_template/acados_ocp_solver_pyx.pyx":524 - * - * # Note: this function should not be used anymore, better use cost_set, constraints_set - * def set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * - * """ - */ - __pyx_tuple__80 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_stage, __pyx_n_s_field_2, __pyx_n_s_value, __pyx_n_s_cost_fields, __pyx_n_s_constraints_fields, __pyx_n_s_out_fields, __pyx_n_s_mem_fields, __pyx_n_s_field, __pyx_n_s_value_2, __pyx_n_s_dims, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 524, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__80); - __Pyx_GIVEREF(__pyx_tuple__80); - __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_set, 524, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 524, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":590 - * return - * - * def cost_set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set numerical data in the cost module of the solver. - */ - __pyx_tuple__82 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_stage, __pyx_n_s_field_2, __pyx_n_s_value, __pyx_n_s_field, __pyx_n_s_dims, __pyx_n_s_value_2, __pyx_n_s_value_shape); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__82); - __Pyx_GIVEREF(__pyx_tuple__82); - __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_cost_set, 590, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 590, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":625 - * - * - * def constraints_set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set numerical data in the constraint module of the solver. - */ - __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_constraints_set, 625, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 625, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":663 - * - * - * def get_from_qp_in(self, int stage, str field_): # <<<<<<<<<<<<<< - * """ - * Get numerical data from the dynamics module of the solver: - */ - __pyx_tuple__85 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_stage, __pyx_n_s_field_2, __pyx_n_s_field, __pyx_n_s_dims, __pyx_n_s_out); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 663, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__85); - __Pyx_GIVEREF(__pyx_tuple__85); - __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_get_from_qp_in, 663, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 663, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":685 - * - * - * def options_set(self, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set options of the solver. - */ - __pyx_tuple__87 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_field_2, __pyx_n_s_value, __pyx_n_s_int_fields, __pyx_n_s_double_fields, __pyx_n_s_string_fields, __pyx_n_s_field, __pyx_n_s_int_value, __pyx_n_s_double_value, __pyx_n_s_string_value); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 685, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__87); - __Pyx_GIVEREF(__pyx_tuple__87); - __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_options_set, 685, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 685, __pyx_L1_error) - - /* "acados_template/acados_ocp_solver_pyx.pyx":748 - * - * - * def set_params_sparse(self, int stage, idx_values_, param_values_): # <<<<<<<<<<<<<< - * """ - * set parameters of the solvers external function partially: - */ - __pyx_tuple__89 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_stage, __pyx_n_s_idx_values, __pyx_n_s_param_values, __pyx_n_s_value_2, __pyx_n_s_idx, __pyx_n_s_n_update); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 748, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__89); - __Pyx_GIVEREF(__pyx_tuple__89); - __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_third_party_acados_acados_templa, __pyx_n_s_set_params_sparse, 748, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 748, __pyx_L1_error) - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(1, 1, __pyx_L1_error) - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_tuple__92 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__92); - __Pyx_GIVEREF(__pyx_tuple__92); - __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} -/* #### Code section: init_constants ### */ - -static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { - __pyx_umethod_PyDict_Type_keys.type = (PyObject*)&PyDict_Type; - __pyx_umethod_PyDict_Type_keys.method_name = &__pyx_n_s_keys; - if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_6 = PyInt_FromLong(6); if (unlikely(!__pyx_int_6)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_7 = PyInt_FromLong(7); if (unlikely(!__pyx_int_7)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_112105877 = PyInt_FromLong(112105877L); if (unlikely(!__pyx_int_112105877)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_136983863 = PyInt_FromLong(136983863L); if (unlikely(!__pyx_int_136983863)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_neg_5 = PyInt_FromLong(-5); if (unlikely(!__pyx_int_neg_5)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} -/* #### Code section: init_globals ### */ - -static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { - /* AssertionsEnabled.init */ - if (likely(__Pyx_init_assertions_enabled() == 0)); else - -if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) - - /* NumpyImportArray.init */ - /* - * Cython has automatically inserted a call to _import_array since - * you didn't include one when you cimported numpy. To disable this - * add the line - * numpy._import_array - */ -#ifdef NPY_FEATURE_VERSION -#ifndef NO_IMPORT_ARRAY -if (unlikely(_import_array() == -1)) { - PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import " - "(auto-generated because you didn't call 'numpy.import_array()' after cimporting numpy; " - "use 'numpy._import_array' to disable if you are certain you don't need it)."); -} -#endif -#endif - -if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) - - return 0; - __pyx_L1_error:; - return -1; -} -/* #### Code section: init_module ### */ - -static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __pyx_collections_abc_Sequence = Py_None; Py_INCREF(Py_None); - generic = Py_None; Py_INCREF(Py_None); - strided = Py_None; Py_INCREF(Py_None); - indirect = Py_None; Py_INCREF(Py_None); - contiguous = Py_None; Py_INCREF(Py_None); - indirect_contiguous = Py_None; Py_INCREF(Py_None); - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - #if CYTHON_USE_TYPE_SPECS - __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython_spec, NULL); if (unlikely(!__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython)) __PYX_ERR(0, 49, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython_spec, __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython) < 0) __PYX_ERR(0, 49, __pyx_L1_error) - #else - __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython = &__pyx_type_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython) < 0) __PYX_ERR(0, 49, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython->tp_dictoffset && __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AcadosOcpSolverCython, (PyObject *) __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython) < 0) __PYX_ERR(0, 49, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython) < 0) __PYX_ERR(0, 49, __pyx_L1_error) - #endif - __pyx_vtabptr_array = &__pyx_vtable_array; - __pyx_vtable_array.get_memview = (PyObject *(*)(struct __pyx_array_obj *))__pyx_array_get_memview; - #if CYTHON_USE_TYPE_SPECS - __pyx_array_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_array_spec, NULL); if (unlikely(!__pyx_array_type)) __PYX_ERR(1, 114, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_array_type->tp_as_buffer = &__pyx_tp_as_buffer_array; - if (!__pyx_array_type->tp_as_buffer->bf_releasebuffer && __pyx_array_type->tp_base->tp_as_buffer && __pyx_array_type->tp_base->tp_as_buffer->bf_releasebuffer) { - __pyx_array_type->tp_as_buffer->bf_releasebuffer = __pyx_array_type->tp_base->tp_as_buffer->bf_releasebuffer; - } - #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer) - /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */ - #elif defined(_MSC_VER) - #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.") - #else - #warning "The buffer protocol is not supported in the Limited C-API < 3.11." - #endif - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_array_spec, __pyx_array_type) < 0) __PYX_ERR(1, 114, __pyx_L1_error) - #else - __pyx_array_type = &__pyx_type___pyx_array; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_array_type) < 0) __PYX_ERR(1, 114, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_array_type->tp_print = 0; - #endif - if (__Pyx_SetVtable(__pyx_array_type, __pyx_vtabptr_array) < 0) __PYX_ERR(1, 114, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_MergeVtables(__pyx_array_type) < 0) __PYX_ERR(1, 114, __pyx_L1_error) - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_array_type) < 0) __PYX_ERR(1, 114, __pyx_L1_error) - #endif - #if CYTHON_USE_TYPE_SPECS - __pyx_MemviewEnum_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_MemviewEnum_spec, NULL); if (unlikely(!__pyx_MemviewEnum_type)) __PYX_ERR(1, 302, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_MemviewEnum_spec, __pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 302, __pyx_L1_error) - #else - __pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 302, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_MemviewEnum_type->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_MemviewEnum_type->tp_dictoffset && __pyx_MemviewEnum_type->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_MemviewEnum_type->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 302, __pyx_L1_error) - #endif - __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview; - __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer; - __pyx_vtable_memoryview.is_slice = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_is_slice; - __pyx_vtable_memoryview.setitem_slice_assignment = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_slice_assignment; - __pyx_vtable_memoryview.setitem_slice_assign_scalar = (PyObject *(*)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_setitem_slice_assign_scalar; - __pyx_vtable_memoryview.setitem_indexed = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_indexed; - __pyx_vtable_memoryview.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryview_convert_item_to_object; - __pyx_vtable_memoryview.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryview_assign_item_from_object; - __pyx_vtable_memoryview._get_base = (PyObject *(*)(struct __pyx_memoryview_obj *))__pyx_memoryview__get_base; - #if CYTHON_USE_TYPE_SPECS - __pyx_memoryview_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_memoryview_spec, NULL); if (unlikely(!__pyx_memoryview_type)) __PYX_ERR(1, 337, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_memoryview_type->tp_as_buffer = &__pyx_tp_as_buffer_memoryview; - if (!__pyx_memoryview_type->tp_as_buffer->bf_releasebuffer && __pyx_memoryview_type->tp_base->tp_as_buffer && __pyx_memoryview_type->tp_base->tp_as_buffer->bf_releasebuffer) { - __pyx_memoryview_type->tp_as_buffer->bf_releasebuffer = __pyx_memoryview_type->tp_base->tp_as_buffer->bf_releasebuffer; - } - #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer) - /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */ - #elif defined(_MSC_VER) - #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.") - #else - #warning "The buffer protocol is not supported in the Limited C-API < 3.11." - #endif - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryview_spec, __pyx_memoryview_type) < 0) __PYX_ERR(1, 337, __pyx_L1_error) - #else - __pyx_memoryview_type = &__pyx_type___pyx_memoryview; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_memoryview_type) < 0) __PYX_ERR(1, 337, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_memoryview_type->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_memoryview_type->tp_dictoffset && __pyx_memoryview_type->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_memoryview_type->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (__Pyx_SetVtable(__pyx_memoryview_type, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(1, 337, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_MergeVtables(__pyx_memoryview_type) < 0) __PYX_ERR(1, 337, __pyx_L1_error) - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_memoryview_type) < 0) __PYX_ERR(1, 337, __pyx_L1_error) - #endif - __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice; - __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview; - __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object; - __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object; - __pyx_vtable__memoryviewslice.__pyx_base._get_base = (PyObject *(*)(struct __pyx_memoryview_obj *))__pyx_memoryviewslice__get_base; - #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_memoryview_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 952, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_memoryviewslice_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_memoryviewslice_spec, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_memoryviewslice_type)) __PYX_ERR(1, 952, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryviewslice_spec, __pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 952, __pyx_L1_error) - #else - __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - __pyx_memoryviewslice_type->tp_base = __pyx_memoryview_type; - #endif - #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 952, __pyx_L1_error) - #endif - #if PY_MAJOR_VERSION < 3 - __pyx_memoryviewslice_type->tp_print = 0; - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_memoryviewslice_type->tp_dictoffset && __pyx_memoryviewslice_type->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_memoryviewslice_type->tp_getattro = __Pyx_PyObject_GenericGetAttr; - } - #endif - if (__Pyx_SetVtable(__pyx_memoryviewslice_type, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 952, __pyx_L1_error) - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_MergeVtables(__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 952, __pyx_L1_error) - #endif - #if !CYTHON_COMPILING_IN_LIMITED_API - if (__Pyx_setup_reduce((PyObject *) __pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 952, __pyx_L1_error) - #endif - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_8(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", - #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyTypeObject), - #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyTypeObject), - #else - sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyHeapTypeObject), - #endif - __Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 202, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5numpy_dtype = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyArray_Descr),__Pyx_ImportType_CheckSize_Ignore_3_0_8); if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 202, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyArrayIterObject),__Pyx_ImportType_CheckSize_Ignore_3_0_8); if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 225, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyArrayMultiIterObject),__Pyx_ImportType_CheckSize_Ignore_3_0_8); if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 229, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyArrayObject),__Pyx_ImportType_CheckSize_Ignore_3_0_8); if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 238, __pyx_L1_error) - __pyx_ptype_5numpy_generic = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_generic) __PYX_ERR(2, 809, __pyx_L1_error) - __pyx_ptype_5numpy_number = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "number", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_number) __PYX_ERR(2, 811, __pyx_L1_error) - __pyx_ptype_5numpy_integer = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_integer) __PYX_ERR(2, 813, __pyx_L1_error) - __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(2, 815, __pyx_L1_error) - __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(2, 817, __pyx_L1_error) - __pyx_ptype_5numpy_inexact = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(2, 819, __pyx_L1_error) - __pyx_ptype_5numpy_floating = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_floating) __PYX_ERR(2, 821, __pyx_L1_error) - __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(2, 823, __pyx_L1_error) - __pyx_ptype_5numpy_flexible = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(2, 825, __pyx_L1_error) - __pyx_ptype_5numpy_character = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "character", sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyObject),__Pyx_ImportType_CheckSize_Warn_3_0_8); if (!__pyx_ptype_5numpy_character) __PYX_ERR(2, 827, __pyx_L1_error) - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType_3_0_8(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_8(PyUFuncObject),__Pyx_ImportType_CheckSize_Ignore_3_0_8); if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 866, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec_acados_ocp_solver_pyx(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec_acados_ocp_solver_pyx}, - {0, NULL} -}; -#endif - -#ifdef __cplusplus -namespace { - struct PyModuleDef __pyx_moduledef = - #else - static struct PyModuleDef __pyx_moduledef = - #endif - { - PyModuleDef_HEAD_INIT, - "acados_ocp_solver_pyx", - 0, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #elif CYTHON_USE_MODULE_STATE - sizeof(__pyx_mstate), /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - #if CYTHON_USE_MODULE_STATE - __pyx_m_traverse, /* m_traverse */ - __pyx_m_clear, /* m_clear */ - NULL /* m_free */ - #else - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ - #endif - }; - #ifdef __cplusplus -} /* anonymous namespace */ -#endif -#endif - -#ifndef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#elif PY_MAJOR_VERSION < 3 -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" void -#else -#define __Pyx_PyMODINIT_FUNC void -#endif -#else -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyObject * -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC initacados_ocp_solver_pyx(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC initacados_ocp_solver_pyx(void) -#else -__Pyx_PyMODINIT_FUNC PyInit_acados_ocp_solver_pyx(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit_acados_ocp_solver_pyx(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { - #if PY_VERSION_HEX >= 0x030700A1 - static PY_INT64_T main_interpreter_id = -1; - PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); - if (main_interpreter_id == -1) { - main_interpreter_id = current_id; - return (unlikely(current_id == -1)) ? -1 : 0; - } else if (unlikely(main_interpreter_id != current_id)) - #else - static PyInterpreterState *main_interpreter = NULL; - PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; - if (!main_interpreter) { - main_interpreter = current_interpreter; - } else if (unlikely(main_interpreter != current_interpreter)) - #endif - { - PyErr_SetString( - PyExc_ImportError, - "Interpreter change detected - this module can only be loaded into one interpreter per process."); - return -1; - } - return 0; -} -#if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) -#else -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) -#endif -{ - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - if (allow_none || value != Py_None) { -#if CYTHON_COMPILING_IN_LIMITED_API - result = PyModule_AddObject(module, to_name, value); -#else - result = PyDict_SetItemString(moddict, to_name, value); -#endif - } - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - CYTHON_UNUSED_VAR(def); - if (__Pyx_check_single_interpreter()) - return NULL; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; -#if CYTHON_COMPILING_IN_LIMITED_API - moddict = module; -#else - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; -#endif - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static CYTHON_SMALL_CODE int __pyx_pymod_exec_acados_ocp_solver_pyx(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - int stringtab_initialized = 0; - #if CYTHON_USE_MODULE_STATE - int pystate_addmodule_run = 0; - #endif - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - static PyThread_type_lock __pyx_t_8[8]; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m) { - if (__pyx_m == __pyx_pyinit_module) return 0; - PyErr_SetString(PyExc_RuntimeError, "Module 'acados_ocp_solver_pyx' has already been imported. Re-initialisation is not supported."); - return -1; - } - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("acados_ocp_solver_pyx", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #elif CYTHON_USE_MODULE_STATE - __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) - { - int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); - __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "acados_ocp_solver_pyx" pseudovariable */ - if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) - pystate_addmodule_run = 1; - } - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #endif - CYTHON_UNUSED_VAR(__pyx_t_1); - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_acados_ocp_solver_pyx(void)", 0); - if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pxy_PyFrame_Initialize_Offsets - __Pxy_PyFrame_Initialize_Offsets(); - #endif - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - PyEval_InitThreads(); - #endif - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - stringtab_initialized = 1; - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_acados_template__acados_ocp_solver_pyx) { - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "acados_template.acados_ocp_solver_pyx")) { - if (unlikely((PyDict_SetItemString(modules, "acados_template.acados_ocp_solver_pyx", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) - if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error) - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "View.MemoryView":99 - * - * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence" - * try: # <<<<<<<<<<<<<< - * if __import__("sys").version_info >= (3, 3): - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "View.MemoryView":100 - * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence" - * try: - * if __import__("sys").version_info >= (3, 3): # <<<<<<<<<<<<<< - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - * else: - */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 100, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_version_info); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 100, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_tuple__34, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 100, __pyx_L2_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 100, __pyx_L2_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__pyx_t_6) { - - /* "View.MemoryView":101 - * try: - * if __import__("sys").version_info >= (3, 3): - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence # <<<<<<<<<<<<<< - * else: - * __pyx_collections_abc_Sequence = __import__("collections").Sequence - */ - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_abc); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 101, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XGOTREF(__pyx_collections_abc_Sequence); - __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_4); - __pyx_t_4 = 0; - - /* "View.MemoryView":100 - * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence" - * try: - * if __import__("sys").version_info >= (3, 3): # <<<<<<<<<<<<<< - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - * else: - */ - goto __pyx_L8; - } - - /* "View.MemoryView":103 - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - * else: - * __pyx_collections_abc_Sequence = __import__("collections").Sequence # <<<<<<<<<<<<<< - * except: - * - */ - /*else*/ { - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin___import__, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 103, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 103, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XGOTREF(__pyx_collections_abc_Sequence); - __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, __pyx_t_5); - __Pyx_GIVEREF(__pyx_t_5); - __pyx_t_5 = 0; - } - __pyx_L8:; - - /* "View.MemoryView":99 - * - * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence" - * try: # <<<<<<<<<<<<<< - * if __import__("sys").version_info >= (3, 3): - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L7_try_end; - __pyx_L2_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "View.MemoryView":104 - * else: - * __pyx_collections_abc_Sequence = __import__("collections").Sequence - * except: # <<<<<<<<<<<<<< - * - * __pyx_collections_abc_Sequence = None - */ - /*except:*/ { - __Pyx_AddTraceback("View.MemoryView", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(1, 104, __pyx_L4_except_error) - __Pyx_XGOTREF(__pyx_t_5); - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_7); - - /* "View.MemoryView":106 - * except: - * - * __pyx_collections_abc_Sequence = None # <<<<<<<<<<<<<< - * - * - */ - __Pyx_INCREF(Py_None); - __Pyx_XGOTREF(__pyx_collections_abc_Sequence); - __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, Py_None); - __Pyx_GIVEREF(Py_None); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L3_exception_handled; - } - - /* "View.MemoryView":99 - * - * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence" - * try: # <<<<<<<<<<<<<< - * if __import__("sys").version_info >= (3, 3): - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - */ - __pyx_L4_except_error:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L3_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L7_try_end:; - } - - /* "View.MemoryView":241 - * - * - * try: # <<<<<<<<<<<<<< - * count = __pyx_collections_abc_Sequence.count - * index = __pyx_collections_abc_Sequence.index - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_1); - /*try:*/ { - - /* "View.MemoryView":242 - * - * try: - * count = __pyx_collections_abc_Sequence.count # <<<<<<<<<<<<<< - * index = __pyx_collections_abc_Sequence.index - * except: - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_count); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 242, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict(__pyx_array_type, __pyx_n_s_count, __pyx_t_7) < 0) __PYX_ERR(1, 242, __pyx_L11_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_array_type); - - /* "View.MemoryView":243 - * try: - * count = __pyx_collections_abc_Sequence.count - * index = __pyx_collections_abc_Sequence.index # <<<<<<<<<<<<<< - * except: - * pass - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 243, __pyx_L11_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict(__pyx_array_type, __pyx_n_s_index, __pyx_t_7) < 0) __PYX_ERR(1, 243, __pyx_L11_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_array_type); - - /* "View.MemoryView":241 - * - * - * try: # <<<<<<<<<<<<<< - * count = __pyx_collections_abc_Sequence.count - * index = __pyx_collections_abc_Sequence.index - */ - } - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L16_try_end; - __pyx_L11_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "View.MemoryView":244 - * count = __pyx_collections_abc_Sequence.count - * index = __pyx_collections_abc_Sequence.index - * except: # <<<<<<<<<<<<<< - * pass - * - */ - /*except:*/ { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L12_exception_handled; - } - __pyx_L12_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1); - __pyx_L16_try_end:; - } - - /* "View.MemoryView":309 - * return self.name - * - * cdef generic = Enum("") # <<<<<<<<<<<<<< - * cdef strided = Enum("") # default - * cdef indirect = Enum("") - */ - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 309, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_XGOTREF(generic); - __Pyx_DECREF_SET(generic, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - __pyx_t_7 = 0; - - /* "View.MemoryView":310 - * - * cdef generic = Enum("") - * cdef strided = Enum("") # default # <<<<<<<<<<<<<< - * cdef indirect = Enum("") - * - */ - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 310, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_XGOTREF(strided); - __Pyx_DECREF_SET(strided, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - __pyx_t_7 = 0; - - /* "View.MemoryView":311 - * cdef generic = Enum("") - * cdef strided = Enum("") # default - * cdef indirect = Enum("") # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 311, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_XGOTREF(indirect); - __Pyx_DECREF_SET(indirect, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - __pyx_t_7 = 0; - - /* "View.MemoryView":314 - * - * - * cdef contiguous = Enum("") # <<<<<<<<<<<<<< - * cdef indirect_contiguous = Enum("") - * - */ - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 314, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_XGOTREF(contiguous); - __Pyx_DECREF_SET(contiguous, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - __pyx_t_7 = 0; - - /* "View.MemoryView":315 - * - * cdef contiguous = Enum("") - * cdef indirect_contiguous = Enum("") # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 315, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_XGOTREF(indirect_contiguous); - __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_7); - __pyx_t_7 = 0; - - /* "View.MemoryView":323 - * - * - * cdef int __pyx_memoryview_thread_locks_used = 0 # <<<<<<<<<<<<<< - * cdef PyThread_type_lock[8] __pyx_memoryview_thread_locks = [ - * PyThread_allocate_lock(), - */ - __pyx_memoryview_thread_locks_used = 0; - - /* "View.MemoryView":324 - * - * cdef int __pyx_memoryview_thread_locks_used = 0 - * cdef PyThread_type_lock[8] __pyx_memoryview_thread_locks = [ # <<<<<<<<<<<<<< - * PyThread_allocate_lock(), - * PyThread_allocate_lock(), - */ - __pyx_t_8[0] = PyThread_allocate_lock(); - __pyx_t_8[1] = PyThread_allocate_lock(); - __pyx_t_8[2] = PyThread_allocate_lock(); - __pyx_t_8[3] = PyThread_allocate_lock(); - __pyx_t_8[4] = PyThread_allocate_lock(); - __pyx_t_8[5] = PyThread_allocate_lock(); - __pyx_t_8[6] = PyThread_allocate_lock(); - __pyx_t_8[7] = PyThread_allocate_lock(); - memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_8, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); - - /* "View.MemoryView":982 - * - * - * try: # <<<<<<<<<<<<<< - * count = __pyx_collections_abc_Sequence.count - * index = __pyx_collections_abc_Sequence.index - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "View.MemoryView":983 - * - * try: - * count = __pyx_collections_abc_Sequence.count # <<<<<<<<<<<<<< - * index = __pyx_collections_abc_Sequence.index - * except: - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_count); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 983, __pyx_L17_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict(__pyx_memoryviewslice_type, __pyx_n_s_count, __pyx_t_7) < 0) __PYX_ERR(1, 983, __pyx_L17_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_memoryviewslice_type); - - /* "View.MemoryView":984 - * try: - * count = __pyx_collections_abc_Sequence.count - * index = __pyx_collections_abc_Sequence.index # <<<<<<<<<<<<<< - * except: - * pass - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 984, __pyx_L17_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict(__pyx_memoryviewslice_type, __pyx_n_s_index, __pyx_t_7) < 0) __PYX_ERR(1, 984, __pyx_L17_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_memoryviewslice_type); - - /* "View.MemoryView":982 - * - * - * try: # <<<<<<<<<<<<<< - * count = __pyx_collections_abc_Sequence.count - * index = __pyx_collections_abc_Sequence.index - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L22_try_end; - __pyx_L17_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "View.MemoryView":985 - * count = __pyx_collections_abc_Sequence.count - * index = __pyx_collections_abc_Sequence.index - * except: # <<<<<<<<<<<<<< - * pass - * - */ - /*except:*/ { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L18_exception_handled; - } - __pyx_L18_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - __pyx_L22_try_end:; - } - - /* "View.MemoryView":988 - * pass - * - * try: # <<<<<<<<<<<<<< - * if __pyx_collections_abc_Sequence: - * - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_1); - /*try:*/ { - - /* "View.MemoryView":989 - * - * try: - * if __pyx_collections_abc_Sequence: # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_collections_abc_Sequence); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 989, __pyx_L23_error) - if (__pyx_t_6) { - - /* "View.MemoryView":993 - * - * - * __pyx_collections_abc_Sequence.register(_memoryviewslice) # <<<<<<<<<<<<<< - * __pyx_collections_abc_Sequence.register(array) - * except: - */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_register); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 993, __pyx_L23_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, ((PyObject *)__pyx_memoryviewslice_type)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 993, __pyx_L23_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "View.MemoryView":994 - * - * __pyx_collections_abc_Sequence.register(_memoryviewslice) - * __pyx_collections_abc_Sequence.register(array) # <<<<<<<<<<<<<< - * except: - * pass # ignore failure, it's a minor issue - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_n_s_register); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 994, __pyx_L23_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_array_type)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 994, __pyx_L23_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "View.MemoryView":989 - * - * try: - * if __pyx_collections_abc_Sequence: # <<<<<<<<<<<<<< - * - * - */ - } - - /* "View.MemoryView":988 - * pass - * - * try: # <<<<<<<<<<<<<< - * if __pyx_collections_abc_Sequence: - * - */ - } - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - goto __pyx_L28_try_end; - __pyx_L23_error:; - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "View.MemoryView":995 - * __pyx_collections_abc_Sequence.register(_memoryviewslice) - * __pyx_collections_abc_Sequence.register(array) - * except: # <<<<<<<<<<<<<< - * pass # ignore failure, it's a minor issue - * - */ - /*except:*/ { - __Pyx_ErrRestore(0,0,0); - goto __pyx_L24_exception_handled; - } - __pyx_L24_exception_handled:; - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1); - __pyx_L28_try_end:; - } - - /* "(tree fragment)":1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError - * cdef object __pyx_result - */ - __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_n_s_View_MemoryView); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_7) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":44 - * cimport numpy as cnp - * - * import os # <<<<<<<<<<<<<< - * from datetime import datetime - * import numpy as np - */ - __pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_os, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_7) < 0) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":45 - * - * import os - * from datetime import datetime # <<<<<<<<<<<<<< - * import numpy as np - * - */ - __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_INCREF(__pyx_n_s_datetime); - __Pyx_GIVEREF(__pyx_n_s_datetime); - if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_datetime)) __PYX_ERR(0, 45, __pyx_L1_error); - __pyx_t_4 = __Pyx_Import(__pyx_n_s_datetime, __pyx_t_7, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_datetime, __pyx_t_7) < 0) __PYX_ERR(0, 45, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":46 - * import os - * from datetime import datetime - * import numpy as np # <<<<<<<<<<<<<< - * - * - */ - __pyx_t_4 = __Pyx_ImportDottedModule(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_4) < 0) __PYX_ERR(0, 46, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":89 - * - * - * def __get_pointers_solver(self): # <<<<<<<<<<<<<< - * """ - * Private function to get the pointers for solver - */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_3_AcadosOcpSolverCython__get_pointers_solver, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython___get_poin, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_AcadosOcpSolverCython__get_poin, __pyx_t_4) < 0) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":103 - * - * - * def solve_for_x0(self, x0_bar): # <<<<<<<<<<<<<< - * """ - * Wrapper around `solve()` which sets initial state constraint, solves the OCP, and returns u0. - */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_5solve_for_x0, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_solve_for, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_solve_for_x0, __pyx_t_4) < 0) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":121 - * - * - * def solve(self): # <<<<<<<<<<<<<< - * """ - * Solve the ocp with current input. - */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_7solve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_solve, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_solve, __pyx_t_4) < 0) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":128 - * - * - * def reset(self, reset_qp_solver_mem=1): # <<<<<<<<<<<<<< - * """ - * Sets current iterate to all zeros. - */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_9reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_reset, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_tuple__25); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_reset, __pyx_t_4) < 0) __PYX_ERR(0, 128, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":135 - * - * - * def custom_update(self, data_): # <<<<<<<<<<<<<< - * """ - * A custom function that can be implemented by a user to be called between solver calls. - */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_11custom_update, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_custom_upd, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 135, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_custom_update, __pyx_t_4) < 0) __PYX_ERR(0, 135, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":148 - * - * - * def set_new_time_steps(self, new_time_steps): # <<<<<<<<<<<<<< - * """ - * Set new time steps. - */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_13set_new_time_steps, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_set_new_ti, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_set_new_time_steps, __pyx_t_4) < 0) __PYX_ERR(0, 148, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":199 - * - * - * def update_qp_solver_cond_N(self, qp_solver_cond_N: int): # <<<<<<<<<<<<<< - * """ - * Recreate solver with new value `qp_solver_cond_N` with a partial condensing QP solver. - */ - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_qp_solver_cond_N, __pyx_n_s_int) < 0) __PYX_ERR(0, 199, __pyx_L1_error) - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_15update_qp_solver_cond_N, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_update_qp, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_4); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_update_qp_solver_cond_N, __pyx_t_7) < 0) __PYX_ERR(0, 199, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":233 - * - * - * def eval_param_sens(self, index, stage=0, field="ex"): # <<<<<<<<<<<<<< - * """ - * Calculate the sensitivity of the curent solution with respect to the initial state component of index - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_17eval_param_sens, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_eval_param_3, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 233, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__59); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_eval_param_sens, __pyx_t_7) < 0) __PYX_ERR(0, 233, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":258 - * - * - * def get(self, int stage, str field_): # <<<<<<<<<<<<<< - * """ - * Get the last solution of the solver: - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_19get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_get, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_get, __pyx_t_7) < 0) __PYX_ERR(0, 258, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":301 - * - * - * def print_statistics(self): # <<<<<<<<<<<<<< - * """ - * prints statistics of previous solver run as a table: - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_21print_statistics, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_print_stat, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 301, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_print_statistics, __pyx_t_7) < 0) __PYX_ERR(0, 301, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":319 - * - * - * def store_iterate(self, filename='', overwrite=False): # <<<<<<<<<<<<<< - * """ - * Stores the current iterate of the ocp solver in a json file. - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_23store_iterate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_store_iter, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 319, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__65); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_store_iterate, __pyx_t_7) < 0) __PYX_ERR(0, 319, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":362 - * - * - * def load_iterate(self, filename): # <<<<<<<<<<<<<< - * """ - * Loads the iterate stored in json file with filename into the ocp solver. - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_25load_iterate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_load_itera, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 362, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_load_iterate, __pyx_t_7) < 0) __PYX_ERR(0, 362, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":378 - * - * - * def get_stats(self, field_): # <<<<<<<<<<<<<< - * """ - * Get the information of the last solver call. - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_27get_stats, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_get_stats, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_get_stats, __pyx_t_7) < 0) __PYX_ERR(0, 378, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":460 - * - * - * def __get_stat_int(self, field): # <<<<<<<<<<<<<< - * cdef int out - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, &out) - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_29_AcadosOcpSolverCython__get_stat_int, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython___get_stat, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 460, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_AcadosOcpSolverCython__get_stat, __pyx_t_7) < 0) __PYX_ERR(0, 460, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":465 - * return out - * - * def __get_stat_double(self, field): # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.zeros((1,)) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out.data) - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_31_AcadosOcpSolverCython__get_stat_double, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython___get_stat_2, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 465, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_AcadosOcpSolverCython__get_stat_2, __pyx_t_7) < 0) __PYX_ERR(0, 465, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":470 - * return out - * - * def __get_stat_matrix(self, field, n, m): # <<<<<<<<<<<<<< - * cdef cnp.ndarray[cnp.float64_t, ndim=2] out_mat = np.ascontiguousarray(np.zeros((n, m)), dtype=np.float64) - * acados_solver_common.ocp_nlp_get(self.nlp_config, self.nlp_solver, field, out_mat.data) - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_33_AcadosOcpSolverCython__get_stat_matrix, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython___get_stat_3, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_AcadosOcpSolverCython__get_stat_3, __pyx_t_7) < 0) __PYX_ERR(0, 470, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":476 - * - * - * def get_cost(self): # <<<<<<<<<<<<<< - * """ - * Returns the cost value of the current solution. - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_35get_cost, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_get_cost, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_get_cost, __pyx_t_7) < 0) __PYX_ERR(0, 476, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":492 - * - * - * def get_residuals(self, recompute=False): # <<<<<<<<<<<<<< - * """ - * Returns an array of the form [res_stat, res_eq, res_ineq, res_comp]. - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_37get_residuals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_get_residu, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 492, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__79); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_get_residuals, __pyx_t_7) < 0) __PYX_ERR(0, 492, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":524 - * - * # Note: this function should not be used anymore, better use cost_set, constraints_set - * def set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * - * """ - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_39set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_set, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 524, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_set, __pyx_t_7) < 0) __PYX_ERR(0, 524, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":590 - * return - * - * def cost_set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set numerical data in the cost module of the solver. - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_41cost_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_cost_set, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_cost_set, __pyx_t_7) < 0) __PYX_ERR(0, 590, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":625 - * - * - * def constraints_set(self, int stage, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set numerical data in the constraint module of the solver. - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_43constraints_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_constraint_2, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 625, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_constraints_set, __pyx_t_7) < 0) __PYX_ERR(0, 625, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":663 - * - * - * def get_from_qp_in(self, int stage, str field_): # <<<<<<<<<<<<<< - * """ - * Get numerical data from the dynamics module of the solver: - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_45get_from_qp_in, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_get_from_q, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 663, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_get_from_qp_in, __pyx_t_7) < 0) __PYX_ERR(0, 663, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":685 - * - * - * def options_set(self, str field_, value_): # <<<<<<<<<<<<<< - * """ - * Set options of the solver. - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_47options_set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_options_se_2, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_options_set, __pyx_t_7) < 0) __PYX_ERR(0, 685, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "acados_template/acados_ocp_solver_pyx.pyx":748 - * - * - * def set_params_sparse(self, int stage, idx_values_, param_values_): # <<<<<<<<<<<<<< - * """ - * set parameters of the solvers external function partially: - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_49set_params_sparse, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython_set_params, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 748, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython, __pyx_n_s_set_params_sparse, __pyx_t_7) < 0) __PYX_ERR(0, 748, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - PyType_Modified(__pyx_ptype_15acados_template_21acados_ocp_solver_pyx_AcadosOcpSolverCython); - - /* "(tree fragment)":1 - * def __reduce_cython__(self): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_53__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython___reduce_c, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_7) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "(tree fragment)":3 - * def __reduce_cython__(self): - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< - * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" - */ - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_15acados_template_21acados_ocp_solver_pyx_21AcadosOcpSolverCython_55__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AcadosOcpSolverCython___setstate, NULL, __pyx_n_s_acados_template_acados_ocp_solve, __pyx_d, ((PyObject *)__pyx_codeobj__93)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_7) < 0) __PYX_ERR(1, 3, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /* "acados_template/acados_ocp_solver_pyx.pyx":1 - * # -*- coding: future_fstrings -*- # <<<<<<<<<<<<<< - * # - * # Copyright (c) The acados authors. - */ - __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_7) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - if (__pyx_m) { - if (__pyx_d && stringtab_initialized) { - __Pyx_AddTraceback("init acados_template.acados_ocp_solver_pyx", __pyx_clineno, __pyx_lineno, __pyx_filename); - } - #if !CYTHON_USE_MODULE_STATE - Py_CLEAR(__pyx_m); - #else - Py_DECREF(__pyx_m); - if (pystate_addmodule_run) { - PyObject *tp, *value, *tb; - PyErr_Fetch(&tp, &value, &tb); - PyState_RemoveModule(&__pyx_moduledef); - PyErr_Restore(tp, value, tb); - } - #endif - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init acados_template.acados_ocp_solver_pyx"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} -/* #### Code section: cleanup_globals ### */ -/* #### Code section: cleanup_module ### */ -/* #### Code section: main_method ### */ -/* #### Code section: utility_code_pragmas ### */ -#ifdef _MSC_VER -#pragma warning( push ) -/* Warning 4127: conditional expression is constant - * Cython uses constant conditional expressions to allow in inline functions to be optimized at - * compile-time, so this warning is not useful - */ -#pragma warning( disable : 4127 ) -#endif - - - -/* #### Code section: utility_code_def ### */ - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule(modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, "RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyErrExceptionMatches */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; i= 0x030C00A6 - PyObject *current_exception = tstate->current_exception; - if (unlikely(!current_exception)) return 0; - exc_type = (PyObject*) Py_TYPE(current_exception); - if (exc_type == err) return 1; -#else - exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; -#endif - #if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(exc_type); - #endif - if (unlikely(PyTuple_Check(err))) { - result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - } else { - result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); - } - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(exc_type); - #endif - return result; -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -#if PY_VERSION_HEX >= 0x030C00A6 - PyObject *tmp_value; - assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); - if (value) { - #if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) - #endif - PyException_SetTraceback(value, tb); - } - tmp_value = tstate->current_exception; - tstate->current_exception = value; - Py_XDECREF(tmp_value); - Py_XDECREF(type); - Py_XDECREF(tb); -#else - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#endif -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#if PY_VERSION_HEX >= 0x030C00A6 - PyObject* exc_value; - exc_value = tstate->current_exception; - tstate->current_exception = 0; - *value = exc_value; - *type = NULL; - *tb = NULL; - if (exc_value) { - *type = (PyObject*) Py_TYPE(exc_value); - Py_INCREF(*type); - #if CYTHON_COMPILING_IN_CPYTHON - *tb = ((PyBaseExceptionObject*) exc_value)->traceback; - Py_XINCREF(*tb); - #else - *tb = PyException_GetTraceback(exc_value); - #endif - } -#else - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#endif -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* PyObjectGetAttrStrNoError */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 -static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - __Pyx_PyErr_Clear(); -} -#endif -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { - PyObject *result; -#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 - (void) PyObject_GetOptionalAttr(obj, attr_name, &result); - return result; -#else -#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { - return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); - } -#endif - result = __Pyx_PyObject_GetAttrStr(obj, attr_name); - if (unlikely(!result)) { - __Pyx_PyObject_GetAttrStr_ClearAttributeError(); - } - return result; -#endif -} - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); - if (unlikely(!result) && !PyErr_Occurred()) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* TupleAndListFromArray */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { - PyObject *v; - Py_ssize_t i; - for (i = 0; i < length; i++) { - v = dest[i] = src[i]; - Py_INCREF(v); - } -} -static CYTHON_INLINE PyObject * -__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) -{ - PyObject *res; - if (n <= 0) { - Py_INCREF(__pyx_empty_tuple); - return __pyx_empty_tuple; - } - res = PyTuple_New(n); - if (unlikely(res == NULL)) return NULL; - __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); - return res; -} -static CYTHON_INLINE PyObject * -__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) -{ - PyObject *res; - if (n <= 0) { - return PyList_New(0); - } - res = PyList_New(n); - if (unlikely(res == NULL)) return NULL; - __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); - return res; -} -#endif - -/* BytesEquals */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API - return PyObject_RichCompareBool(s1, s2, equals); -#else - if (s1 == s2) { - return (equals == Py_EQ); - } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { - const char *ps1, *ps2; - Py_ssize_t length = PyBytes_GET_SIZE(s1); - if (length != PyBytes_GET_SIZE(s2)) - return (equals == Py_NE); - ps1 = PyBytes_AS_STRING(s1); - ps2 = PyBytes_AS_STRING(s2); - if (ps1[0] != ps2[0]) { - return (equals == Py_NE); - } else if (length == 1) { - return (equals == Py_EQ); - } else { - int result; -#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) - Py_hash_t hash1, hash2; - hash1 = ((PyBytesObject*)s1)->ob_shash; - hash2 = ((PyBytesObject*)s2)->ob_shash; - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - return (equals == Py_NE); - } -#endif - result = memcmp(ps1, ps2, (size_t)length); - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { - return (equals == Py_NE); - } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { - return (equals == Py_NE); - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -#endif -} - -/* UnicodeEquals */ -static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API - return PyObject_RichCompareBool(s1, s2, equals); -#else -#if PY_MAJOR_VERSION < 3 - PyObject* owned_ref = NULL; -#endif - int s1_is_unicode, s2_is_unicode; - if (s1 == s2) { - goto return_eq; - } - s1_is_unicode = PyUnicode_CheckExact(s1); - s2_is_unicode = PyUnicode_CheckExact(s2); -#if PY_MAJOR_VERSION < 3 - if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { - owned_ref = PyUnicode_FromObject(s2); - if (unlikely(!owned_ref)) - return -1; - s2 = owned_ref; - s2_is_unicode = 1; - } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { - owned_ref = PyUnicode_FromObject(s1); - if (unlikely(!owned_ref)) - return -1; - s1 = owned_ref; - s1_is_unicode = 1; - } else if (((!s2_is_unicode) & (!s1_is_unicode))) { - return __Pyx_PyBytes_Equals(s1, s2, equals); - } -#endif - if (s1_is_unicode & s2_is_unicode) { - Py_ssize_t length; - int kind; - void *data1, *data2; - if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) - return -1; - length = __Pyx_PyUnicode_GET_LENGTH(s1); - if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { - goto return_ne; - } -#if CYTHON_USE_UNICODE_INTERNALS - { - Py_hash_t hash1, hash2; - #if CYTHON_PEP393_ENABLED - hash1 = ((PyASCIIObject*)s1)->hash; - hash2 = ((PyASCIIObject*)s2)->hash; - #else - hash1 = ((PyUnicodeObject*)s1)->hash; - hash2 = ((PyUnicodeObject*)s2)->hash; - #endif - if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { - goto return_ne; - } - } -#endif - kind = __Pyx_PyUnicode_KIND(s1); - if (kind != __Pyx_PyUnicode_KIND(s2)) { - goto return_ne; - } - data1 = __Pyx_PyUnicode_DATA(s1); - data2 = __Pyx_PyUnicode_DATA(s2); - if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { - goto return_ne; - } else if (length == 1) { - goto return_eq; - } else { - int result = memcmp(data1, data2, (size_t)(length * kind)); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ) ? (result == 0) : (result != 0); - } - } else if ((s1 == Py_None) & s2_is_unicode) { - goto return_ne; - } else if ((s2 == Py_None) & s1_is_unicode) { - goto return_ne; - } else { - int result; - PyObject* py_result = PyObject_RichCompare(s1, s2, equals); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - if (!py_result) - return -1; - result = __Pyx_PyObject_IsTrue(py_result); - Py_DECREF(py_result); - return result; - } -return_eq: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_EQ); -return_ne: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(owned_ref); - #endif - return (equals == Py_NE); -#endif -} - -/* fastcall */ -#if CYTHON_METH_FASTCALL -static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) -{ - Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); - for (i = 0; i < n; i++) - { - if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; - } - for (i = 0; i < n; i++) - { - int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); - if (unlikely(eq != 0)) { - if (unlikely(eq < 0)) return NULL; - return kwvalues[i]; - } - } - return NULL; -} -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 -CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { - Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); - PyObject *dict; - dict = PyDict_New(); - if (unlikely(!dict)) - return NULL; - for (i=0; i= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject *const *kwvalues, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); - while (1) { - Py_XDECREF(key); key = NULL; - Py_XDECREF(value); value = NULL; - if (kwds_is_tuple) { - Py_ssize_t size; -#if CYTHON_ASSUME_SAFE_MACROS - size = PyTuple_GET_SIZE(kwds); -#else - size = PyTuple_Size(kwds); - if (size < 0) goto bad; -#endif - if (pos >= size) break; -#if CYTHON_AVOID_BORROWED_REFS - key = __Pyx_PySequence_ITEM(kwds, pos); - if (!key) goto bad; -#elif CYTHON_ASSUME_SAFE_MACROS - key = PyTuple_GET_ITEM(kwds, pos); -#else - key = PyTuple_GetItem(kwds, pos); - if (!key) goto bad; -#endif - value = kwvalues[pos]; - pos++; - } - else - { - if (!PyDict_Next(kwds, &pos, &key, &value)) break; -#if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(key); -#endif - } - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; -#if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(value); - Py_DECREF(key); -#endif - key = NULL; - value = NULL; - continue; - } -#if !CYTHON_AVOID_BORROWED_REFS - Py_INCREF(key); -#endif - Py_INCREF(value); - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; -#if CYTHON_AVOID_BORROWED_REFS - value = NULL; -#endif - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = ( - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key) - ); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; -#if CYTHON_AVOID_BORROWED_REFS - value = NULL; -#endif - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - Py_XDECREF(key); - Py_XDECREF(value); - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - #if PY_MAJOR_VERSION < 3 - PyErr_Format(PyExc_TypeError, - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - PyErr_Format(PyExc_TypeError, - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - Py_XDECREF(key); - Py_XDECREF(value); - return -1; -} - -/* ArgTypeTest */ -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - __Pyx_TypeName type_name; - __Pyx_TypeName obj_type_name; - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - type_name = __Pyx_PyType_GetName(type); - obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME - ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name); - __Pyx_DECREF_TypeName(type_name); - __Pyx_DECREF_TypeName(obj_type_name); - return 0; -} - -/* RaiseException */ -#if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - __Pyx_PyThreadState_declare - CYTHON_UNUSED_VAR(cause); - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { - #if PY_VERSION_HEX >= 0x030C00A6 - PyException_SetTraceback(value, tb); - #elif CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#else - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = __Pyx_PyFrame_GetLocalsplus(f); - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - #if PY_MAJOR_VERSION < 3 - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { - return NULL; - } - #else - if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { - return NULL; - } - #endif - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = Py_TYPE(func)->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - #if PY_MAJOR_VERSION < 3 - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - #else - if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) - return NULL; - #endif - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); - self = __Pyx_CyOrPyCFunction_GET_SELF(func); - #if PY_MAJOR_VERSION < 3 - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - #else - if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) - return NULL; - #endif - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectFastCall */ -#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API -static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { - PyObject *argstuple; - PyObject *result = 0; - size_t i; - argstuple = PyTuple_New((Py_ssize_t)nargs); - if (unlikely(!argstuple)) return NULL; - for (i = 0; i < nargs; i++) { - Py_INCREF(args[i]); - if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; - } - result = __Pyx_PyObject_Call(func, argstuple, kwargs); - bad: - Py_DECREF(argstuple); - return result; -} -#endif -static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { - Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); -#if CYTHON_COMPILING_IN_CPYTHON - if (nargs == 0 && kwargs == NULL) { - if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) - return __Pyx_PyObject_CallMethO(func, NULL); - } - else if (nargs == 1 && kwargs == NULL) { - if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) - return __Pyx_PyObject_CallMethO(func, args[0]); - } -#endif - #if PY_VERSION_HEX < 0x030800B1 - #if CYTHON_FAST_PYCCALL - if (PyCFunction_Check(func)) { - if (kwargs) { - return _PyCFunction_FastCallDict(func, args, nargs, kwargs); - } else { - return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); - } - } - #if PY_VERSION_HEX >= 0x030700A1 - if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { - return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); - } - #endif - #endif - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); - } - #endif - #endif - if (kwargs == NULL) { - #if CYTHON_VECTORCALL - #if PY_VERSION_HEX < 0x03090000 - vectorcallfunc f = _PyVectorcall_Function(func); - #else - vectorcallfunc f = PyVectorcall_Function(func); - #endif - if (f) { - return f(func, args, (size_t)nargs, NULL); - } - #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL - if (__Pyx_CyFunction_CheckExact(func)) { - __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); - if (f) return f(func, args, (size_t)nargs, NULL); - } - #endif - } - if (nargs == 0) { - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); - } - #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API - return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); - #else - return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); - #endif -} - -/* RaiseUnexpectedTypeError */ -static int -__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) -{ - __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME, - expected, obj_type_name); - __Pyx_DECREF_TypeName(obj_type_name); - return 0; -} - -/* CIntToDigits */ -static const char DIGIT_PAIRS_10[2*10*10+1] = { - "00010203040506070809" - "10111213141516171819" - "20212223242526272829" - "30313233343536373839" - "40414243444546474849" - "50515253545556575859" - "60616263646566676869" - "70717273747576777879" - "80818283848586878889" - "90919293949596979899" -}; -static const char DIGIT_PAIRS_8[2*8*8+1] = { - "0001020304050607" - "1011121314151617" - "2021222324252627" - "3031323334353637" - "4041424344454647" - "5051525354555657" - "6061626364656667" - "7071727374757677" -}; -static const char DIGITS_HEX[2*16+1] = { - "0123456789abcdef" - "0123456789ABCDEF" -}; - -/* BuildPyUnicode */ -static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength, - int prepend_sign, char padding_char) { - PyObject *uval; - Py_ssize_t uoffset = ulength - clength; -#if CYTHON_USE_UNICODE_INTERNALS - Py_ssize_t i; -#if CYTHON_PEP393_ENABLED - void *udata; - uval = PyUnicode_New(ulength, 127); - if (unlikely(!uval)) return NULL; - udata = PyUnicode_DATA(uval); -#else - Py_UNICODE *udata; - uval = PyUnicode_FromUnicode(NULL, ulength); - if (unlikely(!uval)) return NULL; - udata = PyUnicode_AS_UNICODE(uval); -#endif - if (uoffset > 0) { - i = 0; - if (prepend_sign) { - __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-'); - i++; - } - for (; i < uoffset; i++) { - __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char); - } - } - for (i=0; i < clength; i++) { - __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]); - } -#else - { - PyObject *sign = NULL, *padding = NULL; - uval = NULL; - if (uoffset > 0) { - prepend_sign = !!prepend_sign; - if (uoffset > prepend_sign) { - padding = PyUnicode_FromOrdinal(padding_char); - if (likely(padding) && uoffset > prepend_sign + 1) { - PyObject *tmp; - PyObject *repeat = PyInt_FromSsize_t(uoffset - prepend_sign); - if (unlikely(!repeat)) goto done_or_error; - tmp = PyNumber_Multiply(padding, repeat); - Py_DECREF(repeat); - Py_DECREF(padding); - padding = tmp; - } - if (unlikely(!padding)) goto done_or_error; - } - if (prepend_sign) { - sign = PyUnicode_FromOrdinal('-'); - if (unlikely(!sign)) goto done_or_error; - } - } - uval = PyUnicode_DecodeASCII(chars, clength, NULL); - if (likely(uval) && padding) { - PyObject *tmp = PyNumber_Add(padding, uval); - Py_DECREF(uval); - uval = tmp; - } - if (likely(uval) && sign) { - PyObject *tmp = PyNumber_Add(sign, uval); - Py_DECREF(uval); - uval = tmp; - } -done_or_error: - Py_XDECREF(padding); - Py_XDECREF(sign); - } -#endif - return uval; -} - -/* CIntToPyUnicode */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) { - char digits[sizeof(int)*3+2]; - char *dpos, *end = digits + sizeof(int)*3+2; - const char *hex_digits = DIGITS_HEX; - Py_ssize_t length, ulength; - int prepend_sign, last_one_off; - int remaining; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (format_char == 'X') { - hex_digits += 16; - format_char = 'x'; - } - remaining = value; - last_one_off = 0; - dpos = end; - do { - int digit_pos; - switch (format_char) { - case 'o': - digit_pos = abs((int)(remaining % (8*8))); - remaining = (int) (remaining / (8*8)); - dpos -= 2; - memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2); - last_one_off = (digit_pos < 8); - break; - case 'd': - digit_pos = abs((int)(remaining % (10*10))); - remaining = (int) (remaining / (10*10)); - dpos -= 2; - memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2); - last_one_off = (digit_pos < 10); - break; - case 'x': - *(--dpos) = hex_digits[abs((int)(remaining % 16))]; - remaining = (int) (remaining / 16); - break; - default: - assert(0); - break; - } - } while (unlikely(remaining != 0)); - assert(!last_one_off || *dpos == '0'); - dpos += last_one_off; - length = end - dpos; - ulength = length; - prepend_sign = 0; - if (!is_unsigned && value <= neg_one) { - if (padding_char == ' ' || width <= length + 1) { - *(--dpos) = '-'; - ++length; - } else { - prepend_sign = 1; - } - ++ulength; - } - if (width > ulength) { - ulength = width; - } - if (ulength == 1) { - return PyUnicode_FromOrdinal(*dpos); - } - return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); -} - -/* CIntToPyUnicode */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { - char digits[sizeof(Py_ssize_t)*3+2]; - char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2; - const char *hex_digits = DIGITS_HEX; - Py_ssize_t length, ulength; - int prepend_sign, last_one_off; - Py_ssize_t remaining; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (format_char == 'X') { - hex_digits += 16; - format_char = 'x'; - } - remaining = value; - last_one_off = 0; - dpos = end; - do { - int digit_pos; - switch (format_char) { - case 'o': - digit_pos = abs((int)(remaining % (8*8))); - remaining = (Py_ssize_t) (remaining / (8*8)); - dpos -= 2; - memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2); - last_one_off = (digit_pos < 8); - break; - case 'd': - digit_pos = abs((int)(remaining % (10*10))); - remaining = (Py_ssize_t) (remaining / (10*10)); - dpos -= 2; - memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2); - last_one_off = (digit_pos < 10); - break; - case 'x': - *(--dpos) = hex_digits[abs((int)(remaining % 16))]; - remaining = (Py_ssize_t) (remaining / 16); - break; - default: - assert(0); - break; - } - } while (unlikely(remaining != 0)); - assert(!last_one_off || *dpos == '0'); - dpos += last_one_off; - length = end - dpos; - ulength = length; - prepend_sign = 0; - if (!is_unsigned && value <= neg_one) { - if (padding_char == ' ' || width <= length + 1) { - *(--dpos) = '-'; - ++length; - } else { - prepend_sign = 1; - } - ++ulength; - } - if (width > ulength) { - ulength = width; - } - if (ulength == 1) { - return PyUnicode_FromOrdinal(*dpos); - } - return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); -} - -/* JoinPyUnicode */ -static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, - Py_UCS4 max_char) { -#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - PyObject *result_uval; - int result_ukind, kind_shift; - Py_ssize_t i, char_pos; - void *result_udata; - CYTHON_MAYBE_UNUSED_VAR(max_char); -#if CYTHON_PEP393_ENABLED - result_uval = PyUnicode_New(result_ulength, max_char); - if (unlikely(!result_uval)) return NULL; - result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; - kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; - result_udata = PyUnicode_DATA(result_uval); -#else - result_uval = PyUnicode_FromUnicode(NULL, result_ulength); - if (unlikely(!result_uval)) return NULL; - result_ukind = sizeof(Py_UNICODE); - kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1; - result_udata = PyUnicode_AS_UNICODE(result_uval); -#endif - assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); - char_pos = 0; - for (i=0; i < value_count; i++) { - int ukind; - Py_ssize_t ulength; - void *udata; - PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); - if (unlikely(__Pyx_PyUnicode_READY(uval))) - goto bad; - ulength = __Pyx_PyUnicode_GET_LENGTH(uval); - if (unlikely(!ulength)) - continue; - if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) - goto overflow; - ukind = __Pyx_PyUnicode_KIND(uval); - udata = __Pyx_PyUnicode_DATA(uval); - if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { - memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); - } else { - #if PY_VERSION_HEX >= 0x030d0000 - if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; - #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) - _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); - #else - Py_ssize_t j; - for (j=0; j < ulength; j++) { - Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); - __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); - } - #endif - } - char_pos += ulength; - } - return result_uval; -overflow: - PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); -bad: - Py_DECREF(result_uval); - return NULL; -#else - CYTHON_UNUSED_VAR(max_char); - CYTHON_UNUSED_VAR(result_ulength); - CYTHON_UNUSED_VAR(value_count); - return PyUnicode_Join(__pyx_empty_unicode, value_tuple); -#endif -} - -/* GetAttr */ -static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { -#if CYTHON_USE_TYPE_SLOTS -#if PY_MAJOR_VERSION >= 3 - if (likely(PyUnicode_Check(n))) -#else - if (likely(PyString_Check(n))) -#endif - return __Pyx_PyObject_GetAttrStr(o, n); -#endif - return PyObject_GetAttr(o, n); -} - -/* GetItemInt */ -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (unlikely(!j)) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; - PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; - if (mm && mm->mp_subscript) { - PyObject *r, *key = PyInt_FromSsize_t(i); - if (unlikely(!key)) return NULL; - r = mm->mp_subscript(o, key); - Py_DECREF(key); - return r; - } - if (likely(sm && sm->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { - Py_ssize_t l = sm->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return sm->sq_item(o, i); - } - } -#else - if (is_list || !PyMapping_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* PyObjectCallOneArg */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *args[2] = {NULL, arg}; - return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); -} - -/* ObjectGetItem */ -#if CYTHON_USE_TYPE_SLOTS -static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { - PyObject *runerr = NULL; - Py_ssize_t key_value; - key_value = __Pyx_PyIndex_AsSsize_t(index); - if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); - } - if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { - __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index)); - PyErr_Clear(); - PyErr_Format(PyExc_IndexError, - "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); - __Pyx_DECREF_TypeName(index_type_name); - } - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { - __Pyx_TypeName obj_type_name; - if (likely(PyType_Check(obj))) { - PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem); - if (!meth) { - PyErr_Clear(); - } else { - PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); - Py_DECREF(meth); - return result; - } - } - obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - PyErr_Format(PyExc_TypeError, - "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); - __Pyx_DECREF_TypeName(obj_type_name); - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { - PyTypeObject *tp = Py_TYPE(obj); - PyMappingMethods *mm = tp->tp_as_mapping; - PySequenceMethods *sm = tp->tp_as_sequence; - if (likely(mm && mm->mp_subscript)) { - return mm->mp_subscript(obj, key); - } - if (likely(sm && sm->sq_item)) { - return __Pyx_PyObject_GetIndex(obj, key); - } - return __Pyx_PyObject_GetItem_Slow(obj, key); -} -#endif - -/* KeywordStringCheck */ -static int __Pyx_CheckKeywordStrings( - PyObject *kw, - const char* function_name, - int kw_allowed) -{ - PyObject* key = 0; - Py_ssize_t pos = 0; -#if CYTHON_COMPILING_IN_PYPY - if (!kw_allowed && PyDict_Next(kw, &pos, &key, 0)) - goto invalid_keyword; - return 1; -#else - if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) { - Py_ssize_t kwsize; -#if CYTHON_ASSUME_SAFE_MACROS - kwsize = PyTuple_GET_SIZE(kw); -#else - kwsize = PyTuple_Size(kw); - if (kwsize < 0) return 0; -#endif - if (unlikely(kwsize == 0)) - return 1; - if (!kw_allowed) { -#if CYTHON_ASSUME_SAFE_MACROS - key = PyTuple_GET_ITEM(kw, 0); -#else - key = PyTuple_GetItem(kw, pos); - if (!key) return 0; -#endif - goto invalid_keyword; - } -#if PY_VERSION_HEX < 0x03090000 - for (pos = 0; pos < kwsize; pos++) { -#if CYTHON_ASSUME_SAFE_MACROS - key = PyTuple_GET_ITEM(kw, pos); -#else - key = PyTuple_GetItem(kw, pos); - if (!key) return 0; -#endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } -#endif - return 1; - } - while (PyDict_Next(kw, &pos, &key, 0)) { - #if PY_MAJOR_VERSION < 3 - if (unlikely(!PyString_Check(key))) - #endif - if (unlikely(!PyUnicode_Check(key))) - goto invalid_keyword_type; - } - if (!kw_allowed && unlikely(key)) - goto invalid_keyword; - return 1; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - return 0; -#endif -invalid_keyword: - #if PY_MAJOR_VERSION < 3 - PyErr_Format(PyExc_TypeError, - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - PyErr_Format(PyExc_TypeError, - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif - return 0; -} - -/* DivInt[Py_ssize_t] */ -static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) { - Py_ssize_t q = a / b; - Py_ssize_t r = a - q*b; - q -= ((r != 0) & ((r ^ b) < 0)); - return q; -} - -/* GetAttr3 */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 -static PyObject *__Pyx_GetAttr3Default(PyObject *d) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - return NULL; - __Pyx_PyErr_Clear(); - Py_INCREF(d); - return d; -} -#endif -static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { - PyObject *r; -#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 - int res = PyObject_GetOptionalAttr(o, n, &r); - return (res != 0) ? r : __Pyx_NewRef(d); -#else - #if CYTHON_USE_TYPE_SLOTS - if (likely(PyString_Check(n))) { - r = __Pyx_PyObject_GetAttrStrNoError(o, n); - if (unlikely(!r) && likely(!PyErr_Occurred())) { - r = __Pyx_NewRef(d); - } - return r; - } - #endif - r = PyObject_GetAttr(o, n); - return (likely(r)) ? r : __Pyx_GetAttr3Default(d); -#endif -} - -/* PyDictVersioning */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { - PyObject **dictptr = NULL; - Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; - if (offset) { -#if CYTHON_COMPILING_IN_CPYTHON - dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); -#else - dictptr = _PyObject_GetDictPtr(obj); -#endif - } - return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; -} -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) - return 0; - return obj_dict_version == __Pyx_get_object_dict_version(obj); -} -#endif - -/* GetModuleGlobalName */ -#if CYTHON_USE_DICT_VERSIONS -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) -#else -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) -#endif -{ - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } else if (unlikely(PyErr_Occurred())) { - return NULL; - } -#elif CYTHON_COMPILING_IN_LIMITED_API - if (unlikely(!__pyx_m)) { - return NULL; - } - result = PyObject_GetAttr(__pyx_m, name); - if (likely(result)) { - return result; - } -#else - result = PyDict_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } - PyErr_Clear(); -#endif - return __Pyx_GetBuiltinName(name); -} - -/* RaiseTooManyValuesToUnpack */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* RaiseNoneIterError */ -static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); -} - -/* ExtTypeTest */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - __Pyx_TypeName obj_type_name; - __Pyx_TypeName type_name; - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - type_name = __Pyx_PyType_GetName(type); - PyErr_Format(PyExc_TypeError, - "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME, - obj_type_name, type_name); - __Pyx_DECREF_TypeName(obj_type_name); - __Pyx_DECREF_TypeName(type_name); - return 0; -} - -/* GetTopmostException */ -#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE -static _PyErr_StackItem * -__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) -{ - _PyErr_StackItem *exc_info = tstate->exc_info; - while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && - exc_info->previous_item != NULL) - { - exc_info = exc_info->previous_item; - } - return exc_info; -} -#endif - -/* SaveResetException */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 - _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); - PyObject *exc_value = exc_info->exc_value; - if (exc_value == NULL || exc_value == Py_None) { - *value = NULL; - *type = NULL; - *tb = NULL; - } else { - *value = exc_value; - Py_INCREF(*value); - *type = (PyObject*) Py_TYPE(exc_value); - Py_INCREF(*type); - *tb = PyException_GetTraceback(exc_value); - } - #elif CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); - *type = exc_info->exc_type; - *value = exc_info->exc_value; - *tb = exc_info->exc_traceback; - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); - #endif -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 - _PyErr_StackItem *exc_info = tstate->exc_info; - PyObject *tmp_value = exc_info->exc_value; - exc_info->exc_value = value; - Py_XDECREF(tmp_value); - Py_XDECREF(type); - Py_XDECREF(tb); - #else - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = type; - exc_info->exc_value = value; - exc_info->exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); - #endif -} -#endif - -/* GetException */ -#if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) -#endif -{ - PyObject *local_type = NULL, *local_value, *local_tb = NULL; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if PY_VERSION_HEX >= 0x030C00A6 - local_value = tstate->current_exception; - tstate->current_exception = 0; - if (likely(local_value)) { - local_type = (PyObject*) Py_TYPE(local_value); - Py_INCREF(local_type); - local_tb = PyException_GetTraceback(local_value); - } - #else - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - #endif -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 - if (unlikely(tstate->current_exception)) -#elif CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if CYTHON_USE_EXC_INFO_STACK - { - _PyErr_StackItem *exc_info = tstate->exc_info; - #if PY_VERSION_HEX >= 0x030B00a4 - tmp_value = exc_info->exc_value; - exc_info->exc_value = local_value; - tmp_type = NULL; - tmp_tb = NULL; - Py_XDECREF(local_type); - Py_XDECREF(local_tb); - #else - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = local_type; - exc_info->exc_value = local_value; - exc_info->exc_traceback = local_tb; - #endif - } - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* SwapException */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_value = exc_info->exc_value; - exc_info->exc_value = *value; - if (tmp_value == NULL || tmp_value == Py_None) { - Py_XDECREF(tmp_value); - tmp_value = NULL; - tmp_type = NULL; - tmp_tb = NULL; - } else { - tmp_type = (PyObject*) Py_TYPE(tmp_value); - Py_INCREF(tmp_type); - #if CYTHON_COMPILING_IN_CPYTHON - tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; - Py_XINCREF(tmp_tb); - #else - tmp_tb = PyException_GetTraceback(tmp_value); - #endif - } - #elif CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = *type; - exc_info->exc_value = *value; - exc_info->exc_traceback = *tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = *type; - tstate->exc_value = *value; - tstate->exc_traceback = *tb; - #endif - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#else -static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); - PyErr_SetExcInfo(*type, *value, *tb); - *type = tmp_type; - *value = tmp_value; - *tb = tmp_tb; -} -#endif - -/* Import */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *module = 0; - PyObject *empty_dict = 0; - PyObject *empty_list = 0; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (unlikely(!py_import)) - goto bad; - if (!from_list) { - empty_list = PyList_New(0); - if (unlikely(!empty_list)) - goto bad; - from_list = empty_list; - } - #endif - empty_dict = PyDict_New(); - if (unlikely(!empty_dict)) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if (strchr(__Pyx_MODULE_NAME, '.') != NULL) { - module = PyImport_ImportModuleLevelObject( - name, __pyx_d, empty_dict, from_list, 1); - if (unlikely(!module)) { - if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (unlikely(!py_level)) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, __pyx_d, empty_dict, from_list, level); - #endif - } - } -bad: - Py_XDECREF(empty_dict); - Py_XDECREF(empty_list); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - return module; -} - -/* ImportDottedModule */ -#if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { - PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; - if (unlikely(PyErr_Occurred())) { - PyErr_Clear(); - } - if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) { - partial_name = name; - } else { - slice = PySequence_GetSlice(parts_tuple, 0, count); - if (unlikely(!slice)) - goto bad; - sep = PyUnicode_FromStringAndSize(".", 1); - if (unlikely(!sep)) - goto bad; - partial_name = PyUnicode_Join(sep, slice); - } - PyErr_Format( -#if PY_MAJOR_VERSION < 3 - PyExc_ImportError, - "No module named '%s'", PyString_AS_STRING(partial_name)); -#else -#if PY_VERSION_HEX >= 0x030600B1 - PyExc_ModuleNotFoundError, -#else - PyExc_ImportError, -#endif - "No module named '%U'", partial_name); -#endif -bad: - Py_XDECREF(sep); - Py_XDECREF(slice); - Py_XDECREF(partial_name); - return NULL; -} -#endif -#if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { - PyObject *imported_module; -#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) - PyObject *modules = PyImport_GetModuleDict(); - if (unlikely(!modules)) - return NULL; - imported_module = __Pyx_PyDict_GetItemStr(modules, name); - Py_XINCREF(imported_module); -#else - imported_module = PyImport_GetModule(name); -#endif - return imported_module; -} -#endif -#if PY_MAJOR_VERSION >= 3 -static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { - Py_ssize_t i, nparts; - nparts = PyTuple_GET_SIZE(parts_tuple); - for (i=1; i < nparts && module; i++) { - PyObject *part, *submodule; -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - part = PyTuple_GET_ITEM(parts_tuple, i); -#else - part = PySequence_ITEM(parts_tuple, i); -#endif - submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); -#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(part); -#endif - Py_DECREF(module); - module = submodule; - } - if (unlikely(!module)) { - return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); - } - return module; -} -#endif -static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { -#if PY_MAJOR_VERSION < 3 - PyObject *module, *from_list, *star = __pyx_n_s__3; - CYTHON_UNUSED_VAR(parts_tuple); - from_list = PyList_New(1); - if (unlikely(!from_list)) - return NULL; - Py_INCREF(star); - PyList_SET_ITEM(from_list, 0, star); - module = __Pyx_Import(name, from_list, 0); - Py_DECREF(from_list); - return module; -#else - PyObject *imported_module; - PyObject *module = __Pyx_Import(name, NULL, 0); - if (!parts_tuple || unlikely(!module)) - return module; - imported_module = __Pyx__ImportDottedModule_Lookup(name); - if (likely(imported_module)) { - Py_DECREF(module); - return imported_module; - } - PyErr_Clear(); - return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); -#endif -} -static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1 - PyObject *module = __Pyx__ImportDottedModule_Lookup(name); - if (likely(module)) { - PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec); - if (likely(spec)) { - PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing); - if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { - Py_DECREF(spec); - spec = NULL; - } - Py_XDECREF(unsafe); - } - if (likely(!spec)) { - PyErr_Clear(); - return module; - } - Py_DECREF(spec); - Py_DECREF(module); - } else if (PyErr_Occurred()) { - PyErr_Clear(); - } -#endif - return __Pyx__ImportDottedModule(name, parts_tuple); -} - -/* FastTypeChecks */ -#if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (cls == a || cls == b) return 1; - mro = cls->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - PyObject *base = PyTuple_GET_ITEM(mro, i); - if (base == (PyObject *)a || base == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - if (exc_type1) { - return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); - } else { - return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; itp_as_sequence && type->tp_as_sequence->sq_repeat)) { - return type->tp_as_sequence->sq_repeat(seq, mul); - } else -#endif - { - return __Pyx_PySequence_Multiply_Generic(seq, mul); - } -} - -/* SetItemInt */ -static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { - int r; - if (unlikely(!j)) return -1; - r = PyObject_SetItem(o, j, v); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, - CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); - if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { - PyObject* old = PyList_GET_ITEM(o, n); - Py_INCREF(v); - PyList_SET_ITEM(o, n, v); - Py_DECREF(old); - return 1; - } - } else { - PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; - PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; - if (mm && mm->mp_ass_subscript) { - int r; - PyObject *key = PyInt_FromSsize_t(i); - if (unlikely(!key)) return -1; - r = mm->mp_ass_subscript(o, key, v); - Py_DECREF(key); - return r; - } - if (likely(sm && sm->sq_ass_item)) { - if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { - Py_ssize_t l = sm->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return -1; - PyErr_Clear(); - } - } - return sm->sq_ass_item(o, i, v); - } - } -#else - if (is_list || !PyMapping_Check(o)) - { - return PySequence_SetItem(o, i, v); - } -#endif - return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); -} - -/* RaiseUnboundLocalError */ -static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { - PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); -} - -/* DivInt[long] */ -static CYTHON_INLINE long __Pyx_div_long(long a, long b) { - long q = a / b; - long r = a - q*b; - q -= ((r != 0) & ((r ^ b) < 0)); - return q; -} - -/* ImportFrom */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - const char* module_name_str = 0; - PyObject* module_name = 0; - PyObject* module_dot = 0; - PyObject* full_name = 0; - PyErr_Clear(); - module_name_str = PyModule_GetName(module); - if (unlikely(!module_name_str)) { goto modbad; } - module_name = PyUnicode_FromString(module_name_str); - if (unlikely(!module_name)) { goto modbad; } - module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__2); - if (unlikely(!module_dot)) { goto modbad; } - full_name = PyUnicode_Concat(module_dot, name); - if (unlikely(!full_name)) { goto modbad; } - #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) - { - PyObject *modules = PyImport_GetModuleDict(); - if (unlikely(!modules)) - goto modbad; - value = PyObject_GetItem(modules, full_name); - } - #else - value = PyImport_GetModule(full_name); - #endif - modbad: - Py_XDECREF(full_name); - Py_XDECREF(module_dot); - Py_XDECREF(module_name); - } - if (unlikely(!value)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* HasAttr */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { - PyObject *r; - if (unlikely(!__Pyx_PyBaseString_Check(n))) { - PyErr_SetString(PyExc_TypeError, - "hasattr(): attribute name must be string"); - return -1; - } - r = __Pyx_GetAttr(o, n); - if (!r) { - PyErr_Clear(); - return 0; - } else { - Py_DECREF(r); - return 1; - } -} -#endif - -/* PyIntCompare */ -static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { - CYTHON_MAYBE_UNUSED_VAR(intval); - CYTHON_UNUSED_VAR(inplace); - if (op1 == op2) { - return 1; - } - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long a = PyInt_AS_LONG(op1); - return (a == b); - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(PyLong_CheckExact(op1))) { - int unequal; - unsigned long uintval; - Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); - const digit* digits = __Pyx_PyLong_Digits(op1); - if (intval == 0) { - return (__Pyx_PyLong_IsZero(op1) == 1); - } else if (intval < 0) { - if (__Pyx_PyLong_IsNonNeg(op1)) - return 0; - intval = -intval; - } else { - if (__Pyx_PyLong_IsNeg(op1)) - return 0; - } - uintval = (unsigned long) intval; -#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 4)) { - unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 3)) { - unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 2)) { - unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 1)) { - unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif - unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); - return (unequal == 0); - } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; -#if CYTHON_COMPILING_IN_LIMITED_API - double a = __pyx_PyFloat_AsDouble(op1); -#else - double a = PyFloat_AS_DOUBLE(op1); -#endif - return ((double)a == (double)b); - } - return __Pyx_PyObject_IsTrueAndDecref( - PyObject_RichCompare(op1, op2, Py_EQ)); -} - -/* PyIntCompare */ -static CYTHON_INLINE int __Pyx_PyInt_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace) { - CYTHON_MAYBE_UNUSED_VAR(intval); - CYTHON_UNUSED_VAR(inplace); - if (op1 == op2) { - return 0; - } - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long a = PyInt_AS_LONG(op1); - return (a != b); - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(PyLong_CheckExact(op1))) { - int unequal; - unsigned long uintval; - Py_ssize_t size = __Pyx_PyLong_DigitCount(op1); - const digit* digits = __Pyx_PyLong_Digits(op1); - if (intval == 0) { - return (__Pyx_PyLong_IsZero(op1) != 1); - } else if (intval < 0) { - if (__Pyx_PyLong_IsNonNeg(op1)) - return 1; - intval = -intval; - } else { - if (__Pyx_PyLong_IsNeg(op1)) - return 1; - } - uintval = (unsigned long) intval; -#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 4)) { - unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 3)) { - unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 2)) { - unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 1)) { - unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif - unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); - return (unequal != 0); - } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; -#if CYTHON_COMPILING_IN_LIMITED_API - double a = __pyx_PyFloat_AsDouble(op1); -#else - double a = PyFloat_AS_DOUBLE(op1); -#endif - return ((double)a != (double)b); - } - return __Pyx_PyObject_IsTrueAndDecref( - PyObject_RichCompare(op1, op2, Py_NE)); -} - -/* IsLittleEndian */ -static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) -{ - union { - uint32_t u32; - uint8_t u8[4]; - } S; - S.u32 = 0x01020304; - return S.u8[0] == 4; -} - -/* BufferFormatCheck */ -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type) { - stack[0].field = &ctx->root; - stack[0].parent_offset = 0; - ctx->root.type = type; - ctx->root.name = "buffer dtype"; - ctx->root.offset = 0; - ctx->head = stack; - ctx->head->field = &ctx->root; - ctx->fmt_offset = 0; - ctx->head->parent_offset = 0; - ctx->new_packmode = '@'; - ctx->enc_packmode = '@'; - ctx->new_count = 1; - ctx->enc_count = 0; - ctx->enc_type = 0; - ctx->is_complex = 0; - ctx->is_valid_array = 0; - ctx->struct_alignment = 0; - while (type->typegroup == 'S') { - ++ctx->head; - ctx->head->field = type->fields; - ctx->head->parent_offset = 0; - type = type->fields->type; - } -} -static int __Pyx_BufFmt_ParseNumber(const char** ts) { - int count; - const char* t = *ts; - if (*t < '0' || *t > '9') { - return -1; - } else { - count = *t++ - '0'; - while (*t >= '0' && *t <= '9') { - count *= 10; - count += *t++ - '0'; - } - } - *ts = t; - return count; -} -static int __Pyx_BufFmt_ExpectNumber(const char **ts) { - int number = __Pyx_BufFmt_ParseNumber(ts); - if (number == -1) - PyErr_Format(PyExc_ValueError,\ - "Does not understand character buffer dtype format string ('%c')", **ts); - return number; -} -static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) { - PyErr_Format(PyExc_ValueError, - "Unexpected format string character: '%c'", ch); -} -static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) { - switch (ch) { - case '?': return "'bool'"; - case 'c': return "'char'"; - case 'b': return "'signed char'"; - case 'B': return "'unsigned char'"; - case 'h': return "'short'"; - case 'H': return "'unsigned short'"; - case 'i': return "'int'"; - case 'I': return "'unsigned int'"; - case 'l': return "'long'"; - case 'L': return "'unsigned long'"; - case 'q': return "'long long'"; - case 'Q': return "'unsigned long long'"; - case 'f': return (is_complex ? "'complex float'" : "'float'"); - case 'd': return (is_complex ? "'complex double'" : "'double'"); - case 'g': return (is_complex ? "'complex long double'" : "'long double'"); - case 'T': return "a struct"; - case 'O': return "Python object"; - case 'P': return "a pointer"; - case 's': case 'p': return "a string"; - case 0: return "end"; - default: return "unparsable format string"; - } -} -static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return 2; - case 'i': case 'I': case 'l': case 'L': return 4; - case 'q': case 'Q': return 8; - case 'f': return (is_complex ? 8 : 4); - case 'd': return (is_complex ? 16 : 8); - case 'g': { - PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g').."); - return 0; - } - case 'O': case 'P': return sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(short); - case 'i': case 'I': return sizeof(int); - case 'l': case 'L': return sizeof(long); - #ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(PY_LONG_LONG); - #endif - case 'f': return sizeof(float) * (is_complex ? 2 : 1); - case 'd': return sizeof(double) * (is_complex ? 2 : 1); - case 'g': return sizeof(long double) * (is_complex ? 2 : 1); - case 'O': case 'P': return sizeof(void*); - default: { - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } - } -} -typedef struct { char c; short x; } __Pyx_st_short; -typedef struct { char c; int x; } __Pyx_st_int; -typedef struct { char c; long x; } __Pyx_st_long; -typedef struct { char c; float x; } __Pyx_st_float; -typedef struct { char c; double x; } __Pyx_st_double; -typedef struct { char c; long double x; } __Pyx_st_longdouble; -typedef struct { char c; void *x; } __Pyx_st_void_p; -#ifdef HAVE_LONG_LONG -typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; -#endif -static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, int is_complex) { - CYTHON_UNUSED_VAR(is_complex); - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); - case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); - case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); -#ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); -#endif - case 'f': return sizeof(__Pyx_st_float) - sizeof(float); - case 'd': return sizeof(__Pyx_st_double) - sizeof(double); - case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); - case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -/* These are for computing the padding at the end of the struct to align - on the first member of the struct. This will probably the same as above, - but we don't have any guarantees. - */ -typedef struct { short x; char c; } __Pyx_pad_short; -typedef struct { int x; char c; } __Pyx_pad_int; -typedef struct { long x; char c; } __Pyx_pad_long; -typedef struct { float x; char c; } __Pyx_pad_float; -typedef struct { double x; char c; } __Pyx_pad_double; -typedef struct { long double x; char c; } __Pyx_pad_longdouble; -typedef struct { void *x; char c; } __Pyx_pad_void_p; -#ifdef HAVE_LONG_LONG -typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; -#endif -static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, int is_complex) { - CYTHON_UNUSED_VAR(is_complex); - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); - case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); - case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); -#ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); -#endif - case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); - case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); - case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); - case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) { - switch (ch) { - case 'c': - return 'H'; - case 'b': case 'h': case 'i': - case 'l': case 'q': case 's': case 'p': - return 'I'; - case '?': case 'B': case 'H': case 'I': case 'L': case 'Q': - return 'U'; - case 'f': case 'd': case 'g': - return (is_complex ? 'C' : 'R'); - case 'O': - return 'O'; - case 'P': - return 'P'; - default: { - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } - } -} -static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) { - if (ctx->head == NULL || ctx->head->field == &ctx->root) { - const char* expected; - const char* quote; - if (ctx->head == NULL) { - expected = "end"; - quote = ""; - } else { - expected = ctx->head->field->type->name; - quote = "'"; - } - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch, expected %s%s%s but got %s", - quote, expected, quote, - __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex)); - } else { - __Pyx_StructField* field = ctx->head->field; - __Pyx_StructField* parent = (ctx->head - 1)->field; - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'", - field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex), - parent->type->name, field->name); - } -} -static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { - char group; - size_t size, offset, arraysize = 1; - if (ctx->enc_type == 0) return 0; - if (ctx->head->field->type->arraysize[0]) { - int i, ndim = 0; - if (ctx->enc_type == 's' || ctx->enc_type == 'p') { - ctx->is_valid_array = ctx->head->field->type->ndim == 1; - ndim = 1; - if (ctx->enc_count != ctx->head->field->type->arraysize[0]) { - PyErr_Format(PyExc_ValueError, - "Expected a dimension of size %zu, got %zu", - ctx->head->field->type->arraysize[0], ctx->enc_count); - return -1; - } - } - if (!ctx->is_valid_array) { - PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d", - ctx->head->field->type->ndim, ndim); - return -1; - } - for (i = 0; i < ctx->head->field->type->ndim; i++) { - arraysize *= ctx->head->field->type->arraysize[i]; - } - ctx->is_valid_array = 0; - ctx->enc_count = 1; - } - group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex); - do { - __Pyx_StructField* field = ctx->head->field; - __Pyx_TypeInfo* type = field->type; - if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') { - size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex); - } else { - size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex); - } - if (ctx->enc_packmode == '@') { - size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex); - size_t align_mod_offset; - if (align_at == 0) return -1; - align_mod_offset = ctx->fmt_offset % align_at; - if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset; - if (ctx->struct_alignment == 0) - ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type, - ctx->is_complex); - } - if (type->size != size || type->typegroup != group) { - if (type->typegroup == 'C' && type->fields != NULL) { - size_t parent_offset = ctx->head->parent_offset + field->offset; - ++ctx->head; - ctx->head->field = type->fields; - ctx->head->parent_offset = parent_offset; - continue; - } - if ((type->typegroup == 'H' || group == 'H') && type->size == size) { - } else { - __Pyx_BufFmt_RaiseExpected(ctx); - return -1; - } - } - offset = ctx->head->parent_offset + field->offset; - if (ctx->fmt_offset != offset) { - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected", - (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset); - return -1; - } - ctx->fmt_offset += size; - if (arraysize) - ctx->fmt_offset += (arraysize - 1) * size; - --ctx->enc_count; - while (1) { - if (field == &ctx->root) { - ctx->head = NULL; - if (ctx->enc_count != 0) { - __Pyx_BufFmt_RaiseExpected(ctx); - return -1; - } - break; - } - ctx->head->field = ++field; - if (field->type == NULL) { - --ctx->head; - field = ctx->head->field; - continue; - } else if (field->type->typegroup == 'S') { - size_t parent_offset = ctx->head->parent_offset + field->offset; - if (field->type->fields->type == NULL) continue; - field = field->type->fields; - ++ctx->head; - ctx->head->field = field; - ctx->head->parent_offset = parent_offset; - break; - } else { - break; - } - } - } while (ctx->enc_count); - ctx->enc_type = 0; - ctx->is_complex = 0; - return 0; -} -static int -__pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) -{ - const char *ts = *tsp; - int i = 0, number, ndim; - ++ts; - if (ctx->new_count != 1) { - PyErr_SetString(PyExc_ValueError, - "Cannot handle repeated arrays in format string"); - return -1; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return -1; - ndim = ctx->head->field->type->ndim; - while (*ts && *ts != ')') { - switch (*ts) { - case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; - default: break; - } - number = __Pyx_BufFmt_ExpectNumber(&ts); - if (number == -1) return -1; - if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) { - PyErr_Format(PyExc_ValueError, - "Expected a dimension of size %zu, got %d", - ctx->head->field->type->arraysize[i], number); - return -1; - } - if (*ts != ',' && *ts != ')') { - PyErr_Format(PyExc_ValueError, - "Expected a comma in format string, got '%c'", *ts); - return -1; - } - if (*ts == ',') ts++; - i++; - } - if (i != ndim) { - PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d", - ctx->head->field->type->ndim, i); - return -1; - } - if (!*ts) { - PyErr_SetString(PyExc_ValueError, - "Unexpected end of format string, expected ')'"); - return -1; - } - ctx->is_valid_array = 1; - ctx->new_count = 1; - *tsp = ++ts; - return 0; -} -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) { - int got_Z = 0; - while (1) { - switch(*ts) { - case 0: - if (ctx->enc_type != 0 && ctx->head == NULL) { - __Pyx_BufFmt_RaiseExpected(ctx); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - if (ctx->head != NULL) { - __Pyx_BufFmt_RaiseExpected(ctx); - return NULL; - } - return ts; - case ' ': - case '\r': - case '\n': - ++ts; - break; - case '<': - if (!__Pyx_Is_Little_Endian()) { - PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler"); - return NULL; - } - ctx->new_packmode = '='; - ++ts; - break; - case '>': - case '!': - if (__Pyx_Is_Little_Endian()) { - PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler"); - return NULL; - } - ctx->new_packmode = '='; - ++ts; - break; - case '=': - case '@': - case '^': - ctx->new_packmode = *ts++; - break; - case 'T': - { - const char* ts_after_sub; - size_t i, struct_count = ctx->new_count; - size_t struct_alignment = ctx->struct_alignment; - ctx->new_count = 1; - ++ts; - if (*ts != '{') { - PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'"); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; - ctx->enc_count = 0; - ctx->struct_alignment = 0; - ++ts; - ts_after_sub = ts; - for (i = 0; i != struct_count; ++i) { - ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts); - if (!ts_after_sub) return NULL; - } - ts = ts_after_sub; - if (struct_alignment) ctx->struct_alignment = struct_alignment; - } - break; - case '}': - { - size_t alignment = ctx->struct_alignment; - ++ts; - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; - if (alignment && ctx->fmt_offset % alignment) { - ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); - } - } - return ts; - case 'x': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->fmt_offset += ctx->new_count; - ctx->new_count = 1; - ctx->enc_count = 0; - ctx->enc_type = 0; - ctx->enc_packmode = ctx->new_packmode; - ++ts; - break; - case 'Z': - got_Z = 1; - ++ts; - if (*ts != 'f' && *ts != 'd' && *ts != 'g') { - __Pyx_BufFmt_RaiseUnexpectedChar('Z'); - return NULL; - } - CYTHON_FALLTHROUGH; - case '?': case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': - case 'l': case 'L': case 'q': case 'Q': - case 'f': case 'd': case 'g': - case 'O': case 'p': - if ((ctx->enc_type == *ts) && (got_Z == ctx->is_complex) && - (ctx->enc_packmode == ctx->new_packmode) && (!ctx->is_valid_array)) { - ctx->enc_count += ctx->new_count; - ctx->new_count = 1; - got_Z = 0; - ++ts; - break; - } - CYTHON_FALLTHROUGH; - case 's': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_count = ctx->new_count; - ctx->enc_packmode = ctx->new_packmode; - ctx->enc_type = *ts; - ctx->is_complex = got_Z; - ++ts; - ctx->new_count = 1; - got_Z = 0; - break; - case ':': - ++ts; - while(*ts != ':') ++ts; - ++ts; - break; - case '(': - if (__pyx_buffmt_parse_array(ctx, &ts) < 0) return NULL; - break; - default: - { - int number = __Pyx_BufFmt_ExpectNumber(&ts); - if (number == -1) return NULL; - ctx->new_count = (size_t)number; - } - } - } -} - -/* BufferGetAndValidate */ - static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { - if (unlikely(info->buf == NULL)) return; - if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; - __Pyx_ReleaseBuffer(info); -} -static void __Pyx_ZeroBuffer(Py_buffer* buf) { - buf->buf = NULL; - buf->obj = NULL; - buf->strides = __Pyx_zeros; - buf->shape = __Pyx_zeros; - buf->suboffsets = __Pyx_minusones; -} -static int __Pyx__GetBufferAndValidate( - Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, - int nd, int cast, __Pyx_BufFmt_StackElem* stack) -{ - buf->buf = NULL; - if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) { - __Pyx_ZeroBuffer(buf); - return -1; - } - if (unlikely(buf->ndim != nd)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - nd, buf->ndim); - goto fail; - } - if (!cast) { - __Pyx_BufFmt_Context ctx; - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; - } - if (unlikely((size_t)buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", - buf->itemsize, (buf->itemsize > 1) ? "s" : "", - dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; - return 0; -fail:; - __Pyx_SafeReleaseBuffer(buf); - return -1; -} - -/* UnicodeConcatInPlace */ - # if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 -static int -__Pyx_unicode_modifiable(PyObject *unicode) -{ - if (Py_REFCNT(unicode) != 1) - return 0; - if (!PyUnicode_CheckExact(unicode)) - return 0; - if (PyUnicode_CHECK_INTERNED(unicode)) - return 0; - return 1; -} -static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right - #if CYTHON_REFNANNY - , void* __pyx_refnanny - #endif - ) { - PyObject *left = *p_left; - Py_ssize_t left_len, right_len, new_len; - if (unlikely(__Pyx_PyUnicode_READY(left) == -1)) - return NULL; - if (unlikely(__Pyx_PyUnicode_READY(right) == -1)) - return NULL; - left_len = PyUnicode_GET_LENGTH(left); - if (left_len == 0) { - Py_INCREF(right); - return right; - } - right_len = PyUnicode_GET_LENGTH(right); - if (right_len == 0) { - Py_INCREF(left); - return left; - } - if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) { - PyErr_SetString(PyExc_OverflowError, - "strings are too large to concat"); - return NULL; - } - new_len = left_len + right_len; - if (__Pyx_unicode_modifiable(left) - && PyUnicode_CheckExact(right) - && PyUnicode_KIND(right) <= PyUnicode_KIND(left) - && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) { - int ret; - __Pyx_GIVEREF(*p_left); - ret = PyUnicode_Resize(p_left, new_len); - __Pyx_GOTREF(*p_left); - if (unlikely(ret != 0)) - return NULL; - #if PY_VERSION_HEX >= 0x030d0000 - if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL; - #else - _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len); - #endif - __Pyx_INCREF(*p_left); - __Pyx_GIVEREF(*p_left); - return *p_left; - } else { - return __Pyx_PyUnicode_Concat(left, right); - } - } -#endif - -/* SliceObject */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, - Py_ssize_t cstart, Py_ssize_t cstop, - PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, - int has_cstart, int has_cstop, int wraparound) { - __Pyx_TypeName obj_type_name; -#if CYTHON_USE_TYPE_SLOTS - PyMappingMethods* mp; -#if PY_MAJOR_VERSION < 3 - PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence; - if (likely(ms && ms->sq_slice)) { - if (!has_cstart) { - if (_py_start && (*_py_start != Py_None)) { - cstart = __Pyx_PyIndex_AsSsize_t(*_py_start); - if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; - } else - cstart = 0; - } - if (!has_cstop) { - if (_py_stop && (*_py_stop != Py_None)) { - cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop); - if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; - } else - cstop = PY_SSIZE_T_MAX; - } - if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) { - Py_ssize_t l = ms->sq_length(obj); - if (likely(l >= 0)) { - if (cstop < 0) { - cstop += l; - if (cstop < 0) cstop = 0; - } - if (cstart < 0) { - cstart += l; - if (cstart < 0) cstart = 0; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - goto bad; - PyErr_Clear(); - } - } - return ms->sq_slice(obj, cstart, cstop); - } -#else - CYTHON_UNUSED_VAR(wraparound); -#endif - mp = Py_TYPE(obj)->tp_as_mapping; - if (likely(mp && mp->mp_subscript)) -#else - CYTHON_UNUSED_VAR(wraparound); -#endif - { - PyObject* result; - PyObject *py_slice, *py_start, *py_stop; - if (_py_slice) { - py_slice = *_py_slice; - } else { - PyObject* owned_start = NULL; - PyObject* owned_stop = NULL; - if (_py_start) { - py_start = *_py_start; - } else { - if (has_cstart) { - owned_start = py_start = PyInt_FromSsize_t(cstart); - if (unlikely(!py_start)) goto bad; - } else - py_start = Py_None; - } - if (_py_stop) { - py_stop = *_py_stop; - } else { - if (has_cstop) { - owned_stop = py_stop = PyInt_FromSsize_t(cstop); - if (unlikely(!py_stop)) { - Py_XDECREF(owned_start); - goto bad; - } - } else - py_stop = Py_None; - } - py_slice = PySlice_New(py_start, py_stop, Py_None); - Py_XDECREF(owned_start); - Py_XDECREF(owned_stop); - if (unlikely(!py_slice)) goto bad; - } -#if CYTHON_USE_TYPE_SLOTS - result = mp->mp_subscript(obj, py_slice); -#else - result = PyObject_GetItem(obj, py_slice); -#endif - if (!_py_slice) { - Py_DECREF(py_slice); - } - return result; - } - obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - PyErr_Format(PyExc_TypeError, - "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name); - __Pyx_DECREF_TypeName(obj_type_name); -bad: - return NULL; -} - -/* PyObjectFormat */ - #if CYTHON_USE_UNICODE_WRITER -static PyObject* __Pyx_PyObject_Format(PyObject* obj, PyObject* format_spec) { - int ret; - _PyUnicodeWriter writer; - if (likely(PyFloat_CheckExact(obj))) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x03040000 - _PyUnicodeWriter_Init(&writer, 0); -#else - _PyUnicodeWriter_Init(&writer); -#endif - ret = _PyFloat_FormatAdvancedWriter( - &writer, - obj, - format_spec, 0, PyUnicode_GET_LENGTH(format_spec)); - } else if (likely(PyLong_CheckExact(obj))) { -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x03040000 - _PyUnicodeWriter_Init(&writer, 0); -#else - _PyUnicodeWriter_Init(&writer); -#endif - ret = _PyLong_FormatAdvancedWriter( - &writer, - obj, - format_spec, 0, PyUnicode_GET_LENGTH(format_spec)); - } else { - return PyObject_Format(obj, format_spec); - } - if (unlikely(ret == -1)) { - _PyUnicodeWriter_Dealloc(&writer); - return NULL; - } - return _PyUnicodeWriter_Finish(&writer); -} -#endif - -/* UnpackUnboundCMethod */ - static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) { - PyObject *result; - PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args)); - if (unlikely(!selfless_args)) return NULL; - result = PyObject_Call(method, selfless_args, kwargs); - Py_DECREF(selfless_args); - return result; -} -static PyMethodDef __Pyx_UnboundCMethod_Def = { - "CythonUnboundCMethod", - __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall), - METH_VARARGS | METH_KEYWORDS, - NULL -}; -static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { - PyObject *method; - method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); - if (unlikely(!method)) - return -1; - target->method = method; -#if CYTHON_COMPILING_IN_CPYTHON - #if PY_MAJOR_VERSION >= 3 - if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) - #else - if (likely(!__Pyx_CyOrPyCFunction_Check(method))) - #endif - { - PyMethodDescrObject *descr = (PyMethodDescrObject*) method; - target->func = descr->d_method->ml_meth; - target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS); - } else -#endif -#if CYTHON_COMPILING_IN_PYPY -#else - if (PyCFunction_Check(method)) -#endif - { - PyObject *self; - int self_found; -#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY - self = PyObject_GetAttrString(method, "__self__"); - if (!self) { - PyErr_Clear(); - } -#else - self = PyCFunction_GET_SELF(method); -#endif - self_found = (self && self != Py_None); -#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY - Py_XDECREF(self); -#endif - if (self_found) { - PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method); - if (unlikely(!unbound_method)) return -1; - Py_DECREF(method); - target->method = unbound_method; - } - } - return 0; -} - -/* CallUnboundCMethod0 */ - static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { - PyObject *args, *result = NULL; - if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_ASSUME_SAFE_MACROS - args = PyTuple_New(1); - if (unlikely(!args)) goto bad; - Py_INCREF(self); - PyTuple_SET_ITEM(args, 0, self); -#else - args = PyTuple_Pack(1, self); - if (unlikely(!args)) goto bad; -#endif - result = __Pyx_PyObject_Call(cfunc->method, args, NULL); - Py_DECREF(args); -bad: - return result; -} - -/* py_dict_keys */ - static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) { - if (PY_MAJOR_VERSION >= 3) - return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_keys, d); - else - return PyDict_Keys(d); -} - -/* DictGetItem */ - #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - value = PyDict_GetItemWithError(d, key); - if (unlikely(!value)) { - if (!PyErr_Occurred()) { - if (unlikely(PyTuple_Check(key))) { - PyObject* args = PyTuple_Pack(1, key); - if (likely(args)) { - PyErr_SetObject(PyExc_KeyError, args); - Py_DECREF(args); - } - } else { - PyErr_SetObject(PyExc_KeyError, key); - } - } - return NULL; - } - Py_INCREF(value); - return value; -} -#endif - -/* PyObjectLookupSpecial */ - #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { - PyObject *res; - PyTypeObject *tp = Py_TYPE(obj); -#if PY_MAJOR_VERSION < 3 - if (unlikely(PyInstance_Check(obj))) - return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); -#endif - res = _PyType_Lookup(tp, attr_name); - if (likely(res)) { - descrgetfunc f = Py_TYPE(res)->tp_descr_get; - if (!f) { - Py_INCREF(res); - } else { - res = f(res, obj, (PyObject *)tp); - } - } else if (with_error) { - PyErr_SetObject(PyExc_AttributeError, attr_name); - } - return res; -} -#endif - -/* FixUpExtensionType */ - #if CYTHON_USE_TYPE_SPECS -static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { -#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - CYTHON_UNUSED_VAR(spec); - CYTHON_UNUSED_VAR(type); -#else - const PyType_Slot *slot = spec->slots; - while (slot && slot->slot && slot->slot != Py_tp_members) - slot++; - if (slot && slot->slot == Py_tp_members) { - int changed = 0; -#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) - const -#endif - PyMemberDef *memb = (PyMemberDef*) slot->pfunc; - while (memb && memb->name) { - if (memb->name[0] == '_' && memb->name[1] == '_') { -#if PY_VERSION_HEX < 0x030900b1 - if (strcmp(memb->name, "__weaklistoffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_weaklistoffset = memb->offset; - changed = 1; - } - else if (strcmp(memb->name, "__dictoffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_dictoffset = memb->offset; - changed = 1; - } -#if CYTHON_METH_FASTCALL - else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); -#if PY_VERSION_HEX >= 0x030800b4 - type->tp_vectorcall_offset = memb->offset; -#else - type->tp_print = (printfunc) memb->offset; -#endif - changed = 1; - } -#endif -#else - if ((0)); -#endif -#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON - else if (strcmp(memb->name, "__module__") == 0) { - PyObject *descr; - assert(memb->type == T_OBJECT); - assert(memb->flags == 0 || memb->flags == READONLY); - descr = PyDescr_NewMember(type, memb); - if (unlikely(!descr)) - return -1; - if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { - Py_DECREF(descr); - return -1; - } - Py_DECREF(descr); - changed = 1; - } -#endif - } - memb++; - } - if (changed) - PyType_Modified(type); - } -#endif - return 0; -} -#endif - -/* FetchSharedCythonModule */ - static PyObject *__Pyx_FetchSharedCythonABIModule(void) { - return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); -} - -/* FetchCommonType */ - static int __Pyx_VerifyCachedType(PyObject *cached_type, - const char *name, - Py_ssize_t basicsize, - Py_ssize_t expected_basicsize) { - if (!PyType_Check(cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", name); - return -1; - } - if (basicsize != expected_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - name); - return -1; - } - return 0; -} -#if !CYTHON_USE_TYPE_SPECS -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* abi_module; - const char* object_name; - PyTypeObject *cached_type = NULL; - abi_module = __Pyx_FetchSharedCythonABIModule(); - if (!abi_module) return NULL; - object_name = strrchr(type->tp_name, '.'); - object_name = object_name ? object_name+1 : type->tp_name; - cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); - if (cached_type) { - if (__Pyx_VerifyCachedType( - (PyObject *)cached_type, - object_name, - cached_type->tp_basicsize, - type->tp_basicsize) < 0) { - goto bad; - } - goto done; - } - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; -done: - Py_DECREF(abi_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} -#else -static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { - PyObject *abi_module, *cached_type = NULL; - const char* object_name = strrchr(spec->name, '.'); - object_name = object_name ? object_name+1 : spec->name; - abi_module = __Pyx_FetchSharedCythonABIModule(); - if (!abi_module) return NULL; - cached_type = PyObject_GetAttrString(abi_module, object_name); - if (cached_type) { - Py_ssize_t basicsize; -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_basicsize; - py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); - if (unlikely(!py_basicsize)) goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; -#else - basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; -#endif - if (__Pyx_VerifyCachedType( - cached_type, - object_name, - basicsize, - spec->basicsize) < 0) { - goto bad; - } - goto done; - } - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - CYTHON_UNUSED_VAR(module); - cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); - if (unlikely(!cached_type)) goto bad; - if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; - if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; -done: - Py_DECREF(abi_module); - assert(cached_type == NULL || PyType_Check(cached_type)); - return (PyTypeObject *) cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} -#endif - -/* PyVectorcallFastCallDict */ - #if CYTHON_METH_FASTCALL -static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) -{ - PyObject *res = NULL; - PyObject *kwnames; - PyObject **newargs; - PyObject **kwvalues; - Py_ssize_t i, pos; - size_t j; - PyObject *key, *value; - unsigned long keys_are_strings; - Py_ssize_t nkw = PyDict_GET_SIZE(kw); - newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); - if (unlikely(newargs == NULL)) { - PyErr_NoMemory(); - return NULL; - } - for (j = 0; j < nargs; j++) newargs[j] = args[j]; - kwnames = PyTuple_New(nkw); - if (unlikely(kwnames == NULL)) { - PyMem_Free(newargs); - return NULL; - } - kwvalues = newargs + nargs; - pos = i = 0; - keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; - while (PyDict_Next(kw, &pos, &key, &value)) { - keys_are_strings &= Py_TYPE(key)->tp_flags; - Py_INCREF(key); - Py_INCREF(value); - PyTuple_SET_ITEM(kwnames, i, key); - kwvalues[i] = value; - i++; - } - if (unlikely(!keys_are_strings)) { - PyErr_SetString(PyExc_TypeError, "keywords must be strings"); - goto cleanup; - } - res = vc(func, newargs, nargs, kwnames); -cleanup: - Py_DECREF(kwnames); - for (i = 0; i < nkw; i++) - Py_DECREF(kwvalues[i]); - PyMem_Free(newargs); - return res; -} -static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) -{ - if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { - return vc(func, args, nargs, NULL); - } - return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); -} -#endif - -/* CythonFunctionShared */ - #if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { - if (__Pyx_CyFunction_Check(func)) { - return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; - } else if (PyCFunction_Check(func)) { - return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; - } - return 0; -} -#else -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { - return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; -} -#endif -static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - __Pyx_Py_XDECREF_SET( - __Pyx_CyFunction_GetClassObj(f), - ((classobj) ? __Pyx_NewRef(classobj) : NULL)); -#else - __Pyx_Py_XDECREF_SET( - ((PyCMethodObject *) (f))->mm_class, - (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); -#endif -} -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) -{ - CYTHON_UNUSED_VAR(closure); - if (unlikely(op->func_doc == NULL)) { -#if CYTHON_COMPILING_IN_LIMITED_API - op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); - if (unlikely(!op->func_doc)) return NULL; -#else - if (((PyCFunctionObject*)op)->m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } -#endif - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->func_doc, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(op->func_name == NULL)) { -#if CYTHON_COMPILING_IN_LIMITED_API - op->func_name = PyObject_GetAttrString(op->func, "__name__"); -#elif PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) -#else - if (unlikely(value == NULL || !PyString_Check(value))) -#endif - { - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->func_name, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) -#else - if (unlikely(value == NULL || !PyString_Check(value))) -#endif - { - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->func_qualname, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->func_dict, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(op); - CYTHON_UNUSED_VAR(context); - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - CYTHON_UNUSED_VAR(context); - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value) { - value = Py_None; - } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " - "currently affect the values used in function calls", 1); - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { - PyObject* result = op->defaults_tuple; - CYTHON_UNUSED_VAR(context); - if (unlikely(!result)) { - if (op->defaults_getter) { - if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value) { - value = Py_None; - } else if (unlikely(value != Py_None && !PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " - "currently affect the values used in function calls", 1); - Py_INCREF(value); - __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { - PyObject* result = op->defaults_kwdict; - CYTHON_UNUSED_VAR(context); - if (unlikely(!result)) { - if (op->defaults_getter) { - if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value || value == Py_None) { - value = NULL; - } else if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - __Pyx_Py_XDECREF_SET(op->func_annotations, value); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { - PyObject* result = op->func_annotations; - CYTHON_UNUSED_VAR(context); - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyObject * -__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { - int is_coroutine; - CYTHON_UNUSED_VAR(context); - if (op->func_is_coroutine) { - return __Pyx_NewRef(op->func_is_coroutine); - } - is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; -#if PY_VERSION_HEX >= 0x03050000 - if (is_coroutine) { - PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; - fromlist = PyList_New(1); - if (unlikely(!fromlist)) return NULL; - Py_INCREF(marker); -#if CYTHON_ASSUME_SAFE_MACROS - PyList_SET_ITEM(fromlist, 0, marker); -#else - if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { - Py_DECREF(marker); - Py_DECREF(fromlist); - return NULL; - } -#endif - module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); - Py_DECREF(fromlist); - if (unlikely(!module)) goto ignore; - op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); - Py_DECREF(module); - if (likely(op->func_is_coroutine)) { - return __Pyx_NewRef(op->func_is_coroutine); - } -ignore: - PyErr_Clear(); - } -#endif - op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); - return __Pyx_NewRef(op->func_is_coroutine); -} -#if CYTHON_COMPILING_IN_LIMITED_API -static PyObject * -__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { - CYTHON_UNUSED_VAR(context); - return PyObject_GetAttrString(op->func, "__module__"); -} -static int -__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - return PyObject_SetAttrString(op->func, "__module__", value); -} -#endif -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, -#if CYTHON_COMPILING_IN_LIMITED_API - {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, -#endif - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { -#if !CYTHON_COMPILING_IN_LIMITED_API - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, -#endif -#if CYTHON_USE_TYPE_SPECS - {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, -#if CYTHON_METH_FASTCALL -#if CYTHON_BACKPORT_VECTORCALL - {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, -#else -#if !CYTHON_COMPILING_IN_LIMITED_API - {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, -#endif -#endif -#endif -#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API - {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, -#else - {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, -#endif -#endif - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) -{ - CYTHON_UNUSED_VAR(args); -#if PY_MAJOR_VERSION >= 3 - Py_INCREF(m->func_qualname); - return m->func_qualname; -#else - return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { -#if !CYTHON_COMPILING_IN_LIMITED_API - PyCFunctionObject *cf = (PyCFunctionObject*) op; -#endif - if (unlikely(op == NULL)) - return NULL; -#if CYTHON_COMPILING_IN_LIMITED_API - op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); - if (unlikely(!op->func)) return NULL; -#endif - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; -#if !CYTHON_COMPILING_IN_LIMITED_API - cf->m_ml = ml; - cf->m_self = (PyObject *) op; -#endif - Py_XINCREF(closure); - op->func_closure = closure; -#if !CYTHON_COMPILING_IN_LIMITED_API - Py_XINCREF(module); - cf->m_module = module; -#endif - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - op->func_classobj = NULL; -#else - ((PyCMethodObject*)op)->mm_class = NULL; -#endif - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults_size = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - op->func_is_coroutine = NULL; -#if CYTHON_METH_FASTCALL - switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { - case METH_NOARGS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; - break; - case METH_O: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; - break; - case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; - break; - case METH_FASTCALL | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; - break; - case METH_VARARGS | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = NULL; - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); - Py_DECREF(op); - return NULL; - } -#endif - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); -#if CYTHON_COMPILING_IN_LIMITED_API - Py_CLEAR(m->func); -#else - Py_CLEAR(((PyCFunctionObject*)m)->m_module); -#endif - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); -#if !CYTHON_COMPILING_IN_LIMITED_API -#if PY_VERSION_HEX < 0x030900B1 - Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); -#else - { - PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; - ((PyCMethodObject *) (m))->mm_class = NULL; - Py_XDECREF(cls); - } -#endif -#endif - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - Py_CLEAR(m->func_is_coroutine); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - __Pyx_PyHeapTypeObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); -#if CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(m->func); -#else - Py_VISIT(((PyCFunctionObject*)m)->m_module); -#endif - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); -#if !CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); -#endif - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - Py_VISIT(m->func_is_coroutine); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *f = ((__pyx_CyFunctionObject*)func)->func; - PyObject *py_name = NULL; - PyCFunction meth; - int flags; - meth = PyCFunction_GetFunction(f); - if (unlikely(!meth)) return NULL; - flags = PyCFunction_GetFlags(f); - if (unlikely(flags < 0)) return NULL; -#else - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - int flags = f->m_ml->ml_flags; -#endif - Py_ssize_t size; - switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -#if CYTHON_ASSUME_SAFE_MACROS - size = PyTuple_GET_SIZE(arg); -#else - size = PyTuple_Size(arg); - if (unlikely(size < 0)) return NULL; -#endif - if (likely(size == 0)) - return (*meth)(self, NULL); -#if CYTHON_COMPILING_IN_LIMITED_API - py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); - if (!py_name) return NULL; - PyErr_Format(PyExc_TypeError, - "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - py_name, size); - Py_DECREF(py_name); -#else - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); -#endif - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -#if CYTHON_ASSUME_SAFE_MACROS - size = PyTuple_GET_SIZE(arg); -#else - size = PyTuple_Size(arg); - if (unlikely(size < 0)) return NULL; -#endif - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } -#if CYTHON_COMPILING_IN_LIMITED_API - py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); - if (!py_name) return NULL; - PyErr_Format(PyExc_TypeError, - "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - py_name, size); - Py_DECREF(py_name); -#else - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); -#endif - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); - return NULL; - } -#if CYTHON_COMPILING_IN_LIMITED_API - py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); - if (!py_name) return NULL; - PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", - py_name); - Py_DECREF(py_name); -#else - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); -#endif - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *self, *result; -#if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; -#else - self = ((PyCFunctionObject*)func)->m_self; -#endif - result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); - return result; -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; -#if CYTHON_METH_FASTCALL - __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); - if (vc) { -#if CYTHON_ASSUME_SAFE_MACROS - return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); -#else - (void) &__Pyx_PyVectorcall_FastCallDict; - return PyVectorcall_Call(func, args, kw); -#endif - } -#endif - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; -#if CYTHON_ASSUME_SAFE_MACROS - argc = PyTuple_GET_SIZE(args); -#else - argc = PyTuple_Size(args); - if (unlikely(!argc) < 0) return NULL; -#endif - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); -#if PY_MAJOR_VERSION > 2 - PyErr_Format(PyExc_TypeError, - "unbound method %.200S() needs an argument", - cyfunc->func_qualname); -#else - PyErr_SetString(PyExc_TypeError, - "unbound method needs an argument"); -#endif - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -#if CYTHON_METH_FASTCALL -static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) -{ - int ret = 0; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - if (unlikely(nargs < 1)) { - PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", - ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); - return -1; - } - ret = 1; - } - if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { - PyErr_Format(PyExc_TypeError, - "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); - return -1; - } - return ret; -} -static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - self = ((PyCFunctionObject*)cyfunc)->m_self; - break; - default: - return NULL; - } - if (unlikely(nargs != 0)) { - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - def->ml_name, nargs); - return NULL; - } - return def->ml_meth(self, NULL); -} -static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - self = ((PyCFunctionObject*)cyfunc)->m_self; - break; - default: - return NULL; - } - if (unlikely(nargs != 1)) { - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - def->ml_name, nargs); - return NULL; - } - return def->ml_meth(self, args[0]); -} -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - self = ((PyCFunctionObject*)cyfunc)->m_self; - break; - default: - return NULL; - } - return ((_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); -} -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; - PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - self = ((PyCFunctionObject*)cyfunc)->m_self; - break; - default: - return NULL; - } - return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); -} -#endif -#if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_CyFunctionType_slots[] = { - {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, - {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, - {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, - {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, - {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, - {Py_tp_methods, (void *)__pyx_CyFunction_methods}, - {Py_tp_members, (void *)__pyx_CyFunction_members}, - {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, - {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, - {0, 0}, -}; -static PyType_Spec __pyx_CyFunctionType_spec = { - __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, -#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR - Py_TPFLAGS_METHOD_DESCRIPTOR | -#endif -#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) - _Py_TPFLAGS_HAVE_VECTORCALL | -#endif - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, - __pyx_CyFunctionType_slots -}; -#else -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, -#if !CYTHON_METH_FASTCALL - 0, -#elif CYTHON_BACKPORT_VECTORCALL - (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), -#else - offsetof(PyCFunctionObject, vectorcall), -#endif - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, -#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR - Py_TPFLAGS_METHOD_DESCRIPTOR | -#endif -#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL - _Py_TPFLAGS_HAVE_VECTORCALL | -#endif - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_PyMethod_New, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) - 0, -#endif -#if __PYX_NEED_TP_PRINT_SLOT - 0, -#endif -#if PY_VERSION_HEX >= 0x030C0000 - 0, -#endif -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 - 0, -#endif -}; -#endif -static int __pyx_CyFunction_init(PyObject *module) { -#if CYTHON_USE_TYPE_SPECS - __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); -#else - CYTHON_UNUSED_VAR(module); - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); -#endif - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - m->defaults_size = size; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* CythonFunction */ - static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - PyObject *op = __Pyx_CyFunction_Init( - PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), - ml, flags, qualname, closure, module, globals, code - ); - if (likely(op)) { - PyObject_GC_Track(op); - } - return op; -} - -/* IterFinish */ - static CYTHON_INLINE int __Pyx_IterFinish(void) { - PyObject* exc_type; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - exc_type = __Pyx_PyErr_CurrentExceptionType(); - if (unlikely(exc_type)) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) - return -1; - __Pyx_PyErr_Clear(); - return 0; - } - return 0; -} - -/* PyObjectCallNoArg */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { - PyObject *arg[2] = {NULL, NULL}; - return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); -} - -/* PyObjectGetMethod */ - static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { - PyObject *attr; -#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP - __Pyx_TypeName type_name; - PyTypeObject *tp = Py_TYPE(obj); - PyObject *descr; - descrgetfunc f = NULL; - PyObject **dictptr, *dict; - int meth_found = 0; - assert (*method == NULL); - if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { - attr = __Pyx_PyObject_GetAttrStr(obj, name); - goto try_unpack; - } - if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { - return 0; - } - descr = _PyType_Lookup(tp, name); - if (likely(descr != NULL)) { - Py_INCREF(descr); -#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR - if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) -#elif PY_MAJOR_VERSION >= 3 - #ifdef __Pyx_CyFunction_USED - if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) - #else - if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) - #endif -#else - #ifdef __Pyx_CyFunction_USED - if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) - #else - if (likely(PyFunction_Check(descr))) - #endif -#endif - { - meth_found = 1; - } else { - f = Py_TYPE(descr)->tp_descr_get; - if (f != NULL && PyDescr_IsData(descr)) { - attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); - Py_DECREF(descr); - goto try_unpack; - } - } - } - dictptr = _PyObject_GetDictPtr(obj); - if (dictptr != NULL && (dict = *dictptr) != NULL) { - Py_INCREF(dict); - attr = __Pyx_PyDict_GetItemStr(dict, name); - if (attr != NULL) { - Py_INCREF(attr); - Py_DECREF(dict); - Py_XDECREF(descr); - goto try_unpack; - } - Py_DECREF(dict); - } - if (meth_found) { - *method = descr; - return 1; - } - if (f != NULL) { - attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); - Py_DECREF(descr); - goto try_unpack; - } - if (likely(descr != NULL)) { - *method = descr; - return 0; - } - type_name = __Pyx_PyType_GetName(tp); - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", - type_name, name); -#else - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", - type_name, PyString_AS_STRING(name)); -#endif - __Pyx_DECREF_TypeName(type_name); - return 0; -#else - attr = __Pyx_PyObject_GetAttrStr(obj, name); - goto try_unpack; -#endif -try_unpack: -#if CYTHON_UNPACK_METHODS - if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { - PyObject *function = PyMethod_GET_FUNCTION(attr); - Py_INCREF(function); - Py_DECREF(attr); - *method = function; - return 1; - } -#endif - *method = attr; - return 0; -} - -/* PyObjectCallMethod0 */ - static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { - PyObject *method = NULL, *result = NULL; - int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); - if (likely(is_method)) { - result = __Pyx_PyObject_CallOneArg(method, obj); - Py_DECREF(method); - return result; - } - if (unlikely(!method)) goto bad; - result = __Pyx_PyObject_CallNoArg(method); - Py_DECREF(method); -bad: - return result; -} - -/* UnpackItemEndCheck */ - static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } - return __Pyx_IterFinish(); -} - -/* UnpackTupleError */ - static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) { - if (t == Py_None) { - __Pyx_RaiseNoneNotIterableError(); - } else if (PyTuple_GET_SIZE(t) < index) { - __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t)); - } else { - __Pyx_RaiseTooManyValuesError(index); - } -} - -/* UnpackTuple2 */ - static CYTHON_INLINE int __Pyx_unpack_tuple2_exact( - PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) { - PyObject *value1 = NULL, *value2 = NULL; -#if CYTHON_COMPILING_IN_PYPY - value1 = PySequence_ITEM(tuple, 0); if (unlikely(!value1)) goto bad; - value2 = PySequence_ITEM(tuple, 1); if (unlikely(!value2)) goto bad; -#else - value1 = PyTuple_GET_ITEM(tuple, 0); Py_INCREF(value1); - value2 = PyTuple_GET_ITEM(tuple, 1); Py_INCREF(value2); -#endif - if (decref_tuple) { - Py_DECREF(tuple); - } - *pvalue1 = value1; - *pvalue2 = value2; - return 0; -#if CYTHON_COMPILING_IN_PYPY -bad: - Py_XDECREF(value1); - Py_XDECREF(value2); - if (decref_tuple) { Py_XDECREF(tuple); } - return -1; -#endif -} -static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, - int has_known_size, int decref_tuple) { - Py_ssize_t index; - PyObject *value1 = NULL, *value2 = NULL, *iter = NULL; - iternextfunc iternext; - iter = PyObject_GetIter(tuple); - if (unlikely(!iter)) goto bad; - if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; } - iternext = __Pyx_PyObject_GetIterNextFunc(iter); - value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; } - value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; } - if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad; - Py_DECREF(iter); - *pvalue1 = value1; - *pvalue2 = value2; - return 0; -unpacking_failed: - if (!has_known_size && __Pyx_IterFinish() == 0) - __Pyx_RaiseNeedMoreValuesError(index); -bad: - Py_XDECREF(iter); - Py_XDECREF(value1); - Py_XDECREF(value2); - if (decref_tuple) { Py_XDECREF(tuple); } - return -1; -} - -/* dict_iter */ - #if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 -#include -#endif -static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name, - Py_ssize_t* p_orig_length, int* p_source_is_dict) { - is_dict = is_dict || likely(PyDict_CheckExact(iterable)); - *p_source_is_dict = is_dict; - if (is_dict) { -#if !CYTHON_COMPILING_IN_PYPY - *p_orig_length = PyDict_Size(iterable); - Py_INCREF(iterable); - return iterable; -#elif PY_MAJOR_VERSION >= 3 - static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL; - PyObject **pp = NULL; - if (method_name) { - const char *name = PyUnicode_AsUTF8(method_name); - if (strcmp(name, "iteritems") == 0) pp = &py_items; - else if (strcmp(name, "iterkeys") == 0) pp = &py_keys; - else if (strcmp(name, "itervalues") == 0) pp = &py_values; - if (pp) { - if (!*pp) { - *pp = PyUnicode_FromString(name + 4); - if (!*pp) - return NULL; - } - method_name = *pp; - } - } -#endif - } - *p_orig_length = 0; - if (method_name) { - PyObject* iter; - iterable = __Pyx_PyObject_CallMethod0(iterable, method_name); - if (!iterable) - return NULL; -#if !CYTHON_COMPILING_IN_PYPY - if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable)) - return iterable; -#endif - iter = PyObject_GetIter(iterable); - Py_DECREF(iterable); - return iter; - } - return PyObject_GetIter(iterable); -} -static CYTHON_INLINE int __Pyx_dict_iter_next( - PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos, - PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) { - PyObject* next_item; -#if !CYTHON_COMPILING_IN_PYPY - if (source_is_dict) { - PyObject *key, *value; - if (unlikely(orig_length != PyDict_Size(iter_obj))) { - PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration"); - return -1; - } - if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) { - return 0; - } - if (pitem) { - PyObject* tuple = PyTuple_New(2); - if (unlikely(!tuple)) { - return -1; - } - Py_INCREF(key); - Py_INCREF(value); - PyTuple_SET_ITEM(tuple, 0, key); - PyTuple_SET_ITEM(tuple, 1, value); - *pitem = tuple; - } else { - if (pkey) { - Py_INCREF(key); - *pkey = key; - } - if (pvalue) { - Py_INCREF(value); - *pvalue = value; - } - } - return 1; - } else if (PyTuple_CheckExact(iter_obj)) { - Py_ssize_t pos = *ppos; - if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0; - *ppos = pos + 1; - next_item = PyTuple_GET_ITEM(iter_obj, pos); - Py_INCREF(next_item); - } else if (PyList_CheckExact(iter_obj)) { - Py_ssize_t pos = *ppos; - if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0; - *ppos = pos + 1; - next_item = PyList_GET_ITEM(iter_obj, pos); - Py_INCREF(next_item); - } else -#endif - { - next_item = PyIter_Next(iter_obj); - if (unlikely(!next_item)) { - return __Pyx_IterFinish(); - } - } - if (pitem) { - *pitem = next_item; - } else if (pkey && pvalue) { - if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1)) - return -1; - } else if (pkey) { - *pkey = next_item; - } else { - *pvalue = next_item; - } - return 1; -} - -/* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { - CYTHON_MAYBE_UNUSED_VAR(intval); - CYTHON_MAYBE_UNUSED_VAR(inplace); - CYTHON_UNUSED_VAR(zerodivision_check); - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long x; - long a = PyInt_AS_LONG(op1); - - x = (long)((unsigned long)a + (unsigned long)b); - if (likely((x^a) >= 0 || (x^b) >= 0)) - return PyInt_FromLong(x); - return PyLong_Type.tp_as_number->nb_add(op1, op2); - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(PyLong_CheckExact(op1))) { - const long b = intval; - long a, x; -#ifdef HAVE_LONG_LONG - const PY_LONG_LONG llb = intval; - PY_LONG_LONG lla, llx; -#endif - if (unlikely(__Pyx_PyLong_IsZero(op1))) { - return __Pyx_NewRef(op2); - } - if (likely(__Pyx_PyLong_IsCompact(op1))) { - a = __Pyx_PyLong_CompactValue(op1); - } else { - const digit* digits = __Pyx_PyLong_Digits(op1); - const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; - #ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; - #endif - } - CYTHON_FALLTHROUGH; - default: return PyLong_Type.tp_as_number->nb_add(op1, op2); - } - } - x = a + b; - return PyLong_FromLong(x); -#ifdef HAVE_LONG_LONG - long_long: - llx = lla + llb; - return PyLong_FromLongLong(llx); -#endif - - - } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; -#if CYTHON_COMPILING_IN_LIMITED_API - double a = __pyx_PyFloat_AsDouble(op1); -#else - double a = PyFloat_AS_DOUBLE(op1); -#endif - double result; - - PyFPE_START_PROTECT("add", return NULL) - result = ((double)a) + (double)b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); - } - return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); -} -#endif - -/* BufferIndexError */ - static void __Pyx_RaiseBufferIndexError(int axis) { - PyErr_Format(PyExc_IndexError, - "Out of bounds on buffer access (axis %d)", axis); -} - -/* PyUnicode_Unicode */ - static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) { - if (unlikely(obj == Py_None)) - obj = __pyx_kp_u_None; - return __Pyx_NewRef(obj); -} - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", - type_name, attr_name); -#else - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", - type_name, PyString_AS_STRING(attr_name)); -#endif - __Pyx_DECREF_TypeName(type_name); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* PyObject_GenericGetAttr */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { - if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { - return PyObject_GenericGetAttr(obj, attr_name); - } - return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); -} -#endif - -/* ValidateBasesTuple */ - #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS -static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { - Py_ssize_t i, n; -#if CYTHON_ASSUME_SAFE_MACROS - n = PyTuple_GET_SIZE(bases); -#else - n = PyTuple_Size(bases); - if (n < 0) return -1; -#endif - for (i = 1; i < n; i++) - { -#if CYTHON_AVOID_BORROWED_REFS - PyObject *b0 = PySequence_GetItem(bases, i); - if (!b0) return -1; -#elif CYTHON_ASSUME_SAFE_MACROS - PyObject *b0 = PyTuple_GET_ITEM(bases, i); -#else - PyObject *b0 = PyTuple_GetItem(bases, i); - if (!b0) return -1; -#endif - PyTypeObject *b; -#if PY_MAJOR_VERSION < 3 - if (PyClass_Check(b0)) - { - PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", - PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - return -1; - } -#endif - b = (PyTypeObject*) b0; - if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) - { - __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); - PyErr_Format(PyExc_TypeError, - "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); - __Pyx_DECREF_TypeName(b_name); -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - return -1; - } - if (dictoffset == 0) - { - Py_ssize_t b_dictoffset = 0; -#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY - b_dictoffset = b->tp_dictoffset; -#else - PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); - if (!py_b_dictoffset) goto dictoffset_return; - b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); - Py_DECREF(py_b_dictoffset); - if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; -#endif - if (b_dictoffset) { - { - __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); - PyErr_Format(PyExc_TypeError, - "extension type '%.200s' has no __dict__ slot, " - "but base type '" __Pyx_FMT_TYPENAME "' has: " - "either add 'cdef dict __dict__' to the extension type " - "or add '__slots__ = [...]' to the base type", - type_name, b_name); - __Pyx_DECREF_TypeName(b_name); - } -#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) - dictoffset_return: -#endif -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - return -1; - } - } -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - } - return 0; -} -#endif - -/* PyType_Ready */ - static int __Pyx_PyType_Ready(PyTypeObject *t) { -#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) - (void)__Pyx_PyObject_CallMethod0; -#if CYTHON_USE_TYPE_SPECS - (void)__Pyx_validate_bases_tuple; -#endif - return PyType_Ready(t); -#else - int r; - PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); - if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) - return -1; -#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) - { - int gc_was_enabled; - #if PY_VERSION_HEX >= 0x030A00b1 - gc_was_enabled = PyGC_Disable(); - (void)__Pyx_PyObject_CallMethod0; - #else - PyObject *ret, *py_status; - PyObject *gc = NULL; - #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) - gc = PyImport_GetModule(__pyx_kp_u_gc); - #endif - if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); - if (unlikely(!gc)) return -1; - py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); - if (unlikely(!py_status)) { - Py_DECREF(gc); - return -1; - } - gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); - Py_DECREF(py_status); - if (gc_was_enabled > 0) { - ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); - if (unlikely(!ret)) { - Py_DECREF(gc); - return -1; - } - Py_DECREF(ret); - } else if (unlikely(gc_was_enabled == -1)) { - Py_DECREF(gc); - return -1; - } - #endif - t->tp_flags |= Py_TPFLAGS_HEAPTYPE; -#if PY_VERSION_HEX >= 0x030A0000 - t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; -#endif -#else - (void)__Pyx_PyObject_CallMethod0; -#endif - r = PyType_Ready(t); -#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) - t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; - #if PY_VERSION_HEX >= 0x030A00b1 - if (gc_was_enabled) - PyGC_Enable(); - #else - if (gc_was_enabled) { - PyObject *tp, *v, *tb; - PyErr_Fetch(&tp, &v, &tb); - ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); - if (likely(ret || r == -1)) { - Py_XDECREF(ret); - PyErr_Restore(tp, v, tb); - } else { - Py_XDECREF(tp); - Py_XDECREF(v); - Py_XDECREF(tb); - r = -1; - } - } - Py_DECREF(gc); - #endif - } -#endif - return r; -#endif -} - -/* SetupReduce */ - #if !CYTHON_COMPILING_IN_LIMITED_API -static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { - int ret; - PyObject *name_attr; - name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name_2); - if (likely(name_attr)) { - ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); - } else { - ret = -1; - } - if (unlikely(ret < 0)) { - PyErr_Clear(); - ret = 0; - } - Py_XDECREF(name_attr); - return ret; -} -static int __Pyx_setup_reduce(PyObject* type_obj) { - int ret = 0; - PyObject *object_reduce = NULL; - PyObject *object_getstate = NULL; - PyObject *object_reduce_ex = NULL; - PyObject *reduce = NULL; - PyObject *reduce_ex = NULL; - PyObject *reduce_cython = NULL; - PyObject *setstate = NULL; - PyObject *setstate_cython = NULL; - PyObject *getstate = NULL; -#if CYTHON_USE_PYTYPE_LOOKUP - getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate); -#else - getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate); - if (!getstate && PyErr_Occurred()) { - goto __PYX_BAD; - } -#endif - if (getstate) { -#if CYTHON_USE_PYTYPE_LOOKUP - object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate); -#else - object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate); - if (!object_getstate && PyErr_Occurred()) { - goto __PYX_BAD; - } -#endif - if (object_getstate != getstate) { - goto __PYX_GOOD; - } - } -#if CYTHON_USE_PYTYPE_LOOKUP - object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; -#else - object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; -#endif - reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; - if (reduce_ex == object_reduce_ex) { -#if CYTHON_USE_PYTYPE_LOOKUP - object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; -#else - object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; -#endif - reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; - if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { - reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); - if (likely(reduce_cython)) { - ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - } else if (reduce == object_reduce || PyErr_Occurred()) { - goto __PYX_BAD; - } - setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate); - if (!setstate) PyErr_Clear(); - if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { - setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); - if (likely(setstate_cython)) { - ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - } else if (!setstate || PyErr_Occurred()) { - goto __PYX_BAD; - } - } - PyType_Modified((PyTypeObject*)type_obj); - } - } - goto __PYX_GOOD; -__PYX_BAD: - if (!PyErr_Occurred()) { - __Pyx_TypeName type_obj_name = - __Pyx_PyType_GetName((PyTypeObject*)type_obj); - PyErr_Format(PyExc_RuntimeError, - "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); - __Pyx_DECREF_TypeName(type_obj_name); - } - ret = -1; -__PYX_GOOD: -#if !CYTHON_USE_PYTYPE_LOOKUP - Py_XDECREF(object_reduce); - Py_XDECREF(object_reduce_ex); - Py_XDECREF(object_getstate); - Py_XDECREF(getstate); -#endif - Py_XDECREF(reduce); - Py_XDECREF(reduce_ex); - Py_XDECREF(reduce_cython); - Py_XDECREF(setstate); - Py_XDECREF(setstate_cython); - return ret; -} -#endif - -/* SetVTable */ - static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { - PyObject *ob = PyCapsule_New(vtable, 0, 0); - if (unlikely(!ob)) - goto bad; -#if CYTHON_COMPILING_IN_LIMITED_API - if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0)) -#else - if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0)) -#endif - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetVTable */ - static void* __Pyx_GetVtable(PyTypeObject *type) { - void* ptr; -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable); -#else - PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable); -#endif - if (!ob) - goto bad; - ptr = PyCapsule_GetPointer(ob, 0); - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - -/* MergeVTables */ - #if !CYTHON_COMPILING_IN_LIMITED_API -static int __Pyx_MergeVtables(PyTypeObject *type) { - int i; - void** base_vtables; - __Pyx_TypeName tp_base_name; - __Pyx_TypeName base_name; - void* unknown = (void*)-1; - PyObject* bases = type->tp_bases; - int base_depth = 0; - { - PyTypeObject* base = type->tp_base; - while (base) { - base_depth += 1; - base = base->tp_base; - } - } - base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1)); - base_vtables[0] = unknown; - for (i = 1; i < PyTuple_GET_SIZE(bases); i++) { - void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i))); - if (base_vtable != NULL) { - int j; - PyTypeObject* base = type->tp_base; - for (j = 0; j < base_depth; j++) { - if (base_vtables[j] == unknown) { - base_vtables[j] = __Pyx_GetVtable(base); - base_vtables[j + 1] = unknown; - } - if (base_vtables[j] == base_vtable) { - break; - } else if (base_vtables[j] == NULL) { - goto bad; - } - base = base->tp_base; - } - } - } - PyErr_Clear(); - free(base_vtables); - return 0; -bad: - tp_base_name = __Pyx_PyType_GetName(type->tp_base); - base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i)); - PyErr_Format(PyExc_TypeError, - "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); - __Pyx_DECREF_TypeName(tp_base_name); - __Pyx_DECREF_TypeName(base_name); - free(base_vtables); - return -1; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType_3_0_8 -#define __PYX_HAVE_RT_ImportType_3_0_8 -static PyTypeObject *__Pyx_ImportType_3_0_8(PyObject *module, const char *module_name, const char *class_name, - size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_8 check_size) -{ - PyObject *result = 0; - char warning[200]; - Py_ssize_t basicsize; - Py_ssize_t itemsize; -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_basicsize; - PyObject *py_itemsize; -#endif - result = PyObject_GetAttrString(module, class_name); - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#if !CYTHON_COMPILING_IN_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; - itemsize = ((PyTypeObject *)result)->tp_itemsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; - py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); - if (!py_itemsize) - goto bad; - itemsize = PyLong_AsSsize_t(py_itemsize); - Py_DECREF(py_itemsize); - py_itemsize = 0; - if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (itemsize) { - if (size % alignment) { - alignment = size % alignment; - } - if (itemsize < (Py_ssize_t)alignment) - itemsize = (Py_ssize_t)alignment; - } - if ((size_t)(basicsize + itemsize) < size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize+itemsize); - goto bad; - } - if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_8 && - ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd-%zd from PyObject", - module_name, class_name, size, basicsize, basicsize+itemsize); - goto bad; - } - else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_8 && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(result); - return NULL; -} -#endif - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - CYTHON_MAYBE_UNUSED_VAR(tstate); - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - __PYX_PY_DICT_LOOKUP_IF_MODIFIED( - use_cline, *cython_runtime_dict, - __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - #if !CYTHON_COMPILING_IN_LIMITED_API -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} -#endif - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API - #ifndef Py_BUILD_CORE - #define Py_BUILD_CORE 1 - #endif - #include "internal/pycore_frame.h" -#endif -#if CYTHON_COMPILING_IN_LIMITED_API -static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, - PyObject *firstlineno, PyObject *name) { - PyObject *replace = NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; - replace = PyObject_GetAttrString(code, "replace"); - if (likely(replace)) { - PyObject *result; - result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); - Py_DECREF(replace); - return result; - } - PyErr_Clear(); - #if __PYX_LIMITED_VERSION_HEX < 0x030780000 - { - PyObject *compiled = NULL, *result = NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; - compiled = Py_CompileString( - "out = type(code)(\n" - " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" - " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" - " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" - " code.co_lnotab)\n", "", Py_file_input); - if (!compiled) return NULL; - result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); - Py_DECREF(compiled); - if (!result) PyErr_Print(); - Py_DECREF(result); - result = PyDict_GetItemString(scratch_dict, "out"); - if (result) Py_INCREF(result); - return result; - } - #else - return NULL; - #endif -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; - PyObject *replace = NULL, *getframe = NULL, *frame = NULL; - PyObject *exc_type, *exc_value, *exc_traceback; - int success = 0; - if (c_line) { - (void) __pyx_cfilenm; - (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); - } - PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); - code_object = Py_CompileString("_getframe()", filename, Py_eval_input); - if (unlikely(!code_object)) goto bad; - py_py_line = PyLong_FromLong(py_line); - if (unlikely(!py_py_line)) goto bad; - py_funcname = PyUnicode_FromString(funcname); - if (unlikely(!py_funcname)) goto bad; - dict = PyDict_New(); - if (unlikely(!dict)) goto bad; - { - PyObject *old_code_object = code_object; - code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); - Py_DECREF(old_code_object); - } - if (unlikely(!code_object)) goto bad; - getframe = PySys_GetObject("_getframe"); - if (unlikely(!getframe)) goto bad; - if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; - frame = PyEval_EvalCode(code_object, dict, dict); - if (unlikely(!frame) || frame == Py_None) goto bad; - success = 1; - bad: - PyErr_Restore(exc_type, exc_value, exc_traceback); - Py_XDECREF(code_object); - Py_XDECREF(py_py_line); - Py_XDECREF(py_funcname); - Py_XDECREF(dict); - Py_XDECREF(replace); - if (success) { - PyTraceBack_Here( - (struct _frame*)frame); - } - Py_XDECREF(frame); -} -#else -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = NULL; - PyObject *py_funcname = NULL; - #if PY_MAJOR_VERSION < 3 - PyObject *py_srcfile = NULL; - py_srcfile = PyString_FromString(filename); - if (!py_srcfile) goto bad; - #endif - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - if (!py_funcname) goto bad; - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - if (!py_funcname) goto bad; - funcname = PyUnicode_AsUTF8(py_funcname); - if (!funcname) goto bad; - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - if (!py_funcname) goto bad; - #endif - } - #if PY_MAJOR_VERSION < 3 - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - #else - py_code = PyCode_NewEmpty(filename, funcname, py_line); - #endif - Py_XDECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_funcname); - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_srcfile); - #endif - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject *ptype, *pvalue, *ptraceback; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) { - /* If the code object creation fails, then we should clear the - fetched exception references and propagate the new exception */ - Py_XDECREF(ptype); - Py_XDECREF(pvalue); - Py_XDECREF(ptraceback); - goto bad; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} -#endif - -#if PY_MAJOR_VERSION < 3 -static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { - __Pyx_TypeName obj_type_name; - if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); - if (__Pyx_TypeCheck(obj, __pyx_array_type)) return __pyx_array_getbuffer(obj, view, flags); - if (__Pyx_TypeCheck(obj, __pyx_memoryview_type)) return __pyx_memoryview_getbuffer(obj, view, flags); - obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); - PyErr_Format(PyExc_TypeError, - "'" __Pyx_FMT_TYPENAME "' does not have the buffer interface", - obj_type_name); - __Pyx_DECREF_TypeName(obj_type_name); - return -1; -} -static void __Pyx_ReleaseBuffer(Py_buffer *view) { - PyObject *obj = view->obj; - if (!obj) return; - if (PyObject_CheckBuffer(obj)) { - PyBuffer_Release(view); - return; - } - if ((0)) {} - view->obj = NULL; - Py_DECREF(obj); -} -#endif - - - /* MemviewSliceIsContig */ - static int -__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim) -{ - int i, index, step, start; - Py_ssize_t itemsize = mvs.memview->view.itemsize; - if (order == 'F') { - step = 1; - start = 0; - } else { - step = -1; - start = ndim - 1; - } - for (i = 0; i < ndim; i++) { - index = start + step * i; - if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize) - return 0; - itemsize *= mvs.shape[index]; - } - return 1; -} - -/* OverlappingSlices */ - static void -__pyx_get_array_memory_extents(__Pyx_memviewslice *slice, - void **out_start, void **out_end, - int ndim, size_t itemsize) -{ - char *start, *end; - int i; - start = end = slice->data; - for (i = 0; i < ndim; i++) { - Py_ssize_t stride = slice->strides[i]; - Py_ssize_t extent = slice->shape[i]; - if (extent == 0) { - *out_start = *out_end = start; - return; - } else { - if (stride > 0) - end += stride * (extent - 1); - else - start += stride * (extent - 1); - } - } - *out_start = start; - *out_end = end + itemsize; -} -static int -__pyx_slices_overlap(__Pyx_memviewslice *slice1, - __Pyx_memviewslice *slice2, - int ndim, size_t itemsize) -{ - void *start1, *end1, *start2, *end2; - __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize); - __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize); - return (start1 < end2) && (start2 < end1); -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* TypeInfoCompare */ - static int -__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b) -{ - int i; - if (!a || !b) - return 0; - if (a == b) - return 1; - if (a->size != b->size || a->typegroup != b->typegroup || - a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) { - if (a->typegroup == 'H' || b->typegroup == 'H') { - return a->size == b->size; - } else { - return 0; - } - } - if (a->ndim) { - for (i = 0; i < a->ndim; i++) - if (a->arraysize[i] != b->arraysize[i]) - return 0; - } - if (a->typegroup == 'S') { - if (a->flags != b->flags) - return 0; - if (a->fields || b->fields) { - if (!(a->fields && b->fields)) - return 0; - for (i = 0; a->fields[i].type && b->fields[i].type; i++) { - __Pyx_StructField *field_a = a->fields + i; - __Pyx_StructField *field_b = b->fields + i; - if (field_a->offset != field_b->offset || - !__pyx_typeinfo_cmp(field_a->type, field_b->type)) - return 0; - } - return !a->fields[i].type && !b->fields[i].type; - } - } - return 1; -} - -/* MemviewSliceValidateAndInit */ - static int -__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec) -{ - if (buf->shape[dim] <= 1) - return 1; - if (buf->strides) { - if (spec & __Pyx_MEMVIEW_CONTIG) { - if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) { - if (unlikely(buf->strides[dim] != sizeof(void *))) { - PyErr_Format(PyExc_ValueError, - "Buffer is not indirectly contiguous " - "in dimension %d.", dim); - goto fail; - } - } else if (unlikely(buf->strides[dim] != buf->itemsize)) { - PyErr_SetString(PyExc_ValueError, - "Buffer and memoryview are not contiguous " - "in the same dimension."); - goto fail; - } - } - if (spec & __Pyx_MEMVIEW_FOLLOW) { - Py_ssize_t stride = buf->strides[dim]; - if (stride < 0) - stride = -stride; - if (unlikely(stride < buf->itemsize)) { - PyErr_SetString(PyExc_ValueError, - "Buffer and memoryview are not contiguous " - "in the same dimension."); - goto fail; - } - } - } else { - if (unlikely(spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1)) { - PyErr_Format(PyExc_ValueError, - "C-contiguous buffer is not contiguous in " - "dimension %d", dim); - goto fail; - } else if (unlikely(spec & (__Pyx_MEMVIEW_PTR))) { - PyErr_Format(PyExc_ValueError, - "C-contiguous buffer is not indirect in " - "dimension %d", dim); - goto fail; - } else if (unlikely(buf->suboffsets)) { - PyErr_SetString(PyExc_ValueError, - "Buffer exposes suboffsets but no strides"); - goto fail; - } - } - return 1; -fail: - return 0; -} -static int -__pyx_check_suboffsets(Py_buffer *buf, int dim, int ndim, int spec) -{ - CYTHON_UNUSED_VAR(ndim); - if (spec & __Pyx_MEMVIEW_DIRECT) { - if (unlikely(buf->suboffsets && buf->suboffsets[dim] >= 0)) { - PyErr_Format(PyExc_ValueError, - "Buffer not compatible with direct access " - "in dimension %d.", dim); - goto fail; - } - } - if (spec & __Pyx_MEMVIEW_PTR) { - if (unlikely(!buf->suboffsets || (buf->suboffsets[dim] < 0))) { - PyErr_Format(PyExc_ValueError, - "Buffer is not indirectly accessible " - "in dimension %d.", dim); - goto fail; - } - } - return 1; -fail: - return 0; -} -static int -__pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag) -{ - int i; - if (c_or_f_flag & __Pyx_IS_F_CONTIG) { - Py_ssize_t stride = 1; - for (i = 0; i < ndim; i++) { - if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { - PyErr_SetString(PyExc_ValueError, - "Buffer not fortran contiguous."); - goto fail; - } - stride = stride * buf->shape[i]; - } - } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) { - Py_ssize_t stride = 1; - for (i = ndim - 1; i >- 1; i--) { - if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { - PyErr_SetString(PyExc_ValueError, - "Buffer not C contiguous."); - goto fail; - } - stride = stride * buf->shape[i]; - } - } - return 1; -fail: - return 0; -} -static int __Pyx_ValidateAndInit_memviewslice( - int *axes_specs, - int c_or_f_flag, - int buf_flags, - int ndim, - __Pyx_TypeInfo *dtype, - __Pyx_BufFmt_StackElem stack[], - __Pyx_memviewslice *memviewslice, - PyObject *original_obj) -{ - struct __pyx_memoryview_obj *memview, *new_memview; - __Pyx_RefNannyDeclarations - Py_buffer *buf; - int i, spec = 0, retval = -1; - __Pyx_BufFmt_Context ctx; - int from_memoryview = __pyx_memoryview_check(original_obj); - __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0); - if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *) - original_obj)->typeinfo)) { - memview = (struct __pyx_memoryview_obj *) original_obj; - new_memview = NULL; - } else { - memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( - original_obj, buf_flags, 0, dtype); - new_memview = memview; - if (unlikely(!memview)) - goto fail; - } - buf = &memview->view; - if (unlikely(buf->ndim != ndim)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - ndim, buf->ndim); - goto fail; - } - if (new_memview) { - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (unlikely(!__Pyx_BufFmt_CheckString(&ctx, buf->format))) goto fail; - } - if (unlikely((unsigned) buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) " - "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)", - buf->itemsize, - (buf->itemsize > 1) ? "s" : "", - dtype->name, - dtype->size, - (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->len > 0) { - for (i = 0; i < ndim; i++) { - spec = axes_specs[i]; - if (unlikely(!__pyx_check_strides(buf, i, ndim, spec))) - goto fail; - if (unlikely(!__pyx_check_suboffsets(buf, i, ndim, spec))) - goto fail; - } - if (unlikely(buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))) - goto fail; - } - if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice, - new_memview != NULL) == -1)) { - goto fail; - } - retval = 0; - goto no_fail; -fail: - Py_XDECREF(new_memview); - retval = -1; -no_fail: - __Pyx_RefNannyFinishContext(); - return retval; -} - -/* ObjectToMemviewSlice */ - static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dcd__double(PyObject *obj, int writable_flag) { - __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; - __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW) }; - int retcode; - if (obj == Py_None) { - result.memview = (struct __pyx_memoryview_obj *) Py_None; - return result; - } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_F_CONTIG, - (PyBUF_F_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, - &__Pyx_TypeInfo_double, stack, - &result, obj); - if (unlikely(retcode == -1)) - goto __pyx_fail; - return result; -__pyx_fail: - result.memview = NULL; - result.data = NULL; - return result; -} - -/* ObjectToMemviewSlice */ - static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(PyObject *obj, int writable_flag) { - __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; - __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; - int retcode; - if (obj == Py_None) { - result.memview = (struct __pyx_memoryview_obj *) Py_None; - return result; - } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, - (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 1, - &__Pyx_TypeInfo_unsigned_char, stack, - &result, obj); - if (unlikely(retcode == -1)) - goto __pyx_fail; - return result; -__pyx_fail: - result.memview = NULL; - result.data = NULL; - return result; -} - -/* Declarations */ - #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return ::std::complex< float >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return x + y*(__pyx_t_float_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - __pyx_t_float_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabsf(b.real) >= fabsf(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - float r = b.imag / b.real; - float s = (float)(1.0) / (b.real + b.imag * r); - return __pyx_t_float_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - float r = b.real / b.imag; - float s = (float)(1.0) / (b.imag + b.real * r); - return __pyx_t_float_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - float denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_float_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrtf(z.real*z.real + z.imag*z.imag); - #else - return hypotf(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - float r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - float denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_float(a, a); - case 3: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, a); - case 4: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if ((b.imag == 0) && (a.real >= 0)) { - z.real = powf(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2f(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_float(a); - theta = atan2f(a.imag, a.real); - } - lnr = logf(r); - z_r = expf(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cosf(z_theta); - z.imag = z_r * sinf(z_theta); - return z; - } - #endif -#endif - -/* Declarations */ - #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return ::std::complex< double >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return x + y*(__pyx_t_double_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - __pyx_t_double_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabs(b.real) >= fabs(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - double r = b.imag / b.real; - double s = (double)(1.0) / (b.real + b.imag * r); - return __pyx_t_double_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - double r = b.real / b.imag; - double s = (double)(1.0) / (b.imag + b.real * r); - return __pyx_t_double_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - double denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_double_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrt(z.real*z.real + z.imag*z.imag); - #else - return hypot(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - double r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - double denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_double(a, a); - case 3: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, a); - case 4: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if ((b.imag == 0) && (a.real >= 0)) { - z.real = pow(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_double(a); - theta = atan2(a.imag, a.real); - } - lnr = log(r); - z_r = exp(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cos(z_theta); - z.imag = z_r * sin(z_theta); - return z; - } - #endif -#endif - -/* MemviewSliceCopyTemplate */ - static __Pyx_memviewslice -__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, - const char *mode, int ndim, - size_t sizeof_dtype, int contig_flag, - int dtype_is_object) -{ - __Pyx_RefNannyDeclarations - int i; - __Pyx_memviewslice new_mvs = { 0, 0, { 0 }, { 0 }, { 0 } }; - struct __pyx_memoryview_obj *from_memview = from_mvs->memview; - Py_buffer *buf = &from_memview->view; - PyObject *shape_tuple = NULL; - PyObject *temp_int = NULL; - struct __pyx_array_obj *array_obj = NULL; - struct __pyx_memoryview_obj *memview_obj = NULL; - __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0); - for (i = 0; i < ndim; i++) { - if (unlikely(from_mvs->suboffsets[i] >= 0)) { - PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with " - "indirect dimensions (axis %d)", i); - goto fail; - } - } - shape_tuple = PyTuple_New(ndim); - if (unlikely(!shape_tuple)) { - goto fail; - } - __Pyx_GOTREF(shape_tuple); - for(i = 0; i < ndim; i++) { - temp_int = PyInt_FromSsize_t(from_mvs->shape[i]); - if(unlikely(!temp_int)) { - goto fail; - } else { - PyTuple_SET_ITEM(shape_tuple, i, temp_int); - temp_int = NULL; - } - } - array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, (char *) mode, NULL); - if (unlikely(!array_obj)) { - goto fail; - } - __Pyx_GOTREF(array_obj); - memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( - (PyObject *) array_obj, contig_flag, - dtype_is_object, - from_mvs->memview->typeinfo); - if (unlikely(!memview_obj)) - goto fail; - if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0)) - goto fail; - if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim, - dtype_is_object) < 0)) - goto fail; - goto no_fail; -fail: - __Pyx_XDECREF(new_mvs.memview); - new_mvs.memview = NULL; - new_mvs.data = NULL; -no_fail: - __Pyx_XDECREF(shape_tuple); - __Pyx_XDECREF(temp_int); - __Pyx_XDECREF(array_obj); - __Pyx_RefNannyFinishContext(); - return new_mvs; -} - -/* MemviewSliceInit */ - static int -__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, - int ndim, - __Pyx_memviewslice *memviewslice, - int memview_is_new_reference) -{ - __Pyx_RefNannyDeclarations - int i, retval=-1; - Py_buffer *buf = &memview->view; - __Pyx_RefNannySetupContext("init_memviewslice", 0); - if (unlikely(memviewslice->memview || memviewslice->data)) { - PyErr_SetString(PyExc_ValueError, - "memviewslice is already initialized!"); - goto fail; - } - if (buf->strides) { - for (i = 0; i < ndim; i++) { - memviewslice->strides[i] = buf->strides[i]; - } - } else { - Py_ssize_t stride = buf->itemsize; - for (i = ndim - 1; i >= 0; i--) { - memviewslice->strides[i] = stride; - stride *= buf->shape[i]; - } - } - for (i = 0; i < ndim; i++) { - memviewslice->shape[i] = buf->shape[i]; - if (buf->suboffsets) { - memviewslice->suboffsets[i] = buf->suboffsets[i]; - } else { - memviewslice->suboffsets[i] = -1; - } - } - memviewslice->memview = memview; - memviewslice->data = (char *)buf->buf; - if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) { - Py_INCREF(memview); - } - retval = 0; - goto no_fail; -fail: - memviewslice->memview = 0; - memviewslice->data = 0; - retval = -1; -no_fail: - __Pyx_RefNannyFinishContext(); - return retval; -} -#ifndef Py_NO_RETURN -#define Py_NO_RETURN -#endif -static void __pyx_fatalerror(const char *fmt, ...) Py_NO_RETURN { - va_list vargs; - char msg[200]; -#if PY_VERSION_HEX >= 0x030A0000 || defined(HAVE_STDARG_PROTOTYPES) - va_start(vargs, fmt); -#else - va_start(vargs); -#endif - vsnprintf(msg, 200, fmt, vargs); - va_end(vargs); - Py_FatalError(msg); -} -static CYTHON_INLINE int -__pyx_add_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, - PyThread_type_lock lock) -{ - int result; - PyThread_acquire_lock(lock, 1); - result = (*acquisition_count)++; - PyThread_release_lock(lock); - return result; -} -static CYTHON_INLINE int -__pyx_sub_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, - PyThread_type_lock lock) -{ - int result; - PyThread_acquire_lock(lock, 1); - result = (*acquisition_count)--; - PyThread_release_lock(lock); - return result; -} -static CYTHON_INLINE void -__Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno) -{ - __pyx_nonatomic_int_type old_acquisition_count; - struct __pyx_memoryview_obj *memview = memslice->memview; - if (unlikely(!memview || (PyObject *) memview == Py_None)) { - return; - } - old_acquisition_count = __pyx_add_acquisition_count(memview); - if (unlikely(old_acquisition_count <= 0)) { - if (likely(old_acquisition_count == 0)) { - if (have_gil) { - Py_INCREF((PyObject *) memview); - } else { - PyGILState_STATE _gilstate = PyGILState_Ensure(); - Py_INCREF((PyObject *) memview); - PyGILState_Release(_gilstate); - } - } else { - __pyx_fatalerror("Acquisition count is %d (line %d)", - old_acquisition_count+1, lineno); - } - } -} -static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *memslice, - int have_gil, int lineno) { - __pyx_nonatomic_int_type old_acquisition_count; - struct __pyx_memoryview_obj *memview = memslice->memview; - if (unlikely(!memview || (PyObject *) memview == Py_None)) { - memslice->memview = NULL; - return; - } - old_acquisition_count = __pyx_sub_acquisition_count(memview); - memslice->data = NULL; - if (likely(old_acquisition_count > 1)) { - memslice->memview = NULL; - } else if (likely(old_acquisition_count == 1)) { - if (have_gil) { - Py_CLEAR(memslice->memview); - } else { - PyGILState_STATE _gilstate = PyGILState_Ensure(); - Py_CLEAR(memslice->memview); - PyGILState_Release(_gilstate); - } - } else { - __pyx_fatalerror("Acquisition count is %d (line %d)", - old_acquisition_count-1, lineno); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if ((sizeof(int) < sizeof(long))) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - if (unlikely(__Pyx_PyLong_IsNeg(x))) { - goto raise_neg_overflow; - } else if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_DigitCount(x)) { - case 2: - if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(int) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_SignedDigitCount(x)) { - case -2: - if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(int) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); -#if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } -#endif - if (likely(v)) { - int ret = -1; -#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); -#else - PyObject *stepval = NULL, *mask = NULL, *shift = NULL; - int bits, remaining_bits, is_negative = 0; - long idigit; - int chunk_size = (sizeof(long) < 8) ? 30 : 62; - if (unlikely(!PyLong_CheckExact(v))) { - PyObject *tmp = v; - v = PyNumber_Long(v); - assert(PyLong_CheckExact(v)); - Py_DECREF(tmp); - if (unlikely(!v)) return (int) -1; - } -#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(x) == 0) - return (int) 0; - is_negative = Py_SIZE(x) < 0; -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - is_negative = result == 1; - } -#endif - if (is_unsigned && unlikely(is_negative)) { - goto raise_neg_overflow; - } else if (is_negative) { - stepval = PyNumber_Invert(v); - if (unlikely(!stepval)) - return (int) -1; - } else { - stepval = __Pyx_NewRef(v); - } - val = (int) 0; - mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; - shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; - for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { - PyObject *tmp, *digit; - digit = PyNumber_And(stepval, mask); - if (unlikely(!digit)) goto done; - idigit = PyLong_AsLong(digit); - Py_DECREF(digit); - if (unlikely(idigit < 0)) goto done; - tmp = PyNumber_Rshift(stepval, shift); - if (unlikely(!tmp)) goto done; - Py_DECREF(stepval); stepval = tmp; - val |= ((int) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(stepval) == 0) - goto unpacking_done; - #endif - } - idigit = PyLong_AsLong(stepval); - if (unlikely(idigit < 0)) goto done; - remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((int) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - unpacking_done: - #endif - if (!is_unsigned) { - if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) - goto raise_overflow; - if (is_negative) - val = ~val; - } - ret = 0; - done: - Py_XDECREF(shift); - Py_XDECREF(mask); - Py_XDECREF(stepval); -#endif - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; -#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); -#else - PyObject *from_bytes, *result = NULL; - PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; - from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); - if (!from_bytes) return NULL; - py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); - if (!py_bytes) goto limited_bad; - order_str = PyUnicode_FromString(little ? "little" : "big"); - if (!order_str) goto limited_bad; - arg_tuple = PyTuple_Pack(2, py_bytes, order_str); - if (!arg_tuple) goto limited_bad; - if (!is_unsigned) { - kwds = PyDict_New(); - if (!kwds) goto limited_bad; - if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; - } - result = PyObject_Call(from_bytes, arg_tuple, kwds); - limited_bad: - Py_XDECREF(kwds); - Py_XDECREF(arg_tuple); - Py_XDECREF(order_str); - Py_XDECREF(py_bytes); - Py_XDECREF(from_bytes); - return result; -#endif - } -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if ((sizeof(long) < sizeof(long))) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - if (unlikely(__Pyx_PyLong_IsNeg(x))) { - goto raise_neg_overflow; - } else if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_DigitCount(x)) { - case 2: - if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(long) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_SignedDigitCount(x)) { - case -2: - if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(long) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); -#if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } -#endif - if (likely(v)) { - int ret = -1; -#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); -#else - PyObject *stepval = NULL, *mask = NULL, *shift = NULL; - int bits, remaining_bits, is_negative = 0; - long idigit; - int chunk_size = (sizeof(long) < 8) ? 30 : 62; - if (unlikely(!PyLong_CheckExact(v))) { - PyObject *tmp = v; - v = PyNumber_Long(v); - assert(PyLong_CheckExact(v)); - Py_DECREF(tmp); - if (unlikely(!v)) return (long) -1; - } -#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(x) == 0) - return (long) 0; - is_negative = Py_SIZE(x) < 0; -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - is_negative = result == 1; - } -#endif - if (is_unsigned && unlikely(is_negative)) { - goto raise_neg_overflow; - } else if (is_negative) { - stepval = PyNumber_Invert(v); - if (unlikely(!stepval)) - return (long) -1; - } else { - stepval = __Pyx_NewRef(v); - } - val = (long) 0; - mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; - shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; - for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { - PyObject *tmp, *digit; - digit = PyNumber_And(stepval, mask); - if (unlikely(!digit)) goto done; - idigit = PyLong_AsLong(digit); - Py_DECREF(digit); - if (unlikely(idigit < 0)) goto done; - tmp = PyNumber_Rshift(stepval, shift); - if (unlikely(!tmp)) goto done; - Py_DECREF(stepval); stepval = tmp; - val |= ((long) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(stepval) == 0) - goto unpacking_done; - #endif - } - idigit = PyLong_AsLong(stepval); - if (unlikely(idigit < 0)) goto done; - remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((long) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - unpacking_done: - #endif - if (!is_unsigned) { - if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) - goto raise_overflow; - if (is_negative) - val = ~val; - } - ret = 0; - done: - Py_XDECREF(shift); - Py_XDECREF(mask); - Py_XDECREF(stepval); -#endif - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; -#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); -#else - PyObject *from_bytes, *result = NULL; - PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; - from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); - if (!from_bytes) return NULL; - py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); - if (!py_bytes) goto limited_bad; - order_str = PyUnicode_FromString(little ? "little" : "big"); - if (!order_str) goto limited_bad; - arg_tuple = PyTuple_Pack(2, py_bytes, order_str); - if (!arg_tuple) goto limited_bad; - if (!is_unsigned) { - kwds = PyDict_New(); - if (!kwds) goto limited_bad; - if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; - } - result = PyObject_Call(from_bytes, arg_tuple, kwds); - limited_bad: - Py_XDECREF(kwds); - Py_XDECREF(arg_tuple); - Py_XDECREF(order_str); - Py_XDECREF(py_bytes); - Py_XDECREF(from_bytes); - return result; -#endif - } -} - -/* CIntFromPy */ - static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const size_t neg_one = (size_t) -1, const_zero = (size_t) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if ((sizeof(size_t) < sizeof(long))) { - __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (size_t) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - if (unlikely(__Pyx_PyLong_IsNeg(x))) { - goto raise_neg_overflow; - } else if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_DigitCount(x)) { - case 2: - if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) { - return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) { - return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) >= 4 * PyLong_SHIFT)) { - return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - } - break; - } - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (size_t) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(size_t) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_SignedDigitCount(x)) { - case -2: - if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { - return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { - return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { - return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { - return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { - return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) { - return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(size_t) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - size_t val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); -#if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } -#endif - if (likely(v)) { - int ret = -1; -#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); -#else - PyObject *stepval = NULL, *mask = NULL, *shift = NULL; - int bits, remaining_bits, is_negative = 0; - long idigit; - int chunk_size = (sizeof(long) < 8) ? 30 : 62; - if (unlikely(!PyLong_CheckExact(v))) { - PyObject *tmp = v; - v = PyNumber_Long(v); - assert(PyLong_CheckExact(v)); - Py_DECREF(tmp); - if (unlikely(!v)) return (size_t) -1; - } -#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(x) == 0) - return (size_t) 0; - is_negative = Py_SIZE(x) < 0; -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (size_t) -1; - is_negative = result == 1; - } -#endif - if (is_unsigned && unlikely(is_negative)) { - goto raise_neg_overflow; - } else if (is_negative) { - stepval = PyNumber_Invert(v); - if (unlikely(!stepval)) - return (size_t) -1; - } else { - stepval = __Pyx_NewRef(v); - } - val = (size_t) 0; - mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; - shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; - for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) { - PyObject *tmp, *digit; - digit = PyNumber_And(stepval, mask); - if (unlikely(!digit)) goto done; - idigit = PyLong_AsLong(digit); - Py_DECREF(digit); - if (unlikely(idigit < 0)) goto done; - tmp = PyNumber_Rshift(stepval, shift); - if (unlikely(!tmp)) goto done; - Py_DECREF(stepval); stepval = tmp; - val |= ((size_t) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(stepval) == 0) - goto unpacking_done; - #endif - } - idigit = PyLong_AsLong(stepval); - if (unlikely(idigit < 0)) goto done; - remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((size_t) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - unpacking_done: - #endif - if (!is_unsigned) { - if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1)))) - goto raise_overflow; - if (is_negative) - val = ~val; - } - ret = 0; - done: - Py_XDECREF(shift); - Py_XDECREF(mask); - Py_XDECREF(stepval); -#endif - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (size_t) -1; - } - } else { - size_t val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (size_t) -1; - val = __Pyx_PyInt_As_size_t(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to size_t"); - return (size_t) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to size_t"); - return (size_t) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const char neg_one = (char) -1, const_zero = (char) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if ((sizeof(char) < sizeof(long))) { - __PYX_VERIFY_RETURN_INT(char, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (char) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - if (unlikely(__Pyx_PyLong_IsNeg(x))) { - goto raise_neg_overflow; - } else if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(char, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_DigitCount(x)) { - case 2: - if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) >= 2 * PyLong_SHIFT)) { - return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) >= 3 * PyLong_SHIFT)) { - return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) >= 4 * PyLong_SHIFT)) { - return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - } - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (char) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(char) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(char) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(char, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) - } else { - const digit* digits = __Pyx_PyLong_Digits(x); - assert(__Pyx_PyLong_DigitCount(x) > 1); - switch (__Pyx_PyLong_SignedDigitCount(x)) { - case -2: - if ((8 * sizeof(char) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 4 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 4 * PyLong_SHIFT)) { - return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(char) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(char) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - char val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); -#if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } -#endif - if (likely(v)) { - int ret = -1; -#if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); -#else - PyObject *stepval = NULL, *mask = NULL, *shift = NULL; - int bits, remaining_bits, is_negative = 0; - long idigit; - int chunk_size = (sizeof(long) < 8) ? 30 : 62; - if (unlikely(!PyLong_CheckExact(v))) { - PyObject *tmp = v; - v = PyNumber_Long(v); - assert(PyLong_CheckExact(v)); - Py_DECREF(tmp); - if (unlikely(!v)) return (char) -1; - } -#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(x) == 0) - return (char) 0; - is_negative = Py_SIZE(x) < 0; -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (char) -1; - is_negative = result == 1; - } -#endif - if (is_unsigned && unlikely(is_negative)) { - goto raise_neg_overflow; - } else if (is_negative) { - stepval = PyNumber_Invert(v); - if (unlikely(!stepval)) - return (char) -1; - } else { - stepval = __Pyx_NewRef(v); - } - val = (char) 0; - mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; - shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; - for (bits = 0; bits < (int) sizeof(char) * 8 - chunk_size; bits += chunk_size) { - PyObject *tmp, *digit; - digit = PyNumber_And(stepval, mask); - if (unlikely(!digit)) goto done; - idigit = PyLong_AsLong(digit); - Py_DECREF(digit); - if (unlikely(idigit < 0)) goto done; - tmp = PyNumber_Rshift(stepval, shift); - if (unlikely(!tmp)) goto done; - Py_DECREF(stepval); stepval = tmp; - val |= ((char) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - if (Py_SIZE(stepval) == 0) - goto unpacking_done; - #endif - } - idigit = PyLong_AsLong(stepval); - if (unlikely(idigit < 0)) goto done; - remaining_bits = ((int) sizeof(char) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((char) idigit) << bits; - #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 - unpacking_done: - #endif - if (!is_unsigned) { - if (unlikely(val & (((char) 1) << (sizeof(char) * 8 - 1)))) - goto raise_overflow; - if (is_negative) - val = ~val; - } - ret = 0; - done: - Py_XDECREF(shift); - Py_XDECREF(mask); - Py_XDECREF(stepval); -#endif - Py_DECREF(v); - if (likely(!ret)) - return val; - } - return (char) -1; - } - } else { - char val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (char) -1; - val = __Pyx_PyInt_As_char(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to char"); - return (char) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to char"); - return (char) -1; -} - -/* FormatTypeName */ - #if CYTHON_COMPILING_IN_LIMITED_API -static __Pyx_TypeName -__Pyx_PyType_GetName(PyTypeObject* tp) -{ - PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, - __pyx_n_s_name_2); - if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { - PyErr_Clear(); - Py_XDECREF(name); - name = __Pyx_NewRef(__pyx_n_s__94); - } - return name; -} -#endif - -/* CheckBinaryVersion */ - static unsigned long __Pyx_get_runtime_version(void) { -#if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4 - return Py_Version & ~0xFFUL; -#else - const char* rt_version = Py_GetVersion(); - unsigned long version = 0; - unsigned long factor = 0x01000000UL; - unsigned int digit = 0; - int i = 0; - while (factor) { - while ('0' <= rt_version[i] && rt_version[i] <= '9') { - digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); - ++i; - } - version += factor * digit; - if (rt_version[i] != '.') - break; - digit = 0; - factor >>= 8; - ++i; - } - return version; -#endif -} -static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { - const unsigned long MAJOR_MINOR = 0xFFFF0000UL; - if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) - return 0; - if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) - return 1; - { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compile time Python version %d.%d " - "of module '%.100s' " - "%s " - "runtime version %d.%d", - (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), - __Pyx_MODULE_NAME, - (allow_newer) ? "was newer than" : "does not match", - (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) - ); - return PyErr_WarnEx(NULL, message, 1); - } -} - -/* InitStrings */ - #if PY_MAJOR_VERSION >= 3 -static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { - if (t.is_unicode | t.is_str) { - if (t.intern) { - *str = PyUnicode_InternFromString(t.s); - } else if (t.encoding) { - *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); - } else { - *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); - } - } else { - *str = PyBytes_FromStringAndSize(t.s, t.n - 1); - } - if (!*str) - return -1; - if (PyObject_Hash(*str) == -1) - return -1; - return 0; -} -#endif -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { - while (t->p) { - #if PY_MAJOR_VERSION >= 3 - __Pyx_InitString(*t, t->p); - #else - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - #endif - ++t; - } - return 0; -} - -#include -static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { - size_t len = strlen(s); - if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { - PyErr_SetString(PyExc_OverflowError, "byte string is too long"); - return -1; - } - return (Py_ssize_t) len; -} -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - Py_ssize_t len = __Pyx_ssize_strlen(c_str); - if (unlikely(len < 0)) return NULL; - return __Pyx_PyUnicode_FromStringAndSize(c_str, len); -} -static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { - Py_ssize_t len = __Pyx_ssize_strlen(c_str); - if (unlikely(len < 0)) return NULL; - return PyByteArray_FromStringAndSize(c_str, len); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { - int retval; - if (unlikely(!x)) return -1; - retval = __Pyx_PyObject_IsTrue(x); - Py_DECREF(x); - return retval; -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { - __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " - "The ability to return an instance of a strict subclass of int is deprecated, " - "and may be removed in a future version of Python.", - result_type_name)) { - __Pyx_DECREF_TypeName(result_type_name); - Py_DECREF(result); - return NULL; - } - __Pyx_DECREF_TypeName(result_type_name); - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", - type_name, type_name, result_type_name); - __Pyx_DECREF_TypeName(result_type_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(b); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(__Pyx_PyLong_IsCompact(b))) { - return __Pyx_PyLong_CompactValue(b); - } else { - const digit* digits = __Pyx_PyLong_Digits(b); - const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { - if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { - return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); -#if PY_MAJOR_VERSION < 3 - } else if (likely(PyInt_CheckExact(o))) { - return PyInt_AS_LONG(o); -#endif - } else { - Py_ssize_t ival; - PyObject *x; - x = PyNumber_Index(o); - if (!x) return -1; - ival = PyInt_AsLong(x); - Py_DECREF(x); - return ival; - } -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -/* #### Code section: utility_code_pragmas_end ### */ -#ifdef _MSC_VER -#pragma warning( pop ) -#endif - - - -/* #### Code section: end ### */ -#endif /* Py_PYTHON_H */ diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so deleted file mode 100755 index 6f6f3e8baf3b265be0baee2db2b87cc20bf5e4ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1744968 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

MM<{W{>CQ%c8^j*yp=?KM<7;Cp%4zBb~ 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 hUU0Xe`CQwsZQ&ls&rn;u4W=_rAn%bIq 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

-)vGO$Ob%NvN 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�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 z�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%0DTapPwkZw5r3OqJ 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∈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 diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_sim_solver_lat.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_sim_solver_lat.c deleted file mode 100644 index 0594aa2..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_sim_solver_lat.c +++ /dev/null @@ -1,290 +0,0 @@ -/* - * Copyright (c) The acados authors. - * - * This file is part of acados. - * - * The 2-Clause BSD License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE.; - */ -// standard -#include -#include - -// acados -#include "acados_c/external_function_interface.h" -#include "acados_c/sim_interface.h" -#include "acados_c/external_function_interface.h" - -#include "acados/sim/sim_common.h" -#include "acados/utils/external_function_generic.h" -#include "acados/utils/print.h" - - -// example specific -#include "lat_model/lat_model.h" -#include "acados_sim_solver_lat.h" - - -// ** solver data ** - -sim_solver_capsule * lat_acados_sim_solver_create_capsule() -{ - void* capsule_mem = malloc(sizeof(sim_solver_capsule)); - sim_solver_capsule *capsule = (sim_solver_capsule *) capsule_mem; - - return capsule; -} - - -int lat_acados_sim_solver_free_capsule(sim_solver_capsule * capsule) -{ - free(capsule); - return 0; -} - - -int lat_acados_sim_create(sim_solver_capsule * capsule) -{ - // initialize - const int nx = LAT_NX; - const int nu = LAT_NU; - const int nz = LAT_NZ; - const int np = LAT_NP; - bool tmp_bool; - - - double Tsim = 0.009765625; - - - // explicit ode - capsule->sim_forw_vde_casadi = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); - capsule->sim_vde_adj_casadi = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); - capsule->sim_expl_ode_fun_casadi = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); - - capsule->sim_forw_vde_casadi->casadi_fun = &lat_expl_vde_forw; - capsule->sim_forw_vde_casadi->casadi_n_in = &lat_expl_vde_forw_n_in; - capsule->sim_forw_vde_casadi->casadi_n_out = &lat_expl_vde_forw_n_out; - capsule->sim_forw_vde_casadi->casadi_sparsity_in = &lat_expl_vde_forw_sparsity_in; - capsule->sim_forw_vde_casadi->casadi_sparsity_out = &lat_expl_vde_forw_sparsity_out; - capsule->sim_forw_vde_casadi->casadi_work = &lat_expl_vde_forw_work; - external_function_param_casadi_create(capsule->sim_forw_vde_casadi, np); - - capsule->sim_vde_adj_casadi->casadi_fun = &lat_expl_vde_adj; - capsule->sim_vde_adj_casadi->casadi_n_in = &lat_expl_vde_adj_n_in; - capsule->sim_vde_adj_casadi->casadi_n_out = &lat_expl_vde_adj_n_out; - capsule->sim_vde_adj_casadi->casadi_sparsity_in = &lat_expl_vde_adj_sparsity_in; - capsule->sim_vde_adj_casadi->casadi_sparsity_out = &lat_expl_vde_adj_sparsity_out; - capsule->sim_vde_adj_casadi->casadi_work = &lat_expl_vde_adj_work; - external_function_param_casadi_create(capsule->sim_vde_adj_casadi, np); - - capsule->sim_expl_ode_fun_casadi->casadi_fun = &lat_expl_ode_fun; - capsule->sim_expl_ode_fun_casadi->casadi_n_in = &lat_expl_ode_fun_n_in; - capsule->sim_expl_ode_fun_casadi->casadi_n_out = &lat_expl_ode_fun_n_out; - capsule->sim_expl_ode_fun_casadi->casadi_sparsity_in = &lat_expl_ode_fun_sparsity_in; - capsule->sim_expl_ode_fun_casadi->casadi_sparsity_out = &lat_expl_ode_fun_sparsity_out; - capsule->sim_expl_ode_fun_casadi->casadi_work = &lat_expl_ode_fun_work; - external_function_param_casadi_create(capsule->sim_expl_ode_fun_casadi, np); - - - - // sim plan & config - sim_solver_plan_t plan; - plan.sim_solver = ERK; - - // create correct config based on plan - sim_config * lat_sim_config = sim_config_create(plan); - capsule->acados_sim_config = lat_sim_config; - - // sim dims - void *lat_sim_dims = sim_dims_create(lat_sim_config); - capsule->acados_sim_dims = lat_sim_dims; - sim_dims_set(lat_sim_config, lat_sim_dims, "nx", &nx); - sim_dims_set(lat_sim_config, lat_sim_dims, "nu", &nu); - sim_dims_set(lat_sim_config, lat_sim_dims, "nz", &nz); - - - // sim opts - sim_opts *lat_sim_opts = sim_opts_create(lat_sim_config, lat_sim_dims); - capsule->acados_sim_opts = lat_sim_opts; - int tmp_int = 3; - sim_opts_set(lat_sim_config, lat_sim_opts, "newton_iter", &tmp_int); - double tmp_double = 0.0; - sim_opts_set(lat_sim_config, lat_sim_opts, "newton_tol", &tmp_double); - sim_collocation_type collocation_type = GAUSS_LEGENDRE; - sim_opts_set(lat_sim_config, lat_sim_opts, "collocation_type", &collocation_type); - - - tmp_int = 4; - sim_opts_set(lat_sim_config, lat_sim_opts, "num_stages", &tmp_int); - tmp_int = 1; - sim_opts_set(lat_sim_config, lat_sim_opts, "num_steps", &tmp_int); - tmp_bool = 0; - sim_opts_set(lat_sim_config, lat_sim_opts, "jac_reuse", &tmp_bool); - - - // sim in / out - sim_in *lat_sim_in = sim_in_create(lat_sim_config, lat_sim_dims); - capsule->acados_sim_in = lat_sim_in; - sim_out *lat_sim_out = sim_out_create(lat_sim_config, lat_sim_dims); - capsule->acados_sim_out = lat_sim_out; - - sim_in_set(lat_sim_config, lat_sim_dims, - lat_sim_in, "T", &Tsim); - - // model functions - lat_sim_config->model_set(lat_sim_in->model, - "expl_vde_forw", capsule->sim_forw_vde_casadi); - lat_sim_config->model_set(lat_sim_in->model, - "expl_vde_adj", capsule->sim_vde_adj_casadi); - lat_sim_config->model_set(lat_sim_in->model, - "expl_ode_fun", capsule->sim_expl_ode_fun_casadi); - - // sim solver - sim_solver *lat_sim_solver = sim_solver_create(lat_sim_config, - lat_sim_dims, lat_sim_opts); - capsule->acados_sim_solver = lat_sim_solver; - - - /* initialize parameter values */ - double* p = calloc(np, sizeof(double)); - - - lat_acados_sim_update_params(capsule, p, np); - free(p); - - - /* initialize input */ - // x - double x0[4]; - for (int ii = 0; ii < 4; ii++) - x0[ii] = 0.0; - - sim_in_set(lat_sim_config, lat_sim_dims, - lat_sim_in, "x", x0); - - - // u - double u0[1]; - for (int ii = 0; ii < 1; ii++) - u0[ii] = 0.0; - - sim_in_set(lat_sim_config, lat_sim_dims, - lat_sim_in, "u", u0); - - // S_forw - double S_forw[20]; - for (int ii = 0; ii < 20; ii++) - S_forw[ii] = 0.0; - for (int ii = 0; ii < 4; ii++) - S_forw[ii + ii * 4 ] = 1.0; - - - sim_in_set(lat_sim_config, lat_sim_dims, - lat_sim_in, "S_forw", S_forw); - - int status = sim_precompute(lat_sim_solver, lat_sim_in, lat_sim_out); - - return status; -} - - -int lat_acados_sim_solve(sim_solver_capsule *capsule) -{ - // integrate dynamics using acados sim_solver - int status = sim_solve(capsule->acados_sim_solver, - capsule->acados_sim_in, capsule->acados_sim_out); - if (status != 0) - printf("error in lat_acados_sim_solve()! Exiting.\n"); - - return status; -} - - -int lat_acados_sim_free(sim_solver_capsule *capsule) -{ - // free memory - sim_solver_destroy(capsule->acados_sim_solver); - sim_in_destroy(capsule->acados_sim_in); - sim_out_destroy(capsule->acados_sim_out); - sim_opts_destroy(capsule->acados_sim_opts); - sim_dims_destroy(capsule->acados_sim_dims); - sim_config_destroy(capsule->acados_sim_config); - - // free external function - external_function_param_casadi_free(capsule->sim_forw_vde_casadi); - external_function_param_casadi_free(capsule->sim_vde_adj_casadi); - external_function_param_casadi_free(capsule->sim_expl_ode_fun_casadi); - - return 0; -} - - -int lat_acados_sim_update_params(sim_solver_capsule *capsule, double *p, int np) -{ - int status = 0; - int casadi_np = LAT_NP; - - if (casadi_np != np) { - printf("lat_acados_sim_update_params: trying to set %i parameters for external functions." - " External function has %i parameters. Exiting.\n", np, casadi_np); - exit(1); - } - capsule->sim_forw_vde_casadi[0].set_param(capsule->sim_forw_vde_casadi, p); - capsule->sim_vde_adj_casadi[0].set_param(capsule->sim_vde_adj_casadi, p); - capsule->sim_expl_ode_fun_casadi[0].set_param(capsule->sim_expl_ode_fun_casadi, p); - - return status; -} - -/* getters pointers to C objects*/ -sim_config * lat_acados_get_sim_config(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_config; -}; - -sim_in * lat_acados_get_sim_in(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_in; -}; - -sim_out * lat_acados_get_sim_out(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_out; -}; - -void * lat_acados_get_sim_dims(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_dims; -}; - -sim_opts * lat_acados_get_sim_opts(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_opts; -}; - -sim_solver * lat_acados_get_sim_solver(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_solver; -}; - diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_solver.pxd b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_solver.pxd deleted file mode 100644 index 208a515..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_solver.pxd +++ /dev/null @@ -1,62 +0,0 @@ -# -# Copyright (c) The acados authors. -# -# This file is part of acados. -# -# The 2-Clause BSD License -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE.; -# - -cimport acados_solver_common - -cdef extern from "acados_solver_lat.h": - ctypedef struct nlp_solver_capsule "lat_solver_capsule": - pass - - nlp_solver_capsule * acados_create_capsule "lat_acados_create_capsule"() - int acados_free_capsule "lat_acados_free_capsule"(nlp_solver_capsule *capsule) - - int acados_create "lat_acados_create"(nlp_solver_capsule * capsule) - - int acados_create_with_discretization "lat_acados_create_with_discretization"(nlp_solver_capsule * capsule, int n_time_steps, double* new_time_steps) - int acados_update_time_steps "lat_acados_update_time_steps"(nlp_solver_capsule * capsule, int N, double* new_time_steps) - int acados_update_qp_solver_cond_N "lat_acados_update_qp_solver_cond_N"(nlp_solver_capsule * capsule, int qp_solver_cond_N) - - int acados_update_params "lat_acados_update_params"(nlp_solver_capsule * capsule, int stage, double *value, int np_) - int acados_update_params_sparse "lat_acados_update_params_sparse"(nlp_solver_capsule * capsule, int stage, int *idx, double *p, int n_update) - int acados_solve "lat_acados_solve"(nlp_solver_capsule * capsule) - int acados_reset "lat_acados_reset"(nlp_solver_capsule * capsule, int reset_qp_solver_mem) - int acados_free "lat_acados_free"(nlp_solver_capsule * capsule) - void acados_print_stats "lat_acados_print_stats"(nlp_solver_capsule * capsule) - - int acados_custom_update "lat_acados_custom_update"(nlp_solver_capsule* capsule, double * data, int data_len) - - acados_solver_common.ocp_nlp_in *acados_get_nlp_in "lat_acados_get_nlp_in"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_out *acados_get_nlp_out "lat_acados_get_nlp_out"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_out *acados_get_sens_out "lat_acados_get_sens_out"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_solver *acados_get_nlp_solver "lat_acados_get_nlp_solver"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_config *acados_get_nlp_config "lat_acados_get_nlp_config"(nlp_solver_capsule * capsule) - void *acados_get_nlp_opts "lat_acados_get_nlp_opts"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_dims *acados_get_nlp_dims "lat_acados_get_nlp_dims"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_plan *acados_get_nlp_plan "lat_acados_get_nlp_plan"(nlp_solver_capsule * capsule) diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_solver_lat.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_solver_lat.c deleted file mode 100644 index 3ecc293..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_solver_lat.c +++ /dev/null @@ -1,1034 +0,0 @@ -/* - * Copyright (c) The acados authors. - * - * This file is part of acados. - * - * The 2-Clause BSD License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE.; - */ - -// standard -#include -#include -#include -// acados -// #include "acados/utils/print.h" -#include "acados_c/ocp_nlp_interface.h" -#include "acados_c/external_function_interface.h" - -// example specific -#include "lat_model/lat_model.h" -#include "lat_constraints/lat_constraints.h" -#include "lat_cost/lat_cost.h" - - - - -#include "acados_solver_lat.h" - -#define NX LAT_NX -#define NZ LAT_NZ -#define NU LAT_NU -#define NP LAT_NP -#define NBX LAT_NBX -#define NBX0 LAT_NBX0 -#define NBU LAT_NBU -#define NSBX LAT_NSBX -#define NSBU LAT_NSBU -#define NSH LAT_NSH -#define NSG LAT_NSG -#define NSPHI LAT_NSPHI -#define NSHN LAT_NSHN -#define NSGN LAT_NSGN -#define NSPHIN LAT_NSPHIN -#define NSBXN LAT_NSBXN -#define NS LAT_NS -#define NSN LAT_NSN -#define NG LAT_NG -#define NBXN LAT_NBXN -#define NGN LAT_NGN -#define NY0 LAT_NY0 -#define NY LAT_NY -#define NYN LAT_NYN -// #define N LAT_N -#define NH LAT_NH -#define NPHI LAT_NPHI -#define NHN LAT_NHN -#define NPHIN LAT_NPHIN -#define NR LAT_NR - - -// ** solver data ** - -lat_solver_capsule * lat_acados_create_capsule(void) -{ - void* capsule_mem = malloc(sizeof(lat_solver_capsule)); - lat_solver_capsule *capsule = (lat_solver_capsule *) capsule_mem; - - return capsule; -} - - -int lat_acados_free_capsule(lat_solver_capsule *capsule) -{ - free(capsule); - return 0; -} - - -int lat_acados_create(lat_solver_capsule* capsule) -{ - int N_shooting_intervals = LAT_N; - double* new_time_steps = NULL; // NULL -> don't alter the code generated time-steps - return lat_acados_create_with_discretization(capsule, N_shooting_intervals, new_time_steps); -} - - -int lat_acados_update_time_steps(lat_solver_capsule* capsule, int N, double* new_time_steps) -{ - if (N != capsule->nlp_solver_plan->N) { - fprintf(stderr, "lat_acados_update_time_steps: given number of time steps (= %d) " \ - "differs from the currently allocated number of " \ - "time steps (= %d)!\n" \ - "Please recreate with new discretization and provide a new vector of time_stamps!\n", - N, capsule->nlp_solver_plan->N); - return 1; - } - - ocp_nlp_config * nlp_config = capsule->nlp_config; - ocp_nlp_dims * nlp_dims = capsule->nlp_dims; - ocp_nlp_in * nlp_in = capsule->nlp_in; - - for (int i = 0; i < N; i++) - { - ocp_nlp_in_set(nlp_config, nlp_dims, nlp_in, i, "Ts", &new_time_steps[i]); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "scaling", &new_time_steps[i]); - } - return 0; -} - -/** - * Internal function for lat_acados_create: step 1 - */ -void lat_acados_create_1_set_plan(ocp_nlp_plan_t* nlp_solver_plan, const int N) -{ - assert(N == nlp_solver_plan->N); - - /************************************************ - * plan - ************************************************/ - nlp_solver_plan->nlp_solver = SQP_RTI; - - nlp_solver_plan->ocp_qp_solver_plan.qp_solver = PARTIAL_CONDENSING_HPIPM; - - nlp_solver_plan->nlp_cost[0] = NONLINEAR_LS; - for (int i = 1; i < N; i++) - nlp_solver_plan->nlp_cost[i] = NONLINEAR_LS; - - nlp_solver_plan->nlp_cost[N] = NONLINEAR_LS; - - for (int i = 0; i < N; i++) - { - nlp_solver_plan->nlp_dynamics[i] = CONTINUOUS_MODEL; - nlp_solver_plan->sim_solver_plan[i].sim_solver = ERK; - } - - for (int i = 0; i < N; i++) - {nlp_solver_plan->nlp_constraints[i] = BGH; - } - nlp_solver_plan->nlp_constraints[N] = BGH; -} - - -/** - * Internal function for lat_acados_create: step 2 - */ -ocp_nlp_dims* lat_acados_create_2_create_and_set_dimensions(lat_solver_capsule* capsule) -{ - ocp_nlp_plan_t* nlp_solver_plan = capsule->nlp_solver_plan; - const int N = nlp_solver_plan->N; - ocp_nlp_config* nlp_config = capsule->nlp_config; - - /************************************************ - * dimensions - ************************************************/ - #define NINTNP1MEMS 17 - int* intNp1mem = (int*)malloc( (N+1)*sizeof(int)*NINTNP1MEMS ); - - int* nx = intNp1mem + (N+1)*0; - int* nu = intNp1mem + (N+1)*1; - int* nbx = intNp1mem + (N+1)*2; - int* nbu = intNp1mem + (N+1)*3; - int* nsbx = intNp1mem + (N+1)*4; - int* nsbu = intNp1mem + (N+1)*5; - int* nsg = intNp1mem + (N+1)*6; - int* nsh = intNp1mem + (N+1)*7; - int* nsphi = intNp1mem + (N+1)*8; - int* ns = intNp1mem + (N+1)*9; - int* ng = intNp1mem + (N+1)*10; - int* nh = intNp1mem + (N+1)*11; - int* nphi = intNp1mem + (N+1)*12; - int* nz = intNp1mem + (N+1)*13; - int* ny = intNp1mem + (N+1)*14; - int* nr = intNp1mem + (N+1)*15; - int* nbxe = intNp1mem + (N+1)*16; - - for (int i = 0; i < N+1; i++) - { - // common - nx[i] = NX; - nu[i] = NU; - nz[i] = NZ; - ns[i] = NS; - // cost - ny[i] = NY; - // constraints - nbx[i] = NBX; - nbu[i] = NBU; - nsbx[i] = NSBX; - nsbu[i] = NSBU; - nsg[i] = NSG; - nsh[i] = NSH; - nsphi[i] = NSPHI; - ng[i] = NG; - nh[i] = NH; - nphi[i] = NPHI; - nr[i] = NR; - nbxe[i] = 0; - } - - // for initial state - nbx[0] = NBX0; - nsbx[0] = 0; - ns[0] = NS - NSBX; - nbxe[0] = 4; - ny[0] = NY0; - - // terminal - common - nu[N] = 0; - nz[N] = 0; - ns[N] = NSN; - // cost - ny[N] = NYN; - // constraint - nbx[N] = NBXN; - nbu[N] = 0; - ng[N] = NGN; - nh[N] = NHN; - nphi[N] = NPHIN; - nr[N] = 0; - - nsbx[N] = NSBXN; - nsbu[N] = 0; - nsg[N] = NSGN; - nsh[N] = NSHN; - nsphi[N] = NSPHIN; - - /* create and set ocp_nlp_dims */ - ocp_nlp_dims * nlp_dims = ocp_nlp_dims_create(nlp_config); - - ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nx", nx); - ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nu", nu); - ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nz", nz); - ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "ns", ns); - - for (int i = 0; i <= N; i++) - { - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbx", &nbx[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbu", &nbu[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsbx", &nsbx[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsbu", &nsbu[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "ng", &ng[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsg", &nsg[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbxe", &nbxe[i]); - } - ocp_nlp_dims_set_cost(nlp_config, nlp_dims, 0, "ny", &ny[0]); - for (int i = 1; i < N; i++) - ocp_nlp_dims_set_cost(nlp_config, nlp_dims, i, "ny", &ny[i]); - - for (int i = 0; i < N; i++) - { - } - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, N, "nh", &nh[N]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, N, "nsh", &nsh[N]); - ocp_nlp_dims_set_cost(nlp_config, nlp_dims, N, "ny", &ny[N]); - free(intNp1mem); -return nlp_dims; -} - - -/** - * Internal function for lat_acados_create: step 3 - */ -void lat_acados_create_3_create_and_set_functions(lat_solver_capsule* capsule) -{ - const int N = capsule->nlp_solver_plan->N; - - /************************************************ - * external functions - ************************************************/ - -#define MAP_CASADI_FNC(__CAPSULE_FNC__, __MODEL_BASE_FNC__) do{ \ - capsule->__CAPSULE_FNC__.casadi_fun = & __MODEL_BASE_FNC__ ;\ - capsule->__CAPSULE_FNC__.casadi_n_in = & __MODEL_BASE_FNC__ ## _n_in; \ - capsule->__CAPSULE_FNC__.casadi_n_out = & __MODEL_BASE_FNC__ ## _n_out; \ - capsule->__CAPSULE_FNC__.casadi_sparsity_in = & __MODEL_BASE_FNC__ ## _sparsity_in; \ - capsule->__CAPSULE_FNC__.casadi_sparsity_out = & __MODEL_BASE_FNC__ ## _sparsity_out; \ - capsule->__CAPSULE_FNC__.casadi_work = & __MODEL_BASE_FNC__ ## _work; \ - external_function_param_casadi_create(&capsule->__CAPSULE_FNC__ , 2); \ - }while(false) - - - - - // explicit ode - capsule->forw_vde_casadi = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); - for (int i = 0; i < N; i++) { - MAP_CASADI_FNC(forw_vde_casadi[i], lat_expl_vde_forw); - } - - capsule->expl_ode_fun = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); - for (int i = 0; i < N; i++) { - MAP_CASADI_FNC(expl_ode_fun[i], lat_expl_ode_fun); - } - - - // nonlinear least squares function - MAP_CASADI_FNC(cost_y_0_fun, lat_cost_y_0_fun); - MAP_CASADI_FNC(cost_y_0_fun_jac_ut_xt, lat_cost_y_0_fun_jac_ut_xt); - MAP_CASADI_FNC(cost_y_0_hess, lat_cost_y_0_hess); - // nonlinear least squares cost - capsule->cost_y_fun = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); - for (int i = 0; i < N-1; i++) - { - MAP_CASADI_FNC(cost_y_fun[i], lat_cost_y_fun); - } - - capsule->cost_y_fun_jac_ut_xt = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); - for (int i = 0; i < N-1; i++) - { - MAP_CASADI_FNC(cost_y_fun_jac_ut_xt[i], lat_cost_y_fun_jac_ut_xt); - } - - capsule->cost_y_hess = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); - for (int i = 0; i < N-1; i++) - { - MAP_CASADI_FNC(cost_y_hess[i], lat_cost_y_hess); - } - // nonlinear least square function - MAP_CASADI_FNC(cost_y_e_fun, lat_cost_y_e_fun); - MAP_CASADI_FNC(cost_y_e_fun_jac_ut_xt, lat_cost_y_e_fun_jac_ut_xt); - MAP_CASADI_FNC(cost_y_e_hess, lat_cost_y_e_hess); - -#undef MAP_CASADI_FNC -} - - -/** - * Internal function for lat_acados_create: step 4 - */ -void lat_acados_create_4_set_default_parameters(lat_solver_capsule* capsule) { - const int N = capsule->nlp_solver_plan->N; - // initialize parameters to nominal value - double* p = calloc(NP, sizeof(double)); - - for (int i = 0; i <= N; i++) { - lat_acados_update_params(capsule, i, p, NP); - } - free(p); -} - - -/** - * Internal function for lat_acados_create: step 5 - */ -void lat_acados_create_5_set_nlp_in(lat_solver_capsule* capsule, const int N, double* new_time_steps) -{ - assert(N == capsule->nlp_solver_plan->N); - ocp_nlp_config* nlp_config = capsule->nlp_config; - ocp_nlp_dims* nlp_dims = capsule->nlp_dims; - - /************************************************ - * nlp_in - ************************************************/ -// ocp_nlp_in * nlp_in = ocp_nlp_in_create(nlp_config, nlp_dims); -// capsule->nlp_in = nlp_in; - ocp_nlp_in * nlp_in = capsule->nlp_in; - - // set up time_steps - - - if (new_time_steps) { - lat_acados_update_time_steps(capsule, N, new_time_steps); - } else {// time_steps are different - double* time_steps = malloc(N*sizeof(double)); - time_steps[0] = 0.009765625; - time_steps[1] = 0.029296875; - time_steps[2] = 0.048828125; - time_steps[3] = 0.068359375; - time_steps[4] = 0.087890625; - time_steps[5] = 0.107421875; - time_steps[6] = 0.126953125; - time_steps[7] = 0.146484375; - time_steps[8] = 0.166015625; - time_steps[9] = 0.185546875; - time_steps[10] = 0.205078125; - time_steps[11] = 0.224609375; - time_steps[12] = 0.244140625; - time_steps[13] = 0.263671875; - time_steps[14] = 0.283203125; - time_steps[15] = 0.302734375; - time_steps[16] = 0.322265625; - time_steps[17] = 0.341796875; - time_steps[18] = 0.361328125; - time_steps[19] = 0.380859375; - time_steps[20] = 0.400390625; - time_steps[21] = 0.419921875; - time_steps[22] = 0.439453125; - time_steps[23] = 0.458984375; - time_steps[24] = 0.478515625; - time_steps[25] = 0.498046875; - time_steps[26] = 0.517578125; - time_steps[27] = 0.537109375; - time_steps[28] = 0.556640625; - time_steps[29] = 0.576171875; - time_steps[30] = 0.595703125; - time_steps[31] = 0.615234375; - lat_acados_update_time_steps(capsule, N, time_steps); - free(time_steps); - } - - /**** Dynamics ****/ - for (int i = 0; i < N; i++) - { - ocp_nlp_dynamics_model_set(nlp_config, nlp_dims, nlp_in, i, "expl_vde_forw", &capsule->forw_vde_casadi[i]); - ocp_nlp_dynamics_model_set(nlp_config, nlp_dims, nlp_in, i, "expl_ode_fun", &capsule->expl_ode_fun[i]); - - } - - /**** Cost ****/ - double* yref_0 = calloc(NY0, sizeof(double)); - // change only the non-zero elements: - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "yref", yref_0); - free(yref_0); - double* yref = calloc(NY, sizeof(double)); - // change only the non-zero elements: - - for (int i = 1; i < N; i++) - { - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "yref", yref); - } - free(yref); - double* yref_e = calloc(NYN, sizeof(double)); - // change only the non-zero elements: - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "yref", yref_e); - free(yref_e); - double* W_0 = calloc(NY0*NY0, sizeof(double)); - // change only the non-zero elements: - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "W", W_0); - free(W_0); - double* W = calloc(NY*NY, sizeof(double)); - // change only the non-zero elements: - - for (int i = 1; i < N; i++) - { - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "W", W); - } - free(W); - double* W_e = calloc(NYN*NYN, sizeof(double)); - // change only the non-zero elements: - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "W", W_e); - free(W_e); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "nls_y_fun", &capsule->cost_y_0_fun); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "nls_y_fun_jac", &capsule->cost_y_0_fun_jac_ut_xt); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "nls_y_hess", &capsule->cost_y_0_hess); - for (int i = 1; i < N; i++) - { - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "nls_y_fun", &capsule->cost_y_fun[i-1]); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "nls_y_fun_jac", &capsule->cost_y_fun_jac_ut_xt[i-1]); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "nls_y_hess", &capsule->cost_y_hess[i-1]); - } - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "nls_y_fun", &capsule->cost_y_e_fun); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "nls_y_fun_jac", &capsule->cost_y_e_fun_jac_ut_xt); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "nls_y_hess", &capsule->cost_y_e_hess); - - - - /**** Constraints ****/ - - // bounds for initial stage - // x0 - int* idxbx0 = malloc(NBX0 * sizeof(int)); - idxbx0[0] = 0; - idxbx0[1] = 1; - idxbx0[2] = 2; - idxbx0[3] = 3; - - double* lubx0 = calloc(2*NBX0, sizeof(double)); - double* lbx0 = lubx0; - double* ubx0 = lubx0 + NBX0; - // change only the non-zero elements: - - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "idxbx", idxbx0); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "lbx", lbx0); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "ubx", ubx0); - free(idxbx0); - free(lubx0); - // idxbxe_0 - int* idxbxe_0 = malloc(4 * sizeof(int)); - - idxbxe_0[0] = 0; - idxbxe_0[1] = 1; - idxbxe_0[2] = 2; - idxbxe_0[3] = 3; - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "idxbxe", idxbxe_0); - free(idxbxe_0); - - /* constraints that are the same for initial and intermediate */ - - - - - - - - - // x - int* idxbx = malloc(NBX * sizeof(int)); - - idxbx[0] = 2; - idxbx[1] = 3; - double* lubx = calloc(2*NBX, sizeof(double)); - double* lbx = lubx; - double* ubx = lubx + NBX; - - lbx[0] = -1.5707963267948966; - ubx[0] = 1.5707963267948966; - lbx[1] = -0.8726646259971648; - ubx[1] = 0.8726646259971648; - - for (int i = 1; i < N; i++) - { - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "idxbx", idxbx); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "lbx", lbx); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "ubx", ubx); - } - free(idxbx); - free(lubx); - - - - - - - - /* terminal constraints */ - - - - - - - - - - - - - - - -} - - -/** - * Internal function for lat_acados_create: step 6 - */ -void lat_acados_create_6_set_opts(lat_solver_capsule* capsule) -{ - const int N = capsule->nlp_solver_plan->N; - ocp_nlp_config* nlp_config = capsule->nlp_config; - void *nlp_opts = capsule->nlp_opts; - - /************************************************ - * opts - ************************************************/ - - - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "globalization", "fixed_step");int full_step_dual = 0; - ocp_nlp_solver_opts_set(nlp_config, capsule->nlp_opts, "full_step_dual", &full_step_dual); - - // set collocation type (relevant for implicit integrators) - sim_collocation_type collocation_type = GAUSS_LEGENDRE; - for (int i = 0; i < N; i++) - ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_collocation_type", &collocation_type); - - // set up sim_method_num_steps - // all sim_method_num_steps are identical - int sim_method_num_steps = 1; - for (int i = 0; i < N; i++) - ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_num_steps", &sim_method_num_steps); - - // set up sim_method_num_stages - // all sim_method_num_stages are identical - int sim_method_num_stages = 4; - for (int i = 0; i < N; i++) - ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_num_stages", &sim_method_num_stages); - - int newton_iter_val = 3; - for (int i = 0; i < N; i++) - ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_newton_iter", &newton_iter_val); - - - // set up sim_method_jac_reuse - bool tmp_bool = (bool) 0; - for (int i = 0; i < N; i++) - ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_jac_reuse", &tmp_bool); - - double nlp_solver_step_length = 1.0; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "step_length", &nlp_solver_step_length); - - double levenberg_marquardt = 0.0; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "levenberg_marquardt", &levenberg_marquardt); - - /* options QP solver */ - int qp_solver_cond_N; - - const int qp_solver_cond_N_ori = 1; - qp_solver_cond_N = N < qp_solver_cond_N_ori ? N : qp_solver_cond_N_ori; // use the minimum value here - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_cond_N", &qp_solver_cond_N); - - int nlp_solver_ext_qp_res = 0; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "ext_qp_res", &nlp_solver_ext_qp_res); - // set HPIPM mode: should be done before setting other QP solver options - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_hpipm_mode", "BALANCE"); - - - - int qp_solver_iter_max = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_iter_max", &qp_solver_iter_max); - -int print_level = 0; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "print_level", &print_level); - int qp_solver_cond_ric_alg = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_cond_ric_alg", &qp_solver_cond_ric_alg); - - int qp_solver_ric_alg = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_ric_alg", &qp_solver_ric_alg); - - - int ext_cost_num_hess = 0; -} - - -/** - * Internal function for lat_acados_create: step 7 - */ -void lat_acados_create_7_set_nlp_out(lat_solver_capsule* capsule) -{ - const int N = capsule->nlp_solver_plan->N; - ocp_nlp_config* nlp_config = capsule->nlp_config; - ocp_nlp_dims* nlp_dims = capsule->nlp_dims; - ocp_nlp_out* nlp_out = capsule->nlp_out; - - // initialize primal solution - double* xu0 = calloc(NX+NU, sizeof(double)); - double* x0 = xu0; - - // initialize with x0 - - - - double* u0 = xu0 + NX; - - for (int i = 0; i < N; i++) - { - // x0 - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "x", x0); - // u0 - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "u", u0); - } - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, N, "x", x0); - free(xu0); -} - - -/** - * Internal function for lat_acados_create: step 8 - */ -//void lat_acados_create_8_create_solver(lat_solver_capsule* capsule) -//{ -// capsule->nlp_solver = ocp_nlp_solver_create(capsule->nlp_config, capsule->nlp_dims, capsule->nlp_opts); -//} - -/** - * Internal function for lat_acados_create: step 9 - */ -int lat_acados_create_9_precompute(lat_solver_capsule* capsule) { - int status = ocp_nlp_precompute(capsule->nlp_solver, capsule->nlp_in, capsule->nlp_out); - - if (status != ACADOS_SUCCESS) { - printf("\nocp_nlp_precompute failed!\n\n"); - exit(1); - } - - return status; -} - - -int lat_acados_create_with_discretization(lat_solver_capsule* capsule, int N, double* new_time_steps) -{ - // If N does not match the number of shooting intervals used for code generation, new_time_steps must be given. - if (N != LAT_N && !new_time_steps) { - fprintf(stderr, "lat_acados_create_with_discretization: new_time_steps is NULL " \ - "but the number of shooting intervals (= %d) differs from the number of " \ - "shooting intervals (= %d) during code generation! Please provide a new vector of time_stamps!\n", \ - N, LAT_N); - return 1; - } - - // number of expected runtime parameters - capsule->nlp_np = NP; - - // 1) create and set nlp_solver_plan; create nlp_config - capsule->nlp_solver_plan = ocp_nlp_plan_create(N); - lat_acados_create_1_set_plan(capsule->nlp_solver_plan, N); - capsule->nlp_config = ocp_nlp_config_create(*capsule->nlp_solver_plan); - - // 3) create and set dimensions - capsule->nlp_dims = lat_acados_create_2_create_and_set_dimensions(capsule); - lat_acados_create_3_create_and_set_functions(capsule); - - // 4) set default parameters in functions - lat_acados_create_4_set_default_parameters(capsule); - - // 5) create and set nlp_in - capsule->nlp_in = ocp_nlp_in_create(capsule->nlp_config, capsule->nlp_dims); - lat_acados_create_5_set_nlp_in(capsule, N, new_time_steps); - - // 6) create and set nlp_opts - capsule->nlp_opts = ocp_nlp_solver_opts_create(capsule->nlp_config, capsule->nlp_dims); - lat_acados_create_6_set_opts(capsule); - - // 7) create and set nlp_out - // 7.1) nlp_out - capsule->nlp_out = ocp_nlp_out_create(capsule->nlp_config, capsule->nlp_dims); - // 7.2) sens_out - capsule->sens_out = ocp_nlp_out_create(capsule->nlp_config, capsule->nlp_dims); - lat_acados_create_7_set_nlp_out(capsule); - - // 8) create solver - capsule->nlp_solver = ocp_nlp_solver_create(capsule->nlp_config, capsule->nlp_dims, capsule->nlp_opts); - //lat_acados_create_8_create_solver(capsule); - - // 9) do precomputations - int status = lat_acados_create_9_precompute(capsule); - - return status; -} - -/** - * This function is for updating an already initialized solver with a different number of qp_cond_N. It is useful for code reuse after code export. - */ -int lat_acados_update_qp_solver_cond_N(lat_solver_capsule* capsule, int qp_solver_cond_N) -{ - // 1) destroy solver - ocp_nlp_solver_destroy(capsule->nlp_solver); - - // 2) set new value for "qp_cond_N" - const int N = capsule->nlp_solver_plan->N; - if(qp_solver_cond_N > N) - printf("Warning: qp_solver_cond_N = %d > N = %d\n", qp_solver_cond_N, N); - ocp_nlp_solver_opts_set(capsule->nlp_config, capsule->nlp_opts, "qp_cond_N", &qp_solver_cond_N); - - // 3) continue with the remaining steps from lat_acados_create_with_discretization(...): - // -> 8) create solver - capsule->nlp_solver = ocp_nlp_solver_create(capsule->nlp_config, capsule->nlp_dims, capsule->nlp_opts); - - // -> 9) do precomputations - int status = lat_acados_create_9_precompute(capsule); - return status; -} - - -int lat_acados_reset(lat_solver_capsule* capsule, int reset_qp_solver_mem) -{ - - // set initialization to all zeros - - const int N = capsule->nlp_solver_plan->N; - ocp_nlp_config* nlp_config = capsule->nlp_config; - ocp_nlp_dims* nlp_dims = capsule->nlp_dims; - ocp_nlp_out* nlp_out = capsule->nlp_out; - ocp_nlp_in* nlp_in = capsule->nlp_in; - ocp_nlp_solver* nlp_solver = capsule->nlp_solver; - - double* buffer = calloc(NX+NU+NZ+2*NS+2*NSN+NBX+NBU+NG+NH+NPHI+NBX0+NBXN+NHN+NPHIN+NGN, sizeof(double)); - - for(int i=0; i reset memory - int qp_status; - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "qp_status", &qp_status); - if (reset_qp_solver_mem || (qp_status == 3)) - { - // printf("\nin reset qp_status %d -> resetting QP memory\n", qp_status); - ocp_nlp_solver_reset_qp_memory(nlp_solver, nlp_in, nlp_out); - } - - free(buffer); - return 0; -} - - - - -int lat_acados_update_params(lat_solver_capsule* capsule, int stage, double *p, int np) -{ - int solver_status = 0; - - int casadi_np = 2; - if (casadi_np != np) { - printf("acados_update_params: trying to set %i parameters for external functions." - " External function has %i parameters. Exiting.\n", np, casadi_np); - exit(1); - } - - const int N = capsule->nlp_solver_plan->N; - if (stage < N && stage >= 0) - { - capsule->forw_vde_casadi[stage].set_param(capsule->forw_vde_casadi+stage, p); - capsule->expl_ode_fun[stage].set_param(capsule->expl_ode_fun+stage, p); - - - // constraints - - - // cost - if (stage == 0) - { - capsule->cost_y_0_fun.set_param(&capsule->cost_y_0_fun, p); - capsule->cost_y_0_fun_jac_ut_xt.set_param(&capsule->cost_y_0_fun_jac_ut_xt, p); - capsule->cost_y_0_hess.set_param(&capsule->cost_y_0_hess, p); - } - else // 0 < stage < N - { - capsule->cost_y_fun[stage-1].set_param(capsule->cost_y_fun+stage-1, p); - capsule->cost_y_fun_jac_ut_xt[stage-1].set_param(capsule->cost_y_fun_jac_ut_xt+stage-1, p); - capsule->cost_y_hess[stage-1].set_param(capsule->cost_y_hess+stage-1, p); - } - } - - else // stage == N - { - // terminal shooting node has no dynamics - // cost - capsule->cost_y_e_fun.set_param(&capsule->cost_y_e_fun, p); - capsule->cost_y_e_fun_jac_ut_xt.set_param(&capsule->cost_y_e_fun_jac_ut_xt, p); - capsule->cost_y_e_hess.set_param(&capsule->cost_y_e_hess, p); - // constraints - - } - - return solver_status; -} - - -int lat_acados_update_params_sparse(lat_solver_capsule * capsule, int stage, int *idx, double *p, int n_update) -{ - int solver_status = 0; - - int casadi_np = 2; - if (casadi_np < n_update) { - printf("lat_acados_update_params_sparse: trying to set %d parameters for external functions." - " External function has %d parameters. Exiting.\n", n_update, casadi_np); - exit(1); - } - // for (int i = 0; i < n_update; i++) - // { - // if (idx[i] > casadi_np) { - // printf("lat_acados_update_params_sparse: attempt to set parameters with index %d, while" - // " external functions only has %d parameters. Exiting.\n", idx[i], casadi_np); - // exit(1); - // } - // printf("param %d value %e\n", idx[i], p[i]); - // } - const int N = capsule->nlp_solver_plan->N; - if (stage < N && stage >= 0) - { - capsule->forw_vde_casadi[stage].set_param_sparse(capsule->forw_vde_casadi+stage, n_update, idx, p); - capsule->expl_ode_fun[stage].set_param_sparse(capsule->expl_ode_fun+stage, n_update, idx, p); - - - // constraints - - - // cost - if (stage == 0) - { - capsule->cost_y_0_fun.set_param_sparse(&capsule->cost_y_0_fun, n_update, idx, p); - capsule->cost_y_0_fun_jac_ut_xt.set_param_sparse(&capsule->cost_y_0_fun_jac_ut_xt, n_update, idx, p); - capsule->cost_y_0_hess.set_param_sparse(&capsule->cost_y_0_hess, n_update, idx, p); - } - else // 0 < stage < N - { - capsule->cost_y_fun[stage-1].set_param_sparse(capsule->cost_y_fun+stage-1, n_update, idx, p); - capsule->cost_y_fun_jac_ut_xt[stage-1].set_param_sparse(capsule->cost_y_fun_jac_ut_xt+stage-1, n_update, idx, p); - capsule->cost_y_hess[stage-1].set_param_sparse(capsule->cost_y_hess+stage-1, n_update, idx, p); - } - } - - else // stage == N - { - // terminal shooting node has no dynamics - // cost - capsule->cost_y_e_fun.set_param_sparse(&capsule->cost_y_e_fun, n_update, idx, p); - capsule->cost_y_e_fun_jac_ut_xt.set_param_sparse(&capsule->cost_y_e_fun_jac_ut_xt, n_update, idx, p); - capsule->cost_y_e_hess.set_param_sparse(&capsule->cost_y_e_hess, n_update, idx, p); - // constraints - - } - - - return solver_status; -} - -int lat_acados_solve(lat_solver_capsule* capsule) -{ - // solve NLP - int solver_status = ocp_nlp_solve(capsule->nlp_solver, capsule->nlp_in, capsule->nlp_out); - - return solver_status; -} - - -int lat_acados_free(lat_solver_capsule* capsule) -{ - // before destroying, keep some info - const int N = capsule->nlp_solver_plan->N; - // free memory - ocp_nlp_solver_opts_destroy(capsule->nlp_opts); - ocp_nlp_in_destroy(capsule->nlp_in); - ocp_nlp_out_destroy(capsule->nlp_out); - ocp_nlp_out_destroy(capsule->sens_out); - ocp_nlp_solver_destroy(capsule->nlp_solver); - ocp_nlp_dims_destroy(capsule->nlp_dims); - ocp_nlp_config_destroy(capsule->nlp_config); - ocp_nlp_plan_destroy(capsule->nlp_solver_plan); - - /* free external function */ - // dynamics - for (int i = 0; i < N; i++) - { - external_function_param_casadi_free(&capsule->forw_vde_casadi[i]); - external_function_param_casadi_free(&capsule->expl_ode_fun[i]); - } - free(capsule->forw_vde_casadi); - free(capsule->expl_ode_fun); - - // cost - external_function_param_casadi_free(&capsule->cost_y_0_fun); - external_function_param_casadi_free(&capsule->cost_y_0_fun_jac_ut_xt); - external_function_param_casadi_free(&capsule->cost_y_0_hess); - for (int i = 0; i < N - 1; i++) - { - external_function_param_casadi_free(&capsule->cost_y_fun[i]); - external_function_param_casadi_free(&capsule->cost_y_fun_jac_ut_xt[i]); - external_function_param_casadi_free(&capsule->cost_y_hess[i]); - } - free(capsule->cost_y_fun); - free(capsule->cost_y_fun_jac_ut_xt); - free(capsule->cost_y_hess); - external_function_param_casadi_free(&capsule->cost_y_e_fun); - external_function_param_casadi_free(&capsule->cost_y_e_fun_jac_ut_xt); - external_function_param_casadi_free(&capsule->cost_y_e_hess); - - // constraints - - return 0; -} - - -void lat_acados_print_stats(lat_solver_capsule* capsule) -{ - int sqp_iter, stat_m, stat_n, tmp_int; - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "sqp_iter", &sqp_iter); - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "stat_n", &stat_n); - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "stat_m", &stat_m); - - - double stat[1200]; - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "statistics", stat); - - int nrow = sqp_iter+1 < stat_m ? sqp_iter+1 : stat_m; - - printf("iter\tres_stat\tres_eq\t\tres_ineq\tres_comp\tqp_stat\tqp_iter\talpha"); - if (stat_n > 8) - printf("\t\tqp_res_stat\tqp_res_eq\tqp_res_ineq\tqp_res_comp"); - printf("\n"); - printf("iter\tqp_stat\tqp_iter\n"); - for (int i = 0; i < nrow; i++) - { - for (int j = 0; j < stat_n + 1; j++) - { - tmp_int = (int) stat[i + j * nrow]; - printf("%d\t", tmp_int); - } - printf("\n"); - } -} - -int lat_acados_custom_update(lat_solver_capsule* capsule, double* data, int data_len) -{ - (void)capsule; - (void)data; - (void)data_len; - printf("\ndummy function that can be called in between solver calls to update parameters or numerical data efficiently in C.\n"); - printf("nothing set yet..\n"); - return 1; - -} - - - -ocp_nlp_in *lat_acados_get_nlp_in(lat_solver_capsule* capsule) { return capsule->nlp_in; } -ocp_nlp_out *lat_acados_get_nlp_out(lat_solver_capsule* capsule) { return capsule->nlp_out; } -ocp_nlp_out *lat_acados_get_sens_out(lat_solver_capsule* capsule) { return capsule->sens_out; } -ocp_nlp_solver *lat_acados_get_nlp_solver(lat_solver_capsule* capsule) { return capsule->nlp_solver; } -ocp_nlp_config *lat_acados_get_nlp_config(lat_solver_capsule* capsule) { return capsule->nlp_config; } -void *lat_acados_get_nlp_opts(lat_solver_capsule* capsule) { return capsule->nlp_opts; } -ocp_nlp_dims *lat_acados_get_nlp_dims(lat_solver_capsule* capsule) { return capsule->nlp_dims; } -ocp_nlp_plan_t *lat_acados_get_nlp_plan(lat_solver_capsule* capsule) { return capsule->nlp_solver_plan; } diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun.c deleted file mode 100644 index 14e04af..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun.c +++ /dev/null @@ -1,167 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_0_fun_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) -#define casadi_s4 CASADI_PREFIX(s4) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[3] = {0, 0, 0}; -static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s4[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; - -/* lat_cost_y_0_fun:(i0[4],i1,i2[],i3[2])->(o0[5]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a2; - a0=arg[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a0=arg[3]? arg[3][0] : 0; - a1=10.; - a1=(a0+a1); - a2=arg[0]? arg[0][2] : 0; - a2=(a1*a2); - if (res[0]!=0) res[0][1]=a2; - a2=arg[0]? arg[0][3] : 0; - a2=(a1*a2); - if (res[0]!=0) res[0][2]=a2; - a2=arg[1]? arg[1][0] : 0; - a1=(a1*a2); - if (res[0]!=0) res[0][3]=a1; - a1=1.0000000000000001e-01; - a0=(a0+a1); - a2=(a2/a0); - if (res[0]!=0) res[0][4]=a2; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_0_fun_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_0_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_0_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_0_fun_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_0_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_0_fun_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s2; - case 3: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_0_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 4; - if (sz_res) *sz_res = 1; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun_jac_ut_xt.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun_jac_ut_xt.c deleted file mode 100644 index 848abc6..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_fun_jac_ut_xt.c +++ /dev/null @@ -1,182 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_0_fun_jac_ut_xt_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) -#define casadi_s4 CASADI_PREFIX(s4) -#define casadi_s5 CASADI_PREFIX(s5) -#define casadi_s6 CASADI_PREFIX(s6) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[3] = {0, 0, 0}; -static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s4[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; -static const casadi_int casadi_s5[13] = {5, 5, 0, 1, 2, 3, 4, 5, 2, 3, 4, 0, 0}; -static const casadi_int casadi_s6[3] = {5, 0, 0}; - -/* lat_cost_y_0_fun_jac_ut_xt:(i0[4],i1,i2[],i3[2])->(o0[5],o1[5x5,5nz],o2[5x0]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a2, a3; - a0=arg[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a0=arg[3]? arg[3][0] : 0; - a1=10.; - a1=(a0+a1); - a2=arg[0]? arg[0][2] : 0; - a2=(a1*a2); - if (res[0]!=0) res[0][1]=a2; - a2=arg[0]? arg[0][3] : 0; - a2=(a1*a2); - if (res[0]!=0) res[0][2]=a2; - a2=arg[1]? arg[1][0] : 0; - a3=(a1*a2); - if (res[0]!=0) res[0][3]=a3; - a3=1.0000000000000001e-01; - a0=(a0+a3); - a2=(a2/a0); - if (res[0]!=0) res[0][4]=a2; - a2=1.; - if (res[1]!=0) res[1][0]=a2; - if (res[1]!=0) res[1][1]=a1; - if (res[1]!=0) res[1][2]=a1; - if (res[1]!=0) res[1][3]=a1; - a0=(1./a0); - if (res[1]!=0) res[1][4]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_jac_ut_xt(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_jac_ut_xt_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_jac_ut_xt_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_fun_jac_ut_xt_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_jac_ut_xt_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_fun_jac_ut_xt_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_fun_jac_ut_xt_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_fun_jac_ut_xt_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_0_fun_jac_ut_xt_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_0_fun_jac_ut_xt_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_0_fun_jac_ut_xt_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_0_fun_jac_ut_xt_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_0_fun_jac_ut_xt_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - case 1: return "o1"; - case 2: return "o2"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_0_fun_jac_ut_xt_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s2; - case 3: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_0_fun_jac_ut_xt_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - case 1: return casadi_s5; - case 2: return casadi_s6; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_fun_jac_ut_xt_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 4; - if (sz_res) *sz_res = 3; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_hess.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_hess.c deleted file mode 100644 index 8a52618..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_0_hess.c +++ /dev/null @@ -1,152 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_0_hess_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) -#define casadi_s4 CASADI_PREFIX(s4) -#define casadi_s5 CASADI_PREFIX(s5) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[3] = {0, 0, 0}; -static const casadi_int casadi_s3[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; -static const casadi_int casadi_s4[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s5[8] = {5, 5, 0, 0, 0, 0, 0, 0}; - -/* lat_cost_y_0_hess:(i0[4],i1,i2[],i3[5],i4[2])->(o0[5x5,0nz]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_hess(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_hess_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_hess_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_hess_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_hess_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_hess_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_hess_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_0_hess_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_0_hess_n_in(void) { return 5;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_0_hess_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_0_hess_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_0_hess_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - case 4: return "i4"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_0_hess_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_0_hess_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s2; - case 3: return casadi_s3; - case 4: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_0_hess_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s5; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_0_hess_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 5; - if (sz_res) *sz_res = 1; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_fun.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_fun.c deleted file mode 100644 index 9a7044c..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_fun.c +++ /dev/null @@ -1,158 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_e_fun_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[3] = {0, 0, 0}; -static const casadi_int casadi_s2[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s3[7] = {3, 1, 0, 3, 0, 1, 2}; - -/* lat_cost_y_e_fun:(i0[4],i1[],i2[],i3[2])->(o0[3]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1; - a0=arg[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a0=arg[3]? arg[3][0] : 0; - a1=10.; - a0=(a0+a1); - a1=arg[0]? arg[0][2] : 0; - a1=(a0*a1); - if (res[0]!=0) res[0][1]=a1; - a1=arg[0]? arg[0][3] : 0; - a0=(a0*a1); - if (res[0]!=0) res[0][2]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_e_fun_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_e_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_e_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_e_fun_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_e_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_e_fun_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s1; - case 3: return casadi_s2; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_e_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 4; - if (sz_res) *sz_res = 1; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_fun_jac_ut_xt.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_fun_jac_ut_xt.c deleted file mode 100644 index c1b19ac..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_fun_jac_ut_xt.c +++ /dev/null @@ -1,170 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_e_fun_jac_ut_xt_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) -#define casadi_s4 CASADI_PREFIX(s4) -#define casadi_s5 CASADI_PREFIX(s5) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[3] = {0, 0, 0}; -static const casadi_int casadi_s2[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s3[7] = {3, 1, 0, 3, 0, 1, 2}; -static const casadi_int casadi_s4[9] = {4, 3, 0, 1, 2, 3, 1, 2, 3}; -static const casadi_int casadi_s5[3] = {3, 0, 0}; - -/* lat_cost_y_e_fun_jac_ut_xt:(i0[4],i1[],i2[],i3[2])->(o0[3],o1[4x3,3nz],o2[3x0]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1; - a0=arg[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a0=arg[3]? arg[3][0] : 0; - a1=10.; - a0=(a0+a1); - a1=arg[0]? arg[0][2] : 0; - a1=(a0*a1); - if (res[0]!=0) res[0][1]=a1; - a1=arg[0]? arg[0][3] : 0; - a1=(a0*a1); - if (res[0]!=0) res[0][2]=a1; - a1=1.; - if (res[1]!=0) res[1][0]=a1; - if (res[1]!=0) res[1][1]=a0; - if (res[1]!=0) res[1][2]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_jac_ut_xt(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_jac_ut_xt_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_jac_ut_xt_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_fun_jac_ut_xt_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_jac_ut_xt_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_fun_jac_ut_xt_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_fun_jac_ut_xt_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_fun_jac_ut_xt_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_e_fun_jac_ut_xt_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_e_fun_jac_ut_xt_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_e_fun_jac_ut_xt_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_e_fun_jac_ut_xt_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_e_fun_jac_ut_xt_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - case 1: return "o1"; - case 2: return "o2"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_e_fun_jac_ut_xt_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s1; - case 3: return casadi_s2; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_e_fun_jac_ut_xt_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s3; - case 1: return casadi_s4; - case 2: return casadi_s5; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_fun_jac_ut_xt_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 4; - if (sz_res) *sz_res = 3; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_hess.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_hess.c deleted file mode 100644 index 6da9aac..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_e_hess.c +++ /dev/null @@ -1,150 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_e_hess_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) -#define casadi_s4 CASADI_PREFIX(s4) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[3] = {0, 0, 0}; -static const casadi_int casadi_s2[7] = {3, 1, 0, 3, 0, 1, 2}; -static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s4[7] = {4, 4, 0, 0, 0, 0, 0}; - -/* lat_cost_y_e_hess:(i0[4],i1[],i2[],i3[3],i4[2])->(o0[4x4,0nz]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_hess(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_hess_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_hess_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_hess_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_hess_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_hess_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_hess_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_e_hess_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_e_hess_n_in(void) { return 5;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_e_hess_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_e_hess_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_e_hess_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - case 4: return "i4"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_e_hess_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_e_hess_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s1; - case 3: return casadi_s2; - case 4: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_e_hess_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_e_hess_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 5; - if (sz_res) *sz_res = 1; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_fun.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_fun.c deleted file mode 100644 index 8b2aec1..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_fun.c +++ /dev/null @@ -1,167 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_fun_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) -#define casadi_s4 CASADI_PREFIX(s4) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[3] = {0, 0, 0}; -static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s4[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; - -/* lat_cost_y_fun:(i0[4],i1,i2[],i3[2])->(o0[5]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a2; - a0=arg[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a0=arg[3]? arg[3][0] : 0; - a1=10.; - a1=(a0+a1); - a2=arg[0]? arg[0][2] : 0; - a2=(a1*a2); - if (res[0]!=0) res[0][1]=a2; - a2=arg[0]? arg[0][3] : 0; - a2=(a1*a2); - if (res[0]!=0) res[0][2]=a2; - a2=arg[1]? arg[1][0] : 0; - a1=(a1*a2); - if (res[0]!=0) res[0][3]=a1; - a1=1.0000000000000001e-01; - a0=(a0+a1); - a2=(a2/a0); - if (res[0]!=0) res[0][4]=a2; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_fun_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_fun_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_fun_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s2; - case 3: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 4; - if (sz_res) *sz_res = 1; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_fun_jac_ut_xt.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_fun_jac_ut_xt.c deleted file mode 100644 index 42e7ca7..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_fun_jac_ut_xt.c +++ /dev/null @@ -1,182 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_fun_jac_ut_xt_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) -#define casadi_s4 CASADI_PREFIX(s4) -#define casadi_s5 CASADI_PREFIX(s5) -#define casadi_s6 CASADI_PREFIX(s6) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[3] = {0, 0, 0}; -static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s4[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; -static const casadi_int casadi_s5[13] = {5, 5, 0, 1, 2, 3, 4, 5, 2, 3, 4, 0, 0}; -static const casadi_int casadi_s6[3] = {5, 0, 0}; - -/* lat_cost_y_fun_jac_ut_xt:(i0[4],i1,i2[],i3[2])->(o0[5],o1[5x5,5nz],o2[5x0]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a2, a3; - a0=arg[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a0=arg[3]? arg[3][0] : 0; - a1=10.; - a1=(a0+a1); - a2=arg[0]? arg[0][2] : 0; - a2=(a1*a2); - if (res[0]!=0) res[0][1]=a2; - a2=arg[0]? arg[0][3] : 0; - a2=(a1*a2); - if (res[0]!=0) res[0][2]=a2; - a2=arg[1]? arg[1][0] : 0; - a3=(a1*a2); - if (res[0]!=0) res[0][3]=a3; - a3=1.0000000000000001e-01; - a0=(a0+a3); - a2=(a2/a0); - if (res[0]!=0) res[0][4]=a2; - a2=1.; - if (res[1]!=0) res[1][0]=a2; - if (res[1]!=0) res[1][1]=a1; - if (res[1]!=0) res[1][2]=a1; - if (res[1]!=0) res[1][3]=a1; - a0=(1./a0); - if (res[1]!=0) res[1][4]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_jac_ut_xt(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_jac_ut_xt_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_jac_ut_xt_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_fun_jac_ut_xt_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_jac_ut_xt_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_fun_jac_ut_xt_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_fun_jac_ut_xt_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_fun_jac_ut_xt_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_fun_jac_ut_xt_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_fun_jac_ut_xt_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_fun_jac_ut_xt_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_fun_jac_ut_xt_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_fun_jac_ut_xt_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - case 1: return "o1"; - case 2: return "o2"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_fun_jac_ut_xt_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s2; - case 3: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_fun_jac_ut_xt_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - case 1: return casadi_s5; - case 2: return casadi_s6; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_fun_jac_ut_xt_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 4; - if (sz_res) *sz_res = 3; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_hess.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_hess.c deleted file mode 100644 index 422fe45..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_cost/lat_cost_y_hess.c +++ /dev/null @@ -1,152 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_cost_y_hess_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) -#define casadi_s4 CASADI_PREFIX(s4) -#define casadi_s5 CASADI_PREFIX(s5) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[3] = {0, 0, 0}; -static const casadi_int casadi_s3[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; -static const casadi_int casadi_s4[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s5[8] = {5, 5, 0, 0, 0, 0, 0, 0}; - -/* lat_cost_y_hess:(i0[4],i1,i2[],i3[5],i4[2])->(o0[5x5,0nz]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_hess(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_hess_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_hess_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_hess_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_hess_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_hess_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_hess_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_cost_y_hess_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_hess_n_in(void) { return 5;} - -CASADI_SYMBOL_EXPORT casadi_int lat_cost_y_hess_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real lat_cost_y_hess_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_hess_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - case 4: return "i4"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_cost_y_hess_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_hess_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s2; - case 3: return casadi_s3; - case 4: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_cost_y_hess_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s5; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_cost_y_hess_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 5; - if (sz_res) *sz_res = 1; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_ode_fun.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_ode_fun.c deleted file mode 100644 index df55b59..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_ode_fun.c +++ /dev/null @@ -1,164 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_expl_ode_fun_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[6] = {2, 1, 0, 2, 0, 1}; - -/* lat_expl_ode_fun:(i0[4],i1,i2[2])->(o0[4]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a2, a3, a4, a5; - a0=arg[2]? arg[2][0] : 0; - a1=arg[0]? arg[0][2] : 0; - a2=cos(a1); - a2=(a0*a2); - a3=arg[2]? arg[2][1] : 0; - a4=sin(a1); - a4=(a3*a4); - a5=arg[0]? arg[0][3] : 0; - a4=(a4*a5); - a2=(a2-a4); - if (res[0]!=0) res[0][0]=a2; - a2=sin(a1); - a0=(a0*a2); - a1=cos(a1); - a3=(a3*a1); - a3=(a3*a5); - a0=(a0+a3); - if (res[0]!=0) res[0][1]=a0; - if (res[0]!=0) res[0][2]=a5; - a5=arg[1]? arg[1][0] : 0; - if (res[0]!=0) res[0][3]=a5; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_expl_ode_fun(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_expl_ode_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_expl_ode_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_expl_ode_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_expl_ode_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_expl_ode_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_expl_ode_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_expl_ode_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_expl_ode_fun_n_in(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_int lat_expl_ode_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real lat_expl_ode_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_expl_ode_fun_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_expl_ode_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_expl_ode_fun_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s2; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_expl_ode_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_expl_ode_fun_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 3; - if (sz_res) *sz_res = 1; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_vde_adj.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_vde_adj.c deleted file mode 100644 index 6be7e00..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_vde_adj.c +++ /dev/null @@ -1,186 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_expl_vde_adj_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[6] = {2, 1, 0, 2, 0, 1}; -static const casadi_int casadi_s3[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; - -/* lat_expl_vde_adj:(i0[4],i1[4],i2,i3[2])->(o0[5]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a2, a3, a4, a5, a6, a7; - a0=0.; - if (res[0]!=0) res[0][0]=a0; - if (res[0]!=0) res[0][1]=a0; - a0=arg[0]? arg[0][2] : 0; - a1=cos(a0); - a2=arg[3]? arg[3][0] : 0; - a3=arg[1]? arg[1][1] : 0; - a4=(a2*a3); - a1=(a1*a4); - a4=sin(a0); - a5=arg[3]? arg[3][1] : 0; - a6=arg[0]? arg[0][3] : 0; - a7=(a6*a3); - a7=(a5*a7); - a4=(a4*a7); - a1=(a1-a4); - a4=cos(a0); - a7=arg[1]? arg[1][0] : 0; - a6=(a6*a7); - a6=(a5*a6); - a4=(a4*a6); - a1=(a1-a4); - a4=sin(a0); - a2=(a2*a7); - a4=(a4*a2); - a1=(a1-a4); - if (res[0]!=0) res[0][2]=a1; - a1=arg[1]? arg[1][2] : 0; - a4=cos(a0); - a4=(a5*a4); - a4=(a4*a3); - a1=(a1+a4); - a0=sin(a0); - a5=(a5*a0); - a5=(a5*a7); - a1=(a1-a5); - if (res[0]!=0) res[0][3]=a1; - a1=arg[1]? arg[1][3] : 0; - if (res[0]!=0) res[0][4]=a1; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_adj(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_adj_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_adj_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_expl_vde_adj_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_adj_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_expl_vde_adj_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_expl_vde_adj_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_expl_vde_adj_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_expl_vde_adj_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int lat_expl_vde_adj_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real lat_expl_vde_adj_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_expl_vde_adj_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_expl_vde_adj_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_expl_vde_adj_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s0; - case 2: return casadi_s1; - case 3: return casadi_s2; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_expl_vde_adj_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_adj_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 4; - if (sz_res) *sz_res = 1; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_vde_forw.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_vde_forw.c deleted file mode 100644 index 664e146..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/lat_model/lat_expl_vde_forw.c +++ /dev/null @@ -1,299 +0,0 @@ -/* This file was automatically generated by CasADi 3.6.4. - * It consists of: - * 1) content generated by CasADi runtime: not copyrighted - * 2) template code copied from CasADi source: permissively licensed (MIT-0) - * 3) user code: owned by the user - * - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* How to prefix internal symbols */ -#ifdef CASADI_CODEGEN_PREFIX - #define CASADI_NAMESPACE_CONCAT(NS, ID) _CASADI_NAMESPACE_CONCAT(NS, ID) - #define _CASADI_NAMESPACE_CONCAT(NS, ID) NS ## ID - #define CASADI_PREFIX(ID) CASADI_NAMESPACE_CONCAT(CODEGEN_PREFIX, ID) -#else - #define CASADI_PREFIX(ID) lat_expl_vde_forw_ ## ID -#endif - -#include - -#ifndef casadi_real -#define casadi_real double -#endif - -#ifndef casadi_int -#define casadi_int int -#endif - -/* Add prefix to internal symbols */ -#define casadi_f0 CASADI_PREFIX(f0) -#define casadi_s0 CASADI_PREFIX(s0) -#define casadi_s1 CASADI_PREFIX(s1) -#define casadi_s2 CASADI_PREFIX(s2) -#define casadi_s3 CASADI_PREFIX(s3) - -/* Symbol visibility in DLLs */ -#ifndef CASADI_SYMBOL_EXPORT - #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - #if defined(STATIC_LINKED) - #define CASADI_SYMBOL_EXPORT - #else - #define CASADI_SYMBOL_EXPORT __declspec(dllexport) - #endif - #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) - #else - #define CASADI_SYMBOL_EXPORT - #endif -#endif - -static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s1[23] = {4, 4, 0, 4, 8, 12, 16, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3}; -static const casadi_int casadi_s2[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; - -/* lat_expl_vde_forw:(i0[4],i1[4x4],i2[4],i3,i4[2])->(o0[4],o1[4x4],o2[4]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a2, a3, a4, a5, a6, a7, a8, a9; - a0=arg[4]? arg[4][0] : 0; - a1=arg[0]? arg[0][2] : 0; - a2=cos(a1); - a2=(a0*a2); - a3=arg[4]? arg[4][1] : 0; - a4=sin(a1); - a4=(a3*a4); - a5=arg[0]? arg[0][3] : 0; - a6=(a4*a5); - a2=(a2-a6); - if (res[0]!=0) res[0][0]=a2; - a2=sin(a1); - a2=(a0*a2); - a6=cos(a1); - a6=(a3*a6); - a7=(a6*a5); - a2=(a2+a7); - if (res[0]!=0) res[0][1]=a2; - if (res[0]!=0) res[0][2]=a5; - a2=arg[3]? arg[3][0] : 0; - if (res[0]!=0) res[0][3]=a2; - a2=sin(a1); - a7=arg[1]? arg[1][2] : 0; - a8=(a2*a7); - a8=(a0*a8); - a9=cos(a1); - a10=(a9*a7); - a10=(a3*a10); - a10=(a5*a10); - a11=arg[1]? arg[1][3] : 0; - a12=(a4*a11); - a10=(a10+a12); - a8=(a8+a10); - a8=(-a8); - if (res[1]!=0) res[1][0]=a8; - a8=cos(a1); - a10=(a8*a7); - a10=(a0*a10); - a12=(a6*a11); - a13=sin(a1); - a7=(a13*a7); - a7=(a3*a7); - a7=(a5*a7); - a12=(a12-a7); - a10=(a10+a12); - if (res[1]!=0) res[1][1]=a10; - if (res[1]!=0) res[1][2]=a11; - a11=0.; - if (res[1]!=0) res[1][3]=a11; - a10=arg[1]? arg[1][6] : 0; - a12=(a2*a10); - a12=(a0*a12); - a7=(a9*a10); - a7=(a3*a7); - a7=(a5*a7); - a14=arg[1]? arg[1][7] : 0; - a15=(a4*a14); - a7=(a7+a15); - a12=(a12+a7); - a12=(-a12); - if (res[1]!=0) res[1][4]=a12; - a12=(a8*a10); - a12=(a0*a12); - a7=(a6*a14); - a10=(a13*a10); - a10=(a3*a10); - a10=(a5*a10); - a7=(a7-a10); - a12=(a12+a7); - if (res[1]!=0) res[1][5]=a12; - if (res[1]!=0) res[1][6]=a14; - if (res[1]!=0) res[1][7]=a11; - a14=arg[1]? arg[1][10] : 0; - a12=(a2*a14); - a12=(a0*a12); - a7=(a9*a14); - a7=(a3*a7); - a7=(a5*a7); - a10=arg[1]? arg[1][11] : 0; - a15=(a4*a10); - a7=(a7+a15); - a12=(a12+a7); - a12=(-a12); - if (res[1]!=0) res[1][8]=a12; - a12=(a8*a14); - a12=(a0*a12); - a7=(a6*a10); - a14=(a13*a14); - a14=(a3*a14); - a14=(a5*a14); - a7=(a7-a14); - a12=(a12+a7); - if (res[1]!=0) res[1][9]=a12; - if (res[1]!=0) res[1][10]=a10; - if (res[1]!=0) res[1][11]=a11; - a10=arg[1]? arg[1][14] : 0; - a2=(a2*a10); - a2=(a0*a2); - a9=(a9*a10); - a9=(a3*a9); - a9=(a5*a9); - a12=arg[1]? arg[1][15] : 0; - a7=(a4*a12); - a9=(a9+a7); - a2=(a2+a9); - a2=(-a2); - if (res[1]!=0) res[1][12]=a2; - a8=(a8*a10); - a8=(a0*a8); - a2=(a6*a12); - a13=(a13*a10); - a13=(a3*a13); - a13=(a5*a13); - a2=(a2-a13); - a8=(a8+a2); - if (res[1]!=0) res[1][13]=a8; - if (res[1]!=0) res[1][14]=a12; - if (res[1]!=0) res[1][15]=a11; - a11=sin(a1); - a12=arg[2]? arg[2][2] : 0; - a11=(a11*a12); - a11=(a0*a11); - a8=cos(a1); - a8=(a8*a12); - a8=(a3*a8); - a8=(a5*a8); - a2=arg[2]? arg[2][3] : 0; - a4=(a4*a2); - a8=(a8+a4); - a11=(a11+a8); - a11=(-a11); - if (res[2]!=0) res[2][0]=a11; - a11=cos(a1); - a11=(a11*a12); - a0=(a0*a11); - a6=(a6*a2); - a1=sin(a1); - a1=(a1*a12); - a3=(a3*a1); - a5=(a5*a3); - a6=(a6-a5); - a0=(a0+a6); - if (res[2]!=0) res[2][1]=a0; - if (res[2]!=0) res[2][2]=a2; - a2=1.; - if (res[2]!=0) res[2][3]=a2; - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_forw(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ - return casadi_f0(arg, res, iw, w, mem); -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_forw_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_forw_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_expl_vde_forw_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_forw_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void lat_expl_vde_forw_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void lat_expl_vde_forw_incref(void) { -} - -CASADI_SYMBOL_EXPORT void lat_expl_vde_forw_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int lat_expl_vde_forw_n_in(void) { return 5;} - -CASADI_SYMBOL_EXPORT casadi_int lat_expl_vde_forw_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real lat_expl_vde_forw_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_expl_vde_forw_name_in(casadi_int i) { - switch (i) { - case 0: return "i0"; - case 1: return "i1"; - case 2: return "i2"; - case 3: return "i3"; - case 4: return "i4"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* lat_expl_vde_forw_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - case 1: return "o1"; - case 2: return "o2"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_expl_vde_forw_sparsity_in(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s0; - case 3: return casadi_s2; - case 4: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* lat_expl_vde_forw_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - case 1: return casadi_s1; - case 2: return casadi_s0; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int lat_expl_vde_forw_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { - if (sz_arg) *sz_arg = 5; - if (sz_res) *sz_res = 3; - if (sz_iw) *sz_iw = 0; - if (sz_w) *sz_w = 0; - return 0; -} - - -#ifdef __cplusplus -} /* extern "C" */ -#endif diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/libacados_ocp_solver_lat.so b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/libacados_ocp_solver_lat.so deleted file mode 100755 index 7ed2658ac29fb5216c8c513734c83b2ea51e2f8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150432 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 uBXW|Gpg-o1+bA8rC!F%PyH`rxx! -#include -// acados -#include "acados/utils/print.h" -#include "acados/utils/math.h" -#include "acados_c/ocp_nlp_interface.h" -#include "acados_c/external_function_interface.h" -#include "acados_solver_lat.h" - -// blasfeo -#include "blasfeo/include/blasfeo_d_aux_ext_dep.h" - -#define NX LAT_NX -#define NZ LAT_NZ -#define NU LAT_NU -#define NP LAT_NP -#define NBX LAT_NBX -#define NBX0 LAT_NBX0 -#define NBU LAT_NBU -#define NSBX LAT_NSBX -#define NSBU LAT_NSBU -#define NSH LAT_NSH -#define NSG LAT_NSG -#define NSPHI LAT_NSPHI -#define NSHN LAT_NSHN -#define NSGN LAT_NSGN -#define NSPHIN LAT_NSPHIN -#define NSBXN LAT_NSBXN -#define NS LAT_NS -#define NSN LAT_NSN -#define NG LAT_NG -#define NBXN LAT_NBXN -#define NGN LAT_NGN -#define NY0 LAT_NY0 -#define NY LAT_NY -#define NYN LAT_NYN -#define NH LAT_NH -#define NPHI LAT_NPHI -#define NHN LAT_NHN -#define NPHIN LAT_NPHIN -#define NR LAT_NR - - -int main() -{ - - lat_solver_capsule *acados_ocp_capsule = lat_acados_create_capsule(); - // there is an opportunity to change the number of shooting intervals in C without new code generation - int N = LAT_N; - // allocate the array and fill it accordingly - double* new_time_steps = NULL; - int status = lat_acados_create_with_discretization(acados_ocp_capsule, N, new_time_steps); - - if (status) - { - printf("lat_acados_create() returned status %d. Exiting.\n", status); - exit(1); - } - - ocp_nlp_config *nlp_config = lat_acados_get_nlp_config(acados_ocp_capsule); - ocp_nlp_dims *nlp_dims = lat_acados_get_nlp_dims(acados_ocp_capsule); - ocp_nlp_in *nlp_in = lat_acados_get_nlp_in(acados_ocp_capsule); - ocp_nlp_out *nlp_out = lat_acados_get_nlp_out(acados_ocp_capsule); - ocp_nlp_solver *nlp_solver = lat_acados_get_nlp_solver(acados_ocp_capsule); - void *nlp_opts = lat_acados_get_nlp_opts(acados_ocp_capsule); - - // initial condition - int idxbx0[NBX0]; - idxbx0[0] = 0; - idxbx0[1] = 1; - idxbx0[2] = 2; - idxbx0[3] = 3; - - double lbx0[NBX0]; - double ubx0[NBX0]; - lbx0[0] = 0.0; - ubx0[0] = 0.0; - lbx0[1] = 0.0; - ubx0[1] = 0.0; - lbx0[2] = 0.0; - ubx0[2] = 0.0; - lbx0[3] = 0.0; - ubx0[3] = 0.0; - - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "idxbx", idxbx0); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "lbx", lbx0); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "ubx", ubx0); - - // initialization for state values - double x_init[NX]; - x_init[0] = 0.0; - x_init[1] = 0.0; - x_init[2] = 0.0; - x_init[3] = 0.0; - - // initial value for control input - double u0[NU]; - u0[0] = 0.0; - // set parameters - double p[NP]; - p[0] = 0.0; - p[1] = 0.0; - - for (int ii = 0; ii <= N; ii++) - { - lat_acados_update_params(acados_ocp_capsule, ii, p, NP); - } - - - // prepare evaluation - int NTIMINGS = 1; - double min_time = 1e12; - double kkt_norm_inf; - double elapsed_time; - int sqp_iter; - - double xtraj[NX * (N+1)]; - double utraj[NU * N]; - - - // solve ocp in loop - int rti_phase = 0; - - for (int ii = 0; ii < NTIMINGS; ii++) - { - // initialize solution - for (int i = 0; i < N; i++) - { - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "x", x_init); - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "u", u0); - } - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, N, "x", x_init); - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "rti_phase", &rti_phase); - status = lat_acados_solve(acados_ocp_capsule); - ocp_nlp_get(nlp_config, nlp_solver, "time_tot", &elapsed_time); - min_time = MIN(elapsed_time, min_time); - } - - /* print solution and statistics */ - for (int ii = 0; ii <= nlp_dims->N; ii++) - ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, ii, "x", &xtraj[ii*NX]); - for (int ii = 0; ii < nlp_dims->N; ii++) - ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, ii, "u", &utraj[ii*NU]); - - printf("\n--- xtraj ---\n"); - d_print_exp_tran_mat( NX, N+1, xtraj, NX); - printf("\n--- utraj ---\n"); - d_print_exp_tran_mat( NU, N, utraj, NU ); - // ocp_nlp_out_print(nlp_solver->dims, nlp_out); - - printf("\nsolved ocp %d times, solution printed above\n\n", NTIMINGS); - - if (status == ACADOS_SUCCESS) - { - printf("lat_acados_solve(): SUCCESS!\n"); - } - else - { - printf("lat_acados_solve() failed with status %d.\n", status); - } - - // get solution - ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, 0, "kkt_norm_inf", &kkt_norm_inf); - ocp_nlp_get(nlp_config, nlp_solver, "sqp_iter", &sqp_iter); - - lat_acados_print_stats(acados_ocp_capsule); - - printf("\nSolver info:\n"); - printf(" SQP iterations %2d\n minimum time for %d solve %f [ms]\n KKT %e\n", - sqp_iter, NTIMINGS, min_time*1000, kkt_norm_inf); - - // free solver - status = lat_acados_free(acados_ocp_capsule); - if (status) { - printf("lat_acados_free() returned status %d. \n", status); - } - // free solver capsule - status = lat_acados_free_capsule(acados_ocp_capsule); - if (status) { - printf("lat_acados_free_capsule() returned status %d. \n", status); - } - - return status; -} diff --git a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/main_sim_lat.c b/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/main_sim_lat.c deleted file mode 100644 index 77bf8dd..0000000 --- a/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/main_sim_lat.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) The acados authors. - * - * This file is part of acados. - * - * The 2-Clause BSD License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE.; - */ - - -// standard -#include -#include -// acados -#include "acados/utils/print.h" -#include "acados/utils/math.h" -#include "acados_c/sim_interface.h" -#include "acados_sim_solver_lat.h" - -#define NX LAT_NX -#define NZ LAT_NZ -#define NU LAT_NU -#define NP LAT_NP - - -int main() -{ - int status = 0; - sim_solver_capsule *capsule = lat_acados_sim_solver_create_capsule(); - status = lat_acados_sim_create(capsule); - - if (status) - { - printf("acados_create() returned status %d. Exiting.\n", status); - exit(1); - } - - sim_config *acados_sim_config = lat_acados_get_sim_config(capsule); - sim_in *acados_sim_in = lat_acados_get_sim_in(capsule); - sim_out *acados_sim_out = lat_acados_get_sim_out(capsule); - void *acados_sim_dims = lat_acados_get_sim_dims(capsule); - - // initial condition - double x_current[NX]; - x_current[0] = 0.0; - x_current[1] = 0.0; - x_current[2] = 0.0; - x_current[3] = 0.0; - - - x_current[0] = 0.0; - x_current[1] = 0.0; - x_current[2] = 0.0; - x_current[3] = 0.0; - - - - - // initial value for control input - double u0[NU]; - u0[0] = 0.0; - // set parameters - double p[NP]; - p[0] = 0.0; - p[1] = 0.0; - - lat_acados_sim_update_params(capsule, p, NP); - - - int n_sim_steps = 3; - // solve ocp in loop - for (int ii = 0; ii < n_sim_steps; ii++) - { - sim_in_set(acados_sim_config, acados_sim_dims, - acados_sim_in, "x", x_current); - status = lat_acados_sim_solve(capsule); - - if (status != ACADOS_SUCCESS) - { - printf("acados_solve() failed with status %d.\n", status); - } - - sim_out_get(acados_sim_config, acados_sim_dims, - acados_sim_out, "x", x_current); - - printf("\nx_current, %d\n", ii); - for (int jj = 0; jj < NX; jj++) - { - printf("%e\n", x_current[jj]); - } - } - - printf("\nPerformed %d simulation steps with acados integrator successfully.\n\n", n_sim_steps); - - // free solver - status = lat_acados_sim_free(capsule); - if (status) { - printf("lat_acados_sim_free() returned status %d. \n", status); - } - - lat_acados_sim_solver_free_capsule(capsule); - - return status; -}