From 90b100e98a69195495eba6708cc35fa6a96cdd6a Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 27 Apr 2024 03:25:57 -0500 Subject: [PATCH] wip --- .../lib/longitudinal_mpc_lib/SConscript | 96 + .../c_generated_code/Makefile | 213 - .../c_generated_code/acados_ocp_solver_pyx.c | 44066 ---------------- .../c_generated_code/acados_ocp_solver_pyx.so | Bin 1745072 -> 0 bytes .../c_generated_code/acados_sim_solver_long.c | 294 - .../c_generated_code/acados_solver.pxd | 62 - .../c_generated_code/acados_solver_long.c | 1087 - .../libacados_ocp_solver_long.so | Bin 176792 -> 0 bytes .../long_constraints/long_constr_h_fun.c | 179 - .../long_constr_h_fun_jac_uxt_zt.c | 205 - .../long_cost/long_cost_y_0_fun.c | 176 - .../long_cost/long_cost_y_0_fun_jac_ut_xt.c | 202 - .../long_cost/long_cost_y_0_hess.c | 201 - .../long_cost/long_cost_y_e_fun.c | 174 - .../long_cost/long_cost_y_e_fun_jac_ut_xt.c | 199 - .../long_cost/long_cost_y_e_hess.c | 201 - .../long_cost/long_cost_y_fun.c | 176 - .../long_cost/long_cost_y_fun_jac_ut_xt.c | 202 - .../long_cost/long_cost_y_hess.c | 201 - .../long_model/long_expl_ode_fun.c | 149 - .../long_model/long_expl_vde_adj.c | 155 - .../long_model/long_expl_vde_forw.c | 181 - .../c_generated_code/main_long.c | 216 - .../c_generated_code/main_sim_long.c | 127 - .../lib/longitudinal_mpc_lib/long_mpc.py | 79 +- 25 files changed, 125 insertions(+), 48716 deletions(-) create mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/SConscript delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/Makefile delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c delete mode 100755 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_sim_solver_long.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_solver.pxd delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_solver_long.c delete mode 100755 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/libacados_ocp_solver_long.so delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_constraints/long_constr_h_fun.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_constraints/long_constr_h_fun_jac_uxt_zt.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_fun.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_fun_jac_ut_xt.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_hess.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_fun.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_fun_jac_ut_xt.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_hess.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_fun.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_fun_jac_ut_xt.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_hess.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_ode_fun.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_vde_adj.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_vde_forw.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/main_long.c delete mode 100644 selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/main_sim_long.c mode change 100755 => 100644 selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript b/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript new file mode 100644 index 0000000..c00d5cb --- /dev/null +++ b/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript @@ -0,0 +1,96 @@ +Import('env', 'envCython', 'arch', 'messaging_python', 'common_python', 'opendbc_python') + +gen = "c_generated_code" + +casadi_model = [ + f'{gen}/long_model/long_expl_ode_fun.c', + f'{gen}/long_model/long_expl_vde_forw.c', +] + +casadi_cost_y = [ + f'{gen}/long_cost/long_cost_y_fun.c', + f'{gen}/long_cost/long_cost_y_fun_jac_ut_xt.c', + f'{gen}/long_cost/long_cost_y_hess.c', +] + +casadi_cost_e = [ + f'{gen}/long_cost/long_cost_y_e_fun.c', + f'{gen}/long_cost/long_cost_y_e_fun_jac_ut_xt.c', + f'{gen}/long_cost/long_cost_y_e_hess.c', +] + +casadi_cost_0 = [ + f'{gen}/long_cost/long_cost_y_0_fun.c', + f'{gen}/long_cost/long_cost_y_0_fun_jac_ut_xt.c', + f'{gen}/long_cost/long_cost_y_0_hess.c', +] + +casadi_constraints = [ + f'{gen}/long_constraints/long_constr_h_fun.c', + f'{gen}/long_constraints/long_constr_h_fun_jac_uxt_zt.c', +] + +build_files = [f'{gen}/acados_solver_long.c'] + casadi_model + casadi_cost_y + casadi_cost_e + \ + casadi_cost_0 + casadi_constraints + +# extra generated files used to trigger a rebuild +generated_files = [ + f'{gen}/Makefile', + + f'{gen}/main_long.c', + f'{gen}/main_sim_long.c', + f'{gen}/acados_solver_long.h', + f'{gen}/acados_sim_solver_long.h', + f'{gen}/acados_sim_solver_long.c', + f'{gen}/acados_solver.pxd', + + f'{gen}/long_model/long_expl_vde_adj.c', + + f'{gen}/long_model/long_model.h', + f'{gen}/long_constraints/long_constraints.h', + f'{gen}/long_cost/long_cost.h', +] + build_files + +acados_dir = '#third_party/acados' +acados_templates_dir = '#third_party/acados/acados_template/c_templates_tera' + +source_list = ['long_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_long = lenv.Command(generated_files, + source_list, + f"cd {Dir('.').abspath} && python3 long_mpc.py") +lenv.Depends(generated_long, [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_long", + 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/longitudinal_mpc_lib/c_generated_code/Makefile b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/Makefile deleted file mode 100644 index 411a77b..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/Makefile +++ /dev/null @@ -1,213 +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+= long_model/long_expl_ode_fun.c -MODEL_SRC+= long_model/long_expl_vde_forw.c -MODEL_SRC+= long_model/long_expl_vde_adj.c -MODEL_OBJ := $(MODEL_SRC:.c=.o) - -# optimal control problem - mostly CasADi exports -OCP_SRC= -OCP_SRC+= long_constraints/long_constr_h_fun_jac_uxt_zt.c -OCP_SRC+= long_constraints/long_constr_h_fun.c -OCP_SRC+= long_cost/long_cost_y_0_fun.c -OCP_SRC+= long_cost/long_cost_y_0_fun_jac_ut_xt.c -OCP_SRC+= long_cost/long_cost_y_0_hess.c -OCP_SRC+= long_cost/long_cost_y_fun.c -OCP_SRC+= long_cost/long_cost_y_fun_jac_ut_xt.c -OCP_SRC+= long_cost/long_cost_y_hess.c -OCP_SRC+= long_cost/long_cost_y_e_fun.c -OCP_SRC+= long_cost/long_cost_y_e_fun_jac_ut_xt.c -OCP_SRC+= long_cost/long_cost_y_e_hess.c - -OCP_SRC+= acados_solver_long.c -OCP_OBJ := $(OCP_SRC:.c=.o) - -# for sim solver -SIM_SRC= acados_sim_solver_long.c -SIM_OBJ := $(SIM_SRC:.c=.o) - -# for target example -EX_SRC= main_long.c -EX_OBJ := $(EX_SRC:.c=.o) -EX_EXE := $(EX_SRC:.c=) - -# for target example_sim -EX_SIM_SRC= main_sim_long.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_long.so -LIBACADOS_OCP_SOLVER=libacados_ocp_solver_long.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/longitudinal_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_long.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/longitudinal_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_long.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_long.so - $(RM) acados_solver_long.o - $(RM) acados_ocp_solver_pyx.so - $(RM) acados_ocp_solver_pyx.o - -clean_sim_cython: - $(RM) libacados_sim_solver_long.so - $(RM) acados_sim_solver_long.o - $(RM) acados_sim_solver_pyx.so - $(RM) acados_sim_solver_pyx.o diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c deleted file mode 100644 index 82838e8..0000000 --- a/selfdrive/controls/lib/longitudinal_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_long.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 - long_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 = long_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 = (long_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 = long_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 = long_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 = long_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 = long_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 = long_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 = long_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 = long_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(long_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(long_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(long_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) # <<<<<<<<<<<<<< - * - * - */ - long_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 = (long_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 = (long_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)(long_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)(long_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/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so deleted file mode 100755 index 848eaefac173f712f187522b13c4f5aa29f0bfd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1745072 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

TK>o+@xC`-eY$m;OJ!i=~@uuG9St#U# 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%0Dr_&a%xCN^{kub(U=(p*hPo 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%0DDN((oOY(X*QFGlFNsdd_m|gHZr82+zFZYdp>X$7 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 z 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 YElQ`C6?YFw;eY)h3EyQU*!r3I|GGis5C8xG diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_sim_solver_long.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_sim_solver_long.c deleted file mode 100644 index d451c56..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_sim_solver_long.c +++ /dev/null @@ -1,294 +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 "long_model/long_model.h" -#include "acados_sim_solver_long.h" - - -// ** solver data ** - -sim_solver_capsule * long_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 long_acados_sim_solver_free_capsule(sim_solver_capsule * capsule) -{ - free(capsule); - return 0; -} - - -int long_acados_sim_create(sim_solver_capsule * capsule) -{ - // initialize - const int nx = LONG_NX; - const int nu = LONG_NU; - const int nz = LONG_NZ; - const int np = LONG_NP; - bool tmp_bool; - - - double Tsim = 0.06944444444444445; - - - // 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 = &long_expl_vde_forw; - capsule->sim_forw_vde_casadi->casadi_n_in = &long_expl_vde_forw_n_in; - capsule->sim_forw_vde_casadi->casadi_n_out = &long_expl_vde_forw_n_out; - capsule->sim_forw_vde_casadi->casadi_sparsity_in = &long_expl_vde_forw_sparsity_in; - capsule->sim_forw_vde_casadi->casadi_sparsity_out = &long_expl_vde_forw_sparsity_out; - capsule->sim_forw_vde_casadi->casadi_work = &long_expl_vde_forw_work; - external_function_param_casadi_create(capsule->sim_forw_vde_casadi, np); - - capsule->sim_vde_adj_casadi->casadi_fun = &long_expl_vde_adj; - capsule->sim_vde_adj_casadi->casadi_n_in = &long_expl_vde_adj_n_in; - capsule->sim_vde_adj_casadi->casadi_n_out = &long_expl_vde_adj_n_out; - capsule->sim_vde_adj_casadi->casadi_sparsity_in = &long_expl_vde_adj_sparsity_in; - capsule->sim_vde_adj_casadi->casadi_sparsity_out = &long_expl_vde_adj_sparsity_out; - capsule->sim_vde_adj_casadi->casadi_work = &long_expl_vde_adj_work; - external_function_param_casadi_create(capsule->sim_vde_adj_casadi, np); - - capsule->sim_expl_ode_fun_casadi->casadi_fun = &long_expl_ode_fun; - capsule->sim_expl_ode_fun_casadi->casadi_n_in = &long_expl_ode_fun_n_in; - capsule->sim_expl_ode_fun_casadi->casadi_n_out = &long_expl_ode_fun_n_out; - capsule->sim_expl_ode_fun_casadi->casadi_sparsity_in = &long_expl_ode_fun_sparsity_in; - capsule->sim_expl_ode_fun_casadi->casadi_sparsity_out = &long_expl_ode_fun_sparsity_out; - capsule->sim_expl_ode_fun_casadi->casadi_work = &long_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 * long_sim_config = sim_config_create(plan); - capsule->acados_sim_config = long_sim_config; - - // sim dims - void *long_sim_dims = sim_dims_create(long_sim_config); - capsule->acados_sim_dims = long_sim_dims; - sim_dims_set(long_sim_config, long_sim_dims, "nx", &nx); - sim_dims_set(long_sim_config, long_sim_dims, "nu", &nu); - sim_dims_set(long_sim_config, long_sim_dims, "nz", &nz); - - - // sim opts - sim_opts *long_sim_opts = sim_opts_create(long_sim_config, long_sim_dims); - capsule->acados_sim_opts = long_sim_opts; - int tmp_int = 3; - sim_opts_set(long_sim_config, long_sim_opts, "newton_iter", &tmp_int); - double tmp_double = 0.0; - sim_opts_set(long_sim_config, long_sim_opts, "newton_tol", &tmp_double); - sim_collocation_type collocation_type = GAUSS_LEGENDRE; - sim_opts_set(long_sim_config, long_sim_opts, "collocation_type", &collocation_type); - - - tmp_int = 4; - sim_opts_set(long_sim_config, long_sim_opts, "num_stages", &tmp_int); - tmp_int = 1; - sim_opts_set(long_sim_config, long_sim_opts, "num_steps", &tmp_int); - tmp_bool = 0; - sim_opts_set(long_sim_config, long_sim_opts, "jac_reuse", &tmp_bool); - - - // sim in / out - sim_in *long_sim_in = sim_in_create(long_sim_config, long_sim_dims); - capsule->acados_sim_in = long_sim_in; - sim_out *long_sim_out = sim_out_create(long_sim_config, long_sim_dims); - capsule->acados_sim_out = long_sim_out; - - sim_in_set(long_sim_config, long_sim_dims, - long_sim_in, "T", &Tsim); - - // model functions - long_sim_config->model_set(long_sim_in->model, - "expl_vde_forw", capsule->sim_forw_vde_casadi); - long_sim_config->model_set(long_sim_in->model, - "expl_vde_adj", capsule->sim_vde_adj_casadi); - long_sim_config->model_set(long_sim_in->model, - "expl_ode_fun", capsule->sim_expl_ode_fun_casadi); - - // sim solver - sim_solver *long_sim_solver = sim_solver_create(long_sim_config, - long_sim_dims, long_sim_opts); - capsule->acados_sim_solver = long_sim_solver; - - - /* initialize parameter values */ - double* p = calloc(np, sizeof(double)); - - p[0] = -1.2; - p[1] = 1.2; - p[4] = 1.45; - p[5] = 0.75; - - long_acados_sim_update_params(capsule, p, np); - free(p); - - - /* initialize input */ - // x - double x0[3]; - for (int ii = 0; ii < 3; ii++) - x0[ii] = 0.0; - - sim_in_set(long_sim_config, long_sim_dims, - long_sim_in, "x", x0); - - - // u - double u0[1]; - for (int ii = 0; ii < 1; ii++) - u0[ii] = 0.0; - - sim_in_set(long_sim_config, long_sim_dims, - long_sim_in, "u", u0); - - // S_forw - double S_forw[12]; - for (int ii = 0; ii < 12; ii++) - S_forw[ii] = 0.0; - for (int ii = 0; ii < 3; ii++) - S_forw[ii + ii * 3 ] = 1.0; - - - sim_in_set(long_sim_config, long_sim_dims, - long_sim_in, "S_forw", S_forw); - - int status = sim_precompute(long_sim_solver, long_sim_in, long_sim_out); - - return status; -} - - -int long_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 long_acados_sim_solve()! Exiting.\n"); - - return status; -} - - -int long_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 long_acados_sim_update_params(sim_solver_capsule *capsule, double *p, int np) -{ - int status = 0; - int casadi_np = LONG_NP; - - if (casadi_np != np) { - printf("long_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 * long_acados_get_sim_config(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_config; -}; - -sim_in * long_acados_get_sim_in(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_in; -}; - -sim_out * long_acados_get_sim_out(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_out; -}; - -void * long_acados_get_sim_dims(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_dims; -}; - -sim_opts * long_acados_get_sim_opts(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_opts; -}; - -sim_solver * long_acados_get_sim_solver(sim_solver_capsule *capsule) -{ - return capsule->acados_sim_solver; -}; - diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_solver.pxd b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_solver.pxd deleted file mode 100644 index c04a1b2..0000000 --- a/selfdrive/controls/lib/longitudinal_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_long.h": - ctypedef struct nlp_solver_capsule "long_solver_capsule": - pass - - nlp_solver_capsule * acados_create_capsule "long_acados_create_capsule"() - int acados_free_capsule "long_acados_free_capsule"(nlp_solver_capsule *capsule) - - int acados_create "long_acados_create"(nlp_solver_capsule * capsule) - - int acados_create_with_discretization "long_acados_create_with_discretization"(nlp_solver_capsule * capsule, int n_time_steps, double* new_time_steps) - int acados_update_time_steps "long_acados_update_time_steps"(nlp_solver_capsule * capsule, int N, double* new_time_steps) - int acados_update_qp_solver_cond_N "long_acados_update_qp_solver_cond_N"(nlp_solver_capsule * capsule, int qp_solver_cond_N) - - int acados_update_params "long_acados_update_params"(nlp_solver_capsule * capsule, int stage, double *value, int np_) - int acados_update_params_sparse "long_acados_update_params_sparse"(nlp_solver_capsule * capsule, int stage, int *idx, double *p, int n_update) - int acados_solve "long_acados_solve"(nlp_solver_capsule * capsule) - int acados_reset "long_acados_reset"(nlp_solver_capsule * capsule, int reset_qp_solver_mem) - int acados_free "long_acados_free"(nlp_solver_capsule * capsule) - void acados_print_stats "long_acados_print_stats"(nlp_solver_capsule * capsule) - - int acados_custom_update "long_acados_custom_update"(nlp_solver_capsule* capsule, double * data, int data_len) - - acados_solver_common.ocp_nlp_in *acados_get_nlp_in "long_acados_get_nlp_in"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_out *acados_get_nlp_out "long_acados_get_nlp_out"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_out *acados_get_sens_out "long_acados_get_sens_out"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_solver *acados_get_nlp_solver "long_acados_get_nlp_solver"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_config *acados_get_nlp_config "long_acados_get_nlp_config"(nlp_solver_capsule * capsule) - void *acados_get_nlp_opts "long_acados_get_nlp_opts"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_dims *acados_get_nlp_dims "long_acados_get_nlp_dims"(nlp_solver_capsule * capsule) - acados_solver_common.ocp_nlp_plan *acados_get_nlp_plan "long_acados_get_nlp_plan"(nlp_solver_capsule * capsule) diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_solver_long.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_solver_long.c deleted file mode 100644 index bdeec91..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_solver_long.c +++ /dev/null @@ -1,1087 +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 "long_model/long_model.h" -#include "long_constraints/long_constraints.h" -#include "long_cost/long_cost.h" - - - - -#include "acados_solver_long.h" - -#define NX LONG_NX -#define NZ LONG_NZ -#define NU LONG_NU -#define NP LONG_NP -#define NBX LONG_NBX -#define NBX0 LONG_NBX0 -#define NBU LONG_NBU -#define NSBX LONG_NSBX -#define NSBU LONG_NSBU -#define NSH LONG_NSH -#define NSG LONG_NSG -#define NSPHI LONG_NSPHI -#define NSHN LONG_NSHN -#define NSGN LONG_NSGN -#define NSPHIN LONG_NSPHIN -#define NSBXN LONG_NSBXN -#define NS LONG_NS -#define NSN LONG_NSN -#define NG LONG_NG -#define NBXN LONG_NBXN -#define NGN LONG_NGN -#define NY0 LONG_NY0 -#define NY LONG_NY -#define NYN LONG_NYN -// #define N LONG_N -#define NH LONG_NH -#define NPHI LONG_NPHI -#define NHN LONG_NHN -#define NPHIN LONG_NPHIN -#define NR LONG_NR - - -// ** solver data ** - -long_solver_capsule * long_acados_create_capsule(void) -{ - void* capsule_mem = malloc(sizeof(long_solver_capsule)); - long_solver_capsule *capsule = (long_solver_capsule *) capsule_mem; - - return capsule; -} - - -int long_acados_free_capsule(long_solver_capsule *capsule) -{ - free(capsule); - return 0; -} - - -int long_acados_create(long_solver_capsule* capsule) -{ - int N_shooting_intervals = LONG_N; - double* new_time_steps = NULL; // NULL -> don't alter the code generated time-steps - return long_acados_create_with_discretization(capsule, N_shooting_intervals, new_time_steps); -} - - -int long_acados_update_time_steps(long_solver_capsule* capsule, int N, double* new_time_steps) -{ - if (N != capsule->nlp_solver_plan->N) { - fprintf(stderr, "long_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 long_acados_create: step 1 - */ -void long_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 long_acados_create: step 2 - */ -ocp_nlp_dims* long_acados_create_2_create_and_set_dimensions(long_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] = 3; - 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, i, "nh", &nh[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsh", &nsh[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 long_acados_create: step 3 - */ -void long_acados_create_3_create_and_set_functions(long_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__ , 6); \ - }while(false) - - - // constraints.constr_type == "BGH" and dims.nh > 0 - capsule->nl_constr_h_fun_jac = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); - for (int i = 0; i < N; i++) { - MAP_CASADI_FNC(nl_constr_h_fun_jac[i], long_constr_h_fun_jac_uxt_zt); - } - capsule->nl_constr_h_fun = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); - for (int i = 0; i < N; i++) { - MAP_CASADI_FNC(nl_constr_h_fun[i], long_constr_h_fun); - } - - - - - // 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], long_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], long_expl_ode_fun); - } - - - // nonlinear least squares function - MAP_CASADI_FNC(cost_y_0_fun, long_cost_y_0_fun); - MAP_CASADI_FNC(cost_y_0_fun_jac_ut_xt, long_cost_y_0_fun_jac_ut_xt); - MAP_CASADI_FNC(cost_y_0_hess, long_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], long_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], long_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], long_cost_y_hess); - } - // nonlinear least square function - MAP_CASADI_FNC(cost_y_e_fun, long_cost_y_e_fun); - MAP_CASADI_FNC(cost_y_e_fun_jac_ut_xt, long_cost_y_e_fun_jac_ut_xt); - MAP_CASADI_FNC(cost_y_e_hess, long_cost_y_e_hess); - -#undef MAP_CASADI_FNC -} - - -/** - * Internal function for long_acados_create: step 4 - */ -void long_acados_create_4_set_default_parameters(long_solver_capsule* capsule) { - const int N = capsule->nlp_solver_plan->N; - // initialize parameters to nominal value - double* p = calloc(NP, sizeof(double)); - p[0] = -1.2; - p[1] = 1.2; - p[4] = 1.45; - p[5] = 0.75; - - for (int i = 0; i <= N; i++) { - long_acados_update_params(capsule, i, p, NP); - } - free(p); -} - - -/** - * Internal function for long_acados_create: step 5 - */ -void long_acados_create_5_set_nlp_in(long_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) { - long_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.06944444444444445; - time_steps[1] = 0.20833333333333337; - time_steps[2] = 0.3472222222222222; - time_steps[3] = 0.4861111111111112; - time_steps[4] = 0.6250000000000002; - time_steps[5] = 0.7638888888888886; - time_steps[6] = 0.9027777777777786; - time_steps[7] = 1.041666666666666; - time_steps[8] = 1.1805555555555554; - time_steps[9] = 1.3194444444444455; - time_steps[10] = 1.4583333333333313; - time_steps[11] = 1.5972222222222232; - long_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); - // slacks - double* zlumem = calloc(4*NS, sizeof(double)); - double* Zl = zlumem+NS*0; - double* Zu = zlumem+NS*1; - double* zl = zlumem+NS*2; - double* zu = zlumem+NS*3; - // change only the non-zero elements: - - for (int i = 0; i < N; i++) - { - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "Zl", Zl); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "Zu", Zu); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "zl", zl); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "zu", zu); - } - free(zlumem); - - - - /**** Constraints ****/ - - // bounds for initial stage - // x0 - int* idxbx0 = malloc(NBX0 * sizeof(int)); - idxbx0[0] = 0; - idxbx0[1] = 1; - idxbx0[2] = 2; - - 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(3 * sizeof(int)); - - idxbxe_0[0] = 0; - idxbxe_0[1] = 1; - idxbxe_0[2] = 2; - 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 */ - - - - - // set up soft bounds for nonlinear constraints - int* idxsh = malloc(NSH * sizeof(int)); - - idxsh[0] = 0; - idxsh[1] = 1; - idxsh[2] = 2; - idxsh[3] = 3; - double* lush = calloc(2*NSH, sizeof(double)); - double* lsh = lush; - double* ush = lush + NSH; - - - for (int i = 0; i < N; i++) - { - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "idxsh", idxsh); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "lsh", lsh); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "ush", ush); - } - free(idxsh); - free(lush); - - - - - - - - - // set up nonlinear constraints for stage 0 to N-1 - double* luh = calloc(2*NH, sizeof(double)); - double* lh = luh; - double* uh = luh + NH; - - - - - uh[0] = 10000.0; - uh[1] = 10000.0; - uh[2] = 10000.0; - uh[3] = 10000.0; - - for (int i = 0; i < N; i++) - { - // nonlinear constraints for stages 0 to N-1 - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "nl_constr_h_fun_jac", - &capsule->nl_constr_h_fun_jac[i]); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "nl_constr_h_fun", - &capsule->nl_constr_h_fun[i]); - - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "lh", lh); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "uh", uh); - } - free(luh); - - - - /* terminal constraints */ - - - - - - - - - - - - - - - -} - - -/** - * Internal function for long_acados_create: step 6 - */ -void long_acados_create_6_set_opts(long_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 = 10; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_iter_max", &qp_solver_iter_max); - - - double qp_solver_tol_stat = 0.001; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_tol_stat", &qp_solver_tol_stat); - double qp_solver_tol_eq = 0.001; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_tol_eq", &qp_solver_tol_eq); - double qp_solver_tol_ineq = 0.001; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_tol_ineq", &qp_solver_tol_ineq); - double qp_solver_tol_comp = 0.001; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_tol_comp", &qp_solver_tol_comp);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 long_acados_create: step 7 - */ -void long_acados_create_7_set_nlp_out(long_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 long_acados_create: step 8 - */ -//void long_acados_create_8_create_solver(long_solver_capsule* capsule) -//{ -// capsule->nlp_solver = ocp_nlp_solver_create(capsule->nlp_config, capsule->nlp_dims, capsule->nlp_opts); -//} - -/** - * Internal function for long_acados_create: step 9 - */ -int long_acados_create_9_precompute(long_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 long_acados_create_with_discretization(long_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 != LONG_N && !new_time_steps) { - fprintf(stderr, "long_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, LONG_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); - long_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 = long_acados_create_2_create_and_set_dimensions(capsule); - long_acados_create_3_create_and_set_functions(capsule); - - // 4) set default parameters in functions - long_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); - long_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); - long_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); - long_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); - //long_acados_create_8_create_solver(capsule); - - // 9) do precomputations - int status = long_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 long_acados_update_qp_solver_cond_N(long_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 long_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 = long_acados_create_9_precompute(capsule); - return status; -} - - -int long_acados_reset(long_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 long_acados_update_params(long_solver_capsule* capsule, int stage, double *p, int np) -{ - int solver_status = 0; - - int casadi_np = 6; - 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 - - capsule->nl_constr_h_fun_jac[stage].set_param(capsule->nl_constr_h_fun_jac+stage, p); - capsule->nl_constr_h_fun[stage].set_param(capsule->nl_constr_h_fun+stage, p); - - // 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 long_acados_update_params_sparse(long_solver_capsule * capsule, int stage, int *idx, double *p, int n_update) -{ - int solver_status = 0; - - int casadi_np = 6; - if (casadi_np < n_update) { - printf("long_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("long_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 - - capsule->nl_constr_h_fun_jac[stage].set_param_sparse(capsule->nl_constr_h_fun_jac+stage, n_update, idx, p); - capsule->nl_constr_h_fun[stage].set_param_sparse(capsule->nl_constr_h_fun+stage, n_update, idx, p); - - // 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 long_acados_solve(long_solver_capsule* capsule) -{ - // solve NLP - int solver_status = ocp_nlp_solve(capsule->nlp_solver, capsule->nlp_in, capsule->nlp_out); - - return solver_status; -} - - -int long_acados_free(long_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 - for (int i = 0; i < N; i++) - { - external_function_param_casadi_free(&capsule->nl_constr_h_fun_jac[i]); - external_function_param_casadi_free(&capsule->nl_constr_h_fun[i]); - } - free(capsule->nl_constr_h_fun_jac); - free(capsule->nl_constr_h_fun); - - return 0; -} - - -void long_acados_print_stats(long_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 long_acados_custom_update(long_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 *long_acados_get_nlp_in(long_solver_capsule* capsule) { return capsule->nlp_in; } -ocp_nlp_out *long_acados_get_nlp_out(long_solver_capsule* capsule) { return capsule->nlp_out; } -ocp_nlp_out *long_acados_get_sens_out(long_solver_capsule* capsule) { return capsule->sens_out; } -ocp_nlp_solver *long_acados_get_nlp_solver(long_solver_capsule* capsule) { return capsule->nlp_solver; } -ocp_nlp_config *long_acados_get_nlp_config(long_solver_capsule* capsule) { return capsule->nlp_config; } -void *long_acados_get_nlp_opts(long_solver_capsule* capsule) { return capsule->nlp_opts; } -ocp_nlp_dims *long_acados_get_nlp_dims(long_solver_capsule* capsule) { return capsule->nlp_dims; } -ocp_nlp_plan_t *long_acados_get_nlp_plan(long_solver_capsule* capsule) { return capsule->nlp_solver_plan; } diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/libacados_ocp_solver_long.so b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/libacados_ocp_solver_long.so deleted file mode 100755 index 00e02a49a355ae258426f23da43cd89566969249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176792 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 Xl8>hKKePk?4ci?5A1Q^^$LN0ndsB|g diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_constraints/long_constr_h_fun.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_constraints/long_constr_h_fun.c deleted file mode 100644 index be006b8..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_constraints/long_constr_h_fun.c +++ /dev/null @@ -1,179 +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) long_constr_h_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) -#define casadi_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -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[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s4[8] = {4, 1, 0, 4, 0, 1, 2, 3}; - -/* long_constr_h_fun:(i0[3],i1,i2[],i3[6])->(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; - a0=arg[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a1=arg[0]? arg[0][2] : 0; - a2=arg[3]? arg[3][0] : 0; - a2=(a1-a2); - if (res[0]!=0) res[0][1]=a2; - a2=arg[3]? arg[3][1] : 0; - a2=(a2-a1); - if (res[0]!=0) res[0][2]=a2; - a2=arg[3]? arg[3][2] : 0; - a1=arg[0]? arg[0][0] : 0; - a2=(a2-a1); - a1=arg[3]? arg[3][5] : 0; - a3=casadi_sq(a0); - a4=5.; - a3=(a3/a4); - a4=arg[3]? arg[3][4] : 0; - a4=(a4*a0); - a3=(a3+a4); - a4=6.; - a3=(a3+a4); - a1=(a1*a3); - a2=(a2-a1); - a1=10.; - a0=(a0+a1); - a2=(a2/a0); - if (res[0]!=0) res[0][3]=a2; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_constr_h_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 long_constr_h_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_constr_h_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_constr_h_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_constr_h_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_constr_h_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_constr_h_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_constr_h_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_constr_h_fun_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_constr_h_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_constr_h_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_constr_h_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* long_constr_h_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_constr_h_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* long_constr_h_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_constr_h_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/longitudinal_mpc_lib/c_generated_code/long_constraints/long_constr_h_fun_jac_uxt_zt.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_constraints/long_constr_h_fun_jac_uxt_zt.c deleted file mode 100644 index 7f78a87..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_constraints/long_constr_h_fun_jac_uxt_zt.c +++ /dev/null @@ -1,205 +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) long_constr_h_fun_jac_uxt_zt_ ## 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) -#define casadi_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -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[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s4[8] = {4, 1, 0, 4, 0, 1, 2, 3}; -static const casadi_int casadi_s5[12] = {4, 4, 0, 1, 2, 3, 5, 2, 3, 3, 1, 2}; -static const casadi_int casadi_s6[3] = {4, 0, 0}; - -/* long_constr_h_fun_jac_uxt_zt:(i0[3],i1,i2[],i3[6])->(o0[4],o1[4x4,5nz],o2[4x0]) */ -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[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a1=arg[0]? arg[0][2] : 0; - a2=arg[3]? arg[3][0] : 0; - a2=(a1-a2); - if (res[0]!=0) res[0][1]=a2; - a2=arg[3]? arg[3][1] : 0; - a2=(a2-a1); - if (res[0]!=0) res[0][2]=a2; - a2=arg[3]? arg[3][2] : 0; - a1=arg[0]? arg[0][0] : 0; - a2=(a2-a1); - a1=arg[3]? arg[3][5] : 0; - a3=casadi_sq(a0); - a4=5.; - a3=(a3/a4); - a4=arg[3]? arg[3][4] : 0; - a5=(a4*a0); - a3=(a3+a5); - a5=6.; - a3=(a3+a5); - a3=(a1*a3); - a2=(a2-a3); - a3=10.; - a3=(a0+a3); - a2=(a2/a3); - if (res[0]!=0) res[0][3]=a2; - a5=1.; - if (res[1]!=0) res[1][0]=a5; - if (res[1]!=0) res[1][1]=a5; - a5=-1.; - if (res[1]!=0) res[1][2]=a5; - a5=(1./a3); - a5=(-a5); - if (res[1]!=0) res[1][3]=a5; - a5=2.0000000000000001e-01; - a0=(a0+a0); - a5=(a5*a0); - a5=(a5+a4); - a1=(a1*a5); - a1=(a1/a3); - a2=(a2/a3); - a1=(a1+a2); - a1=(-a1); - if (res[1]!=0) res[1][4]=a1; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_constr_h_fun_jac_uxt_zt(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 long_constr_h_fun_jac_uxt_zt_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_constr_h_fun_jac_uxt_zt_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_constr_h_fun_jac_uxt_zt_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_constr_h_fun_jac_uxt_zt_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_constr_h_fun_jac_uxt_zt_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_constr_h_fun_jac_uxt_zt_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_constr_h_fun_jac_uxt_zt_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_constr_h_fun_jac_uxt_zt_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_constr_h_fun_jac_uxt_zt_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real long_constr_h_fun_jac_uxt_zt_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_constr_h_fun_jac_uxt_zt_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* long_constr_h_fun_jac_uxt_zt_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* long_constr_h_fun_jac_uxt_zt_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* long_constr_h_fun_jac_uxt_zt_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 long_constr_h_fun_jac_uxt_zt_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_fun.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_fun.c deleted file mode 100644 index 1189293..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_fun.c +++ /dev/null @@ -1,176 +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) long_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_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -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[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; - -/* long_cost_y_0_fun:(i0[3],i1,i2[],i3[6])->(o0[6]) */ -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; - a0=arg[3]? arg[3][2] : 0; - a1=arg[0]? arg[0][0] : 0; - a0=(a0-a1); - a2=arg[0]? arg[0][1] : 0; - a3=casadi_sq(a2); - a4=5.; - a3=(a3/a4); - a4=arg[3]? arg[3][4] : 0; - a4=(a4*a2); - a3=(a3+a4); - a4=6.; - a3=(a3+a4); - a0=(a0-a3); - a3=10.; - a3=(a2+a3); - a0=(a0/a3); - if (res[0]!=0) res[0][0]=a0; - if (res[0]!=0) res[0][1]=a1; - if (res[0]!=0) res[0][2]=a2; - a2=arg[0]? arg[0][2] : 0; - if (res[0]!=0) res[0][3]=a2; - a1=arg[3]? arg[3][3] : 0; - a2=(a2-a1); - if (res[0]!=0) res[0][4]=a2; - a2=arg[1]? arg[1][0] : 0; - if (res[0]!=0) res[0][5]=a2; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_0_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_0_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_0_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_0_fun_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_0_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_0_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_cost_y_0_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_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* long_cost_y_0_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_fun_jac_ut_xt.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_fun_jac_ut_xt.c deleted file mode 100644 index 7227e03..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_fun_jac_ut_xt.c +++ /dev/null @@ -1,202 +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) long_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_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -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[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s4[16] = {4, 6, 0, 2, 3, 4, 5, 6, 7, 1, 2, 1, 2, 3, 3, 0}; -static const casadi_int casadi_s5[3] = {6, 0, 0}; - -/* long_cost_y_0_fun_jac_ut_xt:(i0[3],i1,i2[],i3[6])->(o0[6],o1[4x6,7nz],o2[6x0]) */ -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[3]? arg[3][2] : 0; - a1=arg[0]? arg[0][0] : 0; - a0=(a0-a1); - a2=arg[0]? arg[0][1] : 0; - a3=casadi_sq(a2); - a4=5.; - a3=(a3/a4); - a4=arg[3]? arg[3][4] : 0; - a5=(a4*a2); - a3=(a3+a5); - a5=6.; - a3=(a3+a5); - a0=(a0-a3); - a3=10.; - a3=(a2+a3); - a0=(a0/a3); - if (res[0]!=0) res[0][0]=a0; - if (res[0]!=0) res[0][1]=a1; - if (res[0]!=0) res[0][2]=a2; - a1=arg[0]? arg[0][2] : 0; - if (res[0]!=0) res[0][3]=a1; - a5=arg[3]? arg[3][3] : 0; - a1=(a1-a5); - if (res[0]!=0) res[0][4]=a1; - a1=arg[1]? arg[1][0] : 0; - if (res[0]!=0) res[0][5]=a1; - a1=(1./a3); - a1=(-a1); - if (res[1]!=0) res[1][0]=a1; - a1=2.0000000000000001e-01; - a2=(a2+a2); - a1=(a1*a2); - a1=(a1+a4); - a1=(a1/a3); - a0=(a0/a3); - a1=(a1+a0); - a1=(-a1); - if (res[1]!=0) res[1][1]=a1; - a1=1.; - if (res[1]!=0) res[1][2]=a1; - if (res[1]!=0) res[1][3]=a1; - if (res[1]!=0) res[1][4]=a1; - if (res[1]!=0) res[1][5]=a1; - if (res[1]!=0) res[1][6]=a1; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_0_fun_jac_ut_xt_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_0_fun_jac_ut_xt_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_fun_jac_ut_xt_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_0_fun_jac_ut_xt_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_fun_jac_ut_xt_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_fun_jac_ut_xt_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_fun_jac_ut_xt_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_0_fun_jac_ut_xt_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_0_fun_jac_ut_xt_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_0_fun_jac_ut_xt_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_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* long_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* long_cost_y_0_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 long_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_hess.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_hess.c deleted file mode 100644 index 74eec0d..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_0_hess.c +++ /dev/null @@ -1,201 +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) long_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_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -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[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s4[10] = {4, 4, 0, 0, 1, 3, 3, 2, 1, 2}; - -/* long_cost_y_0_hess:(i0[3],i1,i2[],i3[6],i4[6])->(o0[4x4,3nz]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a10, a2, a3, a4, a5, a6, a7, a8, a9; - a0=arg[3]? arg[3][0] : 0; - a1=arg[0]? arg[0][1] : 0; - a2=10.; - a2=(a1+a2); - a3=(1./a2); - a3=(a3/a2); - a3=(a0*a3); - if (res[0]!=0) res[0][0]=a3; - a3=(a0/a2); - a4=(a3/a2); - if (res[0]!=0) res[0][1]=a4; - a5=2.0000000000000001e-01; - a6=(a1+a1); - a6=(a5*a6); - a7=arg[4]? arg[4][4] : 0; - a6=(a6+a7); - a6=(a6/a2); - a8=arg[4]? arg[4][2] : 0; - a9=arg[0]? arg[0][0] : 0; - a8=(a8-a9); - a9=casadi_sq(a1); - a10=5.; - a9=(a9/a10); - a10=(a7*a1); - a9=(a9+a10); - a10=6.; - a9=(a9+a10); - a8=(a8-a9); - a8=(a8/a2); - a9=(a8/a2); - a6=(a6+a9); - a6=(a6/a2); - a8=(a8/a2); - a8=(a8/a2); - a6=(a6+a8); - a0=(a0*a6); - a7=(a7*a4); - a0=(a0+a7); - a7=2.; - a3=(a5*a3); - a7=(a7*a3); - a1=(a1+a1); - a5=(a5*a4); - a1=(a1*a5); - a7=(a7-a1); - a0=(a0-a7); - if (res[0]!=0) res[0][2]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_0_hess_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_0_hess_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_hess_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_0_hess_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_hess_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_hess_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_0_hess_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_0_hess_n_in(void) { return 5;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_0_hess_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_0_hess_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_cost_y_0_hess_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_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_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_cost_y_0_hess_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_fun.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_fun.c deleted file mode 100644 index 92dcef2..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_fun.c +++ /dev/null @@ -1,174 +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) long_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) -#define casadi_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -static const casadi_int casadi_s1[3] = {0, 0, 0}; -static const casadi_int casadi_s2[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s3[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; - -/* long_cost_y_e_fun:(i0[3],i1[],i2[],i3[6])->(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; - a0=arg[3]? arg[3][2] : 0; - a1=arg[0]? arg[0][0] : 0; - a0=(a0-a1); - a2=arg[0]? arg[0][1] : 0; - a3=casadi_sq(a2); - a4=5.; - a3=(a3/a4); - a4=arg[3]? arg[3][4] : 0; - a4=(a4*a2); - a3=(a3+a4); - a4=6.; - a3=(a3+a4); - a0=(a0-a3); - a3=10.; - a3=(a2+a3); - a0=(a0/a3); - if (res[0]!=0) res[0][0]=a0; - if (res[0]!=0) res[0][1]=a1; - if (res[0]!=0) res[0][2]=a2; - a2=arg[0]? arg[0][2] : 0; - if (res[0]!=0) res[0][3]=a2; - a1=arg[3]? arg[3][3] : 0; - a2=(a2-a1); - if (res[0]!=0) res[0][4]=a2; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_e_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_e_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_e_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_e_fun_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_e_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_e_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_cost_y_e_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_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* long_cost_y_e_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_fun_jac_ut_xt.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_fun_jac_ut_xt.c deleted file mode 100644 index 3cef9bb..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_fun_jac_ut_xt.c +++ /dev/null @@ -1,199 +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) long_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) -#define casadi_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -static const casadi_int casadi_s1[3] = {0, 0, 0}; -static const casadi_int casadi_s2[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s3[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; -static const casadi_int casadi_s4[14] = {3, 5, 0, 2, 3, 4, 5, 6, 0, 1, 0, 1, 2, 2}; -static const casadi_int casadi_s5[3] = {5, 0, 0}; - -/* long_cost_y_e_fun_jac_ut_xt:(i0[3],i1[],i2[],i3[6])->(o0[5],o1[3x5,6nz],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, a4, a5; - a0=arg[3]? arg[3][2] : 0; - a1=arg[0]? arg[0][0] : 0; - a0=(a0-a1); - a2=arg[0]? arg[0][1] : 0; - a3=casadi_sq(a2); - a4=5.; - a3=(a3/a4); - a4=arg[3]? arg[3][4] : 0; - a5=(a4*a2); - a3=(a3+a5); - a5=6.; - a3=(a3+a5); - a0=(a0-a3); - a3=10.; - a3=(a2+a3); - a0=(a0/a3); - if (res[0]!=0) res[0][0]=a0; - if (res[0]!=0) res[0][1]=a1; - if (res[0]!=0) res[0][2]=a2; - a1=arg[0]? arg[0][2] : 0; - if (res[0]!=0) res[0][3]=a1; - a5=arg[3]? arg[3][3] : 0; - a1=(a1-a5); - if (res[0]!=0) res[0][4]=a1; - a1=(1./a3); - a1=(-a1); - if (res[1]!=0) res[1][0]=a1; - a1=2.0000000000000001e-01; - a2=(a2+a2); - a1=(a1*a2); - a1=(a1+a4); - a1=(a1/a3); - a0=(a0/a3); - a1=(a1+a0); - a1=(-a1); - if (res[1]!=0) res[1][1]=a1; - a1=1.; - if (res[1]!=0) res[1][2]=a1; - if (res[1]!=0) res[1][3]=a1; - if (res[1]!=0) res[1][4]=a1; - if (res[1]!=0) res[1][5]=a1; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_e_fun_jac_ut_xt_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_e_fun_jac_ut_xt_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_fun_jac_ut_xt_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_e_fun_jac_ut_xt_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_fun_jac_ut_xt_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_fun_jac_ut_xt_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_fun_jac_ut_xt_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_e_fun_jac_ut_xt_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_e_fun_jac_ut_xt_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_e_fun_jac_ut_xt_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_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* long_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* long_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 long_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_hess.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_hess.c deleted file mode 100644 index b14ef57..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_e_hess.c +++ /dev/null @@ -1,201 +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) long_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) -#define casadi_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -static const casadi_int casadi_s1[3] = {0, 0, 0}; -static const casadi_int casadi_s2[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; -static const casadi_int casadi_s3[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s4[9] = {3, 3, 0, 1, 3, 3, 1, 0, 1}; - -/* long_cost_y_e_hess:(i0[3],i1[],i2[],i3[5],i4[6])->(o0[3x3,3nz]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a10, a2, a3, a4, a5, a6, a7, a8, a9; - a0=arg[3]? arg[3][0] : 0; - a1=arg[0]? arg[0][1] : 0; - a2=10.; - a2=(a1+a2); - a3=(1./a2); - a3=(a3/a2); - a3=(a0*a3); - if (res[0]!=0) res[0][0]=a3; - a3=(a0/a2); - a4=(a3/a2); - if (res[0]!=0) res[0][1]=a4; - a5=2.0000000000000001e-01; - a6=(a1+a1); - a6=(a5*a6); - a7=arg[4]? arg[4][4] : 0; - a6=(a6+a7); - a6=(a6/a2); - a8=arg[4]? arg[4][2] : 0; - a9=arg[0]? arg[0][0] : 0; - a8=(a8-a9); - a9=casadi_sq(a1); - a10=5.; - a9=(a9/a10); - a10=(a7*a1); - a9=(a9+a10); - a10=6.; - a9=(a9+a10); - a8=(a8-a9); - a8=(a8/a2); - a9=(a8/a2); - a6=(a6+a9); - a6=(a6/a2); - a8=(a8/a2); - a8=(a8/a2); - a6=(a6+a8); - a0=(a0*a6); - a7=(a7*a4); - a0=(a0+a7); - a7=2.; - a3=(a5*a3); - a7=(a7*a3); - a1=(a1+a1); - a5=(a5*a4); - a1=(a1*a5); - a7=(a7-a1); - a0=(a0-a7); - if (res[0]!=0) res[0][2]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_e_hess_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_e_hess_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_hess_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_e_hess_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_hess_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_hess_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_e_hess_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_e_hess_n_in(void) { return 5;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_e_hess_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_e_hess_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_cost_y_e_hess_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_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* long_cost_y_e_hess_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_fun.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_fun.c deleted file mode 100644 index 2c5e7d6..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_fun.c +++ /dev/null @@ -1,176 +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) long_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_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -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[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; - -/* long_cost_y_fun:(i0[3],i1,i2[],i3[6])->(o0[6]) */ -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; - a0=arg[3]? arg[3][2] : 0; - a1=arg[0]? arg[0][0] : 0; - a0=(a0-a1); - a2=arg[0]? arg[0][1] : 0; - a3=casadi_sq(a2); - a4=5.; - a3=(a3/a4); - a4=arg[3]? arg[3][4] : 0; - a4=(a4*a2); - a3=(a3+a4); - a4=6.; - a3=(a3+a4); - a0=(a0-a3); - a3=10.; - a3=(a2+a3); - a0=(a0/a3); - if (res[0]!=0) res[0][0]=a0; - if (res[0]!=0) res[0][1]=a1; - if (res[0]!=0) res[0][2]=a2; - a2=arg[0]? arg[0][2] : 0; - if (res[0]!=0) res[0][3]=a2; - a1=arg[3]? arg[3][3] : 0; - a2=(a2-a1); - if (res[0]!=0) res[0][4]=a2; - a2=arg[1]? arg[1][0] : 0; - if (res[0]!=0) res[0][5]=a2; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_fun_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_cost_y_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_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* long_cost_y_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_fun_jac_ut_xt.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_fun_jac_ut_xt.c deleted file mode 100644 index 6d1e496..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_fun_jac_ut_xt.c +++ /dev/null @@ -1,202 +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) long_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_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -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[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s4[16] = {4, 6, 0, 2, 3, 4, 5, 6, 7, 1, 2, 1, 2, 3, 3, 0}; -static const casadi_int casadi_s5[3] = {6, 0, 0}; - -/* long_cost_y_fun_jac_ut_xt:(i0[3],i1,i2[],i3[6])->(o0[6],o1[4x6,7nz],o2[6x0]) */ -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[3]? arg[3][2] : 0; - a1=arg[0]? arg[0][0] : 0; - a0=(a0-a1); - a2=arg[0]? arg[0][1] : 0; - a3=casadi_sq(a2); - a4=5.; - a3=(a3/a4); - a4=arg[3]? arg[3][4] : 0; - a5=(a4*a2); - a3=(a3+a5); - a5=6.; - a3=(a3+a5); - a0=(a0-a3); - a3=10.; - a3=(a2+a3); - a0=(a0/a3); - if (res[0]!=0) res[0][0]=a0; - if (res[0]!=0) res[0][1]=a1; - if (res[0]!=0) res[0][2]=a2; - a1=arg[0]? arg[0][2] : 0; - if (res[0]!=0) res[0][3]=a1; - a5=arg[3]? arg[3][3] : 0; - a1=(a1-a5); - if (res[0]!=0) res[0][4]=a1; - a1=arg[1]? arg[1][0] : 0; - if (res[0]!=0) res[0][5]=a1; - a1=(1./a3); - a1=(-a1); - if (res[1]!=0) res[1][0]=a1; - a1=2.0000000000000001e-01; - a2=(a2+a2); - a1=(a1*a2); - a1=(a1+a4); - a1=(a1/a3); - a0=(a0/a3); - a1=(a1+a0); - a1=(-a1); - if (res[1]!=0) res[1][1]=a1; - a1=1.; - if (res[1]!=0) res[1][2]=a1; - if (res[1]!=0) res[1][3]=a1; - if (res[1]!=0) res[1][4]=a1; - if (res[1]!=0) res[1][5]=a1; - if (res[1]!=0) res[1][6]=a1; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_fun_jac_ut_xt_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_fun_jac_ut_xt_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_fun_jac_ut_xt_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_fun_jac_ut_xt_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_fun_jac_ut_xt_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_fun_jac_ut_xt_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_fun_jac_ut_xt_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_fun_jac_ut_xt_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_fun_jac_ut_xt_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_fun_jac_ut_xt_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_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* long_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* long_cost_y_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 long_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/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_hess.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_hess.c deleted file mode 100644 index fc43b07..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_cost/long_cost_y_hess.c +++ /dev/null @@ -1,201 +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) long_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_sq CASADI_PREFIX(sq) - -/* 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 - -casadi_real casadi_sq(casadi_real x) { return x*x;} - -static const casadi_int casadi_s0[7] = {3, 1, 0, 3, 0, 1, 2}; -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[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s4[10] = {4, 4, 0, 0, 1, 3, 3, 2, 1, 2}; - -/* long_cost_y_hess:(i0[3],i1,i2[],i3[6],i4[6])->(o0[4x4,3nz]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0, a1, a10, a2, a3, a4, a5, a6, a7, a8, a9; - a0=arg[3]? arg[3][0] : 0; - a1=arg[0]? arg[0][1] : 0; - a2=10.; - a2=(a1+a2); - a3=(1./a2); - a3=(a3/a2); - a3=(a0*a3); - if (res[0]!=0) res[0][0]=a3; - a3=(a0/a2); - a4=(a3/a2); - if (res[0]!=0) res[0][1]=a4; - a5=2.0000000000000001e-01; - a6=(a1+a1); - a6=(a5*a6); - a7=arg[4]? arg[4][4] : 0; - a6=(a6+a7); - a6=(a6/a2); - a8=arg[4]? arg[4][2] : 0; - a9=arg[0]? arg[0][0] : 0; - a8=(a8-a9); - a9=casadi_sq(a1); - a10=5.; - a9=(a9/a10); - a10=(a7*a1); - a9=(a9+a10); - a10=6.; - a9=(a9+a10); - a8=(a8-a9); - a8=(a8/a2); - a9=(a8/a2); - a6=(a6+a9); - a6=(a6/a2); - a8=(a8/a2); - a8=(a8/a2); - a6=(a6+a8); - a0=(a0*a6); - a7=(a7*a4); - a0=(a0+a7); - a7=2.; - a3=(a5*a3); - a7=(a7*a3); - a1=(a1+a1); - a5=(a5*a4); - a1=(a1*a5); - a7=(a7-a1); - a0=(a0-a7); - if (res[0]!=0) res[0][2]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_cost_y_hess_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_cost_y_hess_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_hess_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_cost_y_hess_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_cost_y_hess_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_hess_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_cost_y_hess_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_hess_n_in(void) { return 5;} - -CASADI_SYMBOL_EXPORT casadi_int long_cost_y_hess_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_cost_y_hess_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_cost_y_hess_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_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_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_cost_y_hess_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s4; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_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/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_ode_fun.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_ode_fun.c deleted file mode 100644 index 29598d6..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_ode_fun.c +++ /dev/null @@ -1,149 +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) long_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[7] = {3, 1, 0, 3, 0, 1, 2}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; - -/* long_expl_ode_fun:(i0[3],i1,i2[6])->(o0[3]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0; - a0=arg[0]? arg[0][1] : 0; - if (res[0]!=0) res[0][0]=a0; - a0=arg[0]? arg[0][2] : 0; - if (res[0]!=0) res[0][1]=a0; - a0=arg[1]? arg[1][0] : 0; - if (res[0]!=0) res[0][2]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_expl_ode_fun_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_expl_ode_fun_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_expl_ode_fun_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_expl_ode_fun_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_expl_ode_fun_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_expl_ode_fun_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_expl_ode_fun_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_expl_ode_fun_n_in(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_int long_expl_ode_fun_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_expl_ode_fun_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_expl_ode_fun_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_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* long_expl_ode_fun_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s0; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_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/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_vde_adj.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_vde_adj.c deleted file mode 100644 index d8bd4d0..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_vde_adj.c +++ /dev/null @@ -1,155 +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) long_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[7] = {3, 1, 0, 3, 0, 1, 2}; -static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s2[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; -static const casadi_int casadi_s3[8] = {4, 1, 0, 4, 0, 1, 2, 3}; - -/* long_expl_vde_adj:(i0[3],i1[3],i2,i3[6])->(o0[4]) */ -static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { - casadi_real a0; - a0=0.; - if (res[0]!=0) res[0][0]=a0; - a0=arg[1]? arg[1][0] : 0; - if (res[0]!=0) res[0][1]=a0; - a0=arg[1]? arg[1][1] : 0; - if (res[0]!=0) res[0][2]=a0; - a0=arg[1]? arg[1][2] : 0; - if (res[0]!=0) res[0][3]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_expl_vde_adj_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_expl_vde_adj_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_expl_vde_adj_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_expl_vde_adj_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_expl_vde_adj_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_expl_vde_adj_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_expl_vde_adj_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_expl_vde_adj_n_in(void) { return 4;} - -CASADI_SYMBOL_EXPORT casadi_int long_expl_vde_adj_n_out(void) { return 1;} - -CASADI_SYMBOL_EXPORT casadi_real long_expl_vde_adj_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_expl_vde_adj_name_out(casadi_int i) { - switch (i) { - case 0: return "o0"; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const casadi_int* long_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* long_expl_vde_adj_sparsity_out(casadi_int i) { - switch (i) { - case 0: return casadi_s3; - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT int long_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/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_vde_forw.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_vde_forw.c deleted file mode 100644 index ecde7cc..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/long_model/long_expl_vde_forw.c +++ /dev/null @@ -1,181 +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) long_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[7] = {3, 1, 0, 3, 0, 1, 2}; -static const casadi_int casadi_s1[15] = {3, 3, 0, 3, 6, 9, 0, 1, 2, 0, 1, 2, 0, 1, 2}; -static const casadi_int casadi_s2[5] = {1, 1, 0, 1, 0}; -static const casadi_int casadi_s3[10] = {6, 1, 0, 6, 0, 1, 2, 3, 4, 5}; - -/* long_expl_vde_forw:(i0[3],i1[3x3],i2[3],i3,i4[6])->(o0[3],o1[3x3],o2[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[0]? arg[0][2] : 0; - if (res[0]!=0) res[0][1]=a0; - a0=arg[3]? arg[3][0] : 0; - if (res[0]!=0) res[0][2]=a0; - a0=arg[1]? arg[1][1] : 0; - if (res[1]!=0) res[1][0]=a0; - a0=arg[1]? arg[1][2] : 0; - if (res[1]!=0) res[1][1]=a0; - a0=0.; - if (res[1]!=0) res[1][2]=a0; - a1=arg[1]? arg[1][4] : 0; - if (res[1]!=0) res[1][3]=a1; - a1=arg[1]? arg[1][5] : 0; - if (res[1]!=0) res[1][4]=a1; - if (res[1]!=0) res[1][5]=a0; - a1=arg[1]? arg[1][7] : 0; - if (res[1]!=0) res[1][6]=a1; - a1=arg[1]? arg[1][8] : 0; - if (res[1]!=0) res[1][7]=a1; - if (res[1]!=0) res[1][8]=a0; - a0=arg[2]? arg[2][1] : 0; - if (res[2]!=0) res[2][0]=a0; - a0=arg[2]? arg[2][2] : 0; - if (res[2]!=0) res[2][1]=a0; - a0=1.; - if (res[2]!=0) res[2][2]=a0; - return 0; -} - -CASADI_SYMBOL_EXPORT int long_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 long_expl_vde_forw_alloc_mem(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT int long_expl_vde_forw_init_mem(int mem) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_expl_vde_forw_free_mem(int mem) { -} - -CASADI_SYMBOL_EXPORT int long_expl_vde_forw_checkout(void) { - return 0; -} - -CASADI_SYMBOL_EXPORT void long_expl_vde_forw_release(int mem) { -} - -CASADI_SYMBOL_EXPORT void long_expl_vde_forw_incref(void) { -} - -CASADI_SYMBOL_EXPORT void long_expl_vde_forw_decref(void) { -} - -CASADI_SYMBOL_EXPORT casadi_int long_expl_vde_forw_n_in(void) { return 5;} - -CASADI_SYMBOL_EXPORT casadi_int long_expl_vde_forw_n_out(void) { return 3;} - -CASADI_SYMBOL_EXPORT casadi_real long_expl_vde_forw_default_in(casadi_int i) { - switch (i) { - default: return 0; - } -} - -CASADI_SYMBOL_EXPORT const char* long_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* long_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* long_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* long_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 long_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/longitudinal_mpc_lib/c_generated_code/main_long.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/main_long.c deleted file mode 100644 index 94ff7c1..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/main_long.c +++ /dev/null @@ -1,216 +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/ocp_nlp_interface.h" -#include "acados_c/external_function_interface.h" -#include "acados_solver_long.h" - -// blasfeo -#include "blasfeo/include/blasfeo_d_aux_ext_dep.h" - -#define NX LONG_NX -#define NZ LONG_NZ -#define NU LONG_NU -#define NP LONG_NP -#define NBX LONG_NBX -#define NBX0 LONG_NBX0 -#define NBU LONG_NBU -#define NSBX LONG_NSBX -#define NSBU LONG_NSBU -#define NSH LONG_NSH -#define NSG LONG_NSG -#define NSPHI LONG_NSPHI -#define NSHN LONG_NSHN -#define NSGN LONG_NSGN -#define NSPHIN LONG_NSPHIN -#define NSBXN LONG_NSBXN -#define NS LONG_NS -#define NSN LONG_NSN -#define NG LONG_NG -#define NBXN LONG_NBXN -#define NGN LONG_NGN -#define NY0 LONG_NY0 -#define NY LONG_NY -#define NYN LONG_NYN -#define NH LONG_NH -#define NPHI LONG_NPHI -#define NHN LONG_NHN -#define NPHIN LONG_NPHIN -#define NR LONG_NR - - -int main() -{ - - long_solver_capsule *acados_ocp_capsule = long_acados_create_capsule(); - // there is an opportunity to change the number of shooting intervals in C without new code generation - int N = LONG_N; - // allocate the array and fill it accordingly - double* new_time_steps = NULL; - int status = long_acados_create_with_discretization(acados_ocp_capsule, N, new_time_steps); - - if (status) - { - printf("long_acados_create() returned status %d. Exiting.\n", status); - exit(1); - } - - ocp_nlp_config *nlp_config = long_acados_get_nlp_config(acados_ocp_capsule); - ocp_nlp_dims *nlp_dims = long_acados_get_nlp_dims(acados_ocp_capsule); - ocp_nlp_in *nlp_in = long_acados_get_nlp_in(acados_ocp_capsule); - ocp_nlp_out *nlp_out = long_acados_get_nlp_out(acados_ocp_capsule); - ocp_nlp_solver *nlp_solver = long_acados_get_nlp_solver(acados_ocp_capsule); - void *nlp_opts = long_acados_get_nlp_opts(acados_ocp_capsule); - - // initial condition - int idxbx0[NBX0]; - idxbx0[0] = 0; - idxbx0[1] = 1; - idxbx0[2] = 2; - - 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; - - 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; - - // initial value for control input - double u0[NU]; - u0[0] = 0.0; - // set parameters - double p[NP]; - p[0] = -1.2; - p[1] = 1.2; - p[2] = 0.0; - p[3] = 0.0; - p[4] = 1.45; - p[5] = 0.75; - - for (int ii = 0; ii <= N; ii++) - { - long_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 = long_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("long_acados_solve(): SUCCESS!\n"); - } - else - { - printf("long_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); - - long_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 = long_acados_free(acados_ocp_capsule); - if (status) { - printf("long_acados_free() returned status %d. \n", status); - } - // free solver capsule - status = long_acados_free_capsule(acados_ocp_capsule); - if (status) { - printf("long_acados_free_capsule() returned status %d. \n", status); - } - - return status; -} diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/main_sim_long.c b/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/main_sim_long.c deleted file mode 100644 index 67fa560..0000000 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/main_sim_long.c +++ /dev/null @@ -1,127 +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_long.h" - -#define NX LONG_NX -#define NZ LONG_NZ -#define NU LONG_NU -#define NP LONG_NP - - -int main() -{ - int status = 0; - sim_solver_capsule *capsule = long_acados_sim_solver_create_capsule(); - status = long_acados_sim_create(capsule); - - if (status) - { - printf("acados_create() returned status %d. Exiting.\n", status); - exit(1); - } - - sim_config *acados_sim_config = long_acados_get_sim_config(capsule); - sim_in *acados_sim_in = long_acados_get_sim_in(capsule); - sim_out *acados_sim_out = long_acados_get_sim_out(capsule); - void *acados_sim_dims = long_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[0] = 0.0; - x_current[1] = 0.0; - x_current[2] = 0.0; - - - - - // initial value for control input - double u0[NU]; - u0[0] = 0.0; - // set parameters - double p[NP]; - p[0] = -1.2; - p[1] = 1.2; - p[2] = 0.0; - p[3] = 0.0; - p[4] = 1.45; - p[5] = 0.75; - - long_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 = long_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 = long_acados_sim_free(capsule); - if (status) { - printf("long_acados_sim_free() returned status %d. \n", status); - } - - long_acados_sim_solver_free_capsule(capsule); - - return status; -} diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py b/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py old mode 100755 new mode 100644 index 3b71b22..0fc2338 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py +++ b/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py @@ -3,12 +3,13 @@ import os import time import numpy as np from cereal import log +from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import clip +from openpilot.common.params import Params from openpilot.common.swaglog import cloudlog # WARNING: imports outside of constants will not trigger a rebuild from openpilot.selfdrive.modeld.constants import index_function from openpilot.selfdrive.car.interfaces import ACCEL_MIN -from openpilot.selfdrive.controls.radard import _LEAD_ACCEL_TAU if __name__ == '__main__': # generating code from openpilot.third_party.acados.acados_template import AcadosModel, AcadosOcp, AcadosOcpSolver @@ -42,7 +43,8 @@ CRASH_DISTANCE = .25 LEAD_DANGER_FACTOR = 0.75 LIMIT_COST = 1e6 ACADOS_SOLVER_TYPE = 'SQP_RTI' - +# Default lead acceleration decay set to 50% at 1s +LEAD_ACCEL_TAU = 1.5 # Fewer timestamps don't hurt performance and lead to # much better convergence of the MPC with low iterations @@ -242,8 +244,9 @@ def gen_long_ocp(): class LongitudinalMpc: def __init__(self, mode='acc'): # FrogPilot variables - self.acceleration_offset = 1 - self.braking_offset = 1 + self.params_memory = Params("/dev/shm/params") + + self.update_frogpilot_params() self.mode = mode self.solver = AcadosOcpSolverCython(MODEL_NAME, ACADOS_SOLVER_TYPE, N) @@ -295,10 +298,7 @@ class LongitudinalMpc: for i in range(N): self.solver.cost_set(i, 'Zl', Zl) - def set_weights(self, prev_accel_constraint=True, custom_personalities=False, aggressive_jerk=0.5, standard_jerk=1.0, relaxed_jerk=1.0, personality=log.LongitudinalPersonality.standard): - jerk_factor = get_jerk_factor(custom_personalities, aggressive_jerk, standard_jerk, relaxed_jerk, personality) - jerk_factor /= np.mean(self.acceleration_offset + self.braking_offset) - + def set_weights(self, jerk_factor=1.0, prev_accel_constraint=True, personality=log.LongitudinalPersonality.standard): if self.mode == 'acc': a_change_cost = A_CHANGE_COST if prev_accel_constraint else 0 cost_weights = [X_EGO_OBSTACLE_COST, X_EGO_COST, V_EGO_COST, A_EGO_COST, jerk_factor * a_change_cost, jerk_factor * J_EGO_COST] @@ -327,10 +327,12 @@ class LongitudinalMpc: lead_xv = np.column_stack((x_lead_traj, v_lead_traj)) return lead_xv - def process_lead(self, lead, frogpilot_planner): + def process_lead(self, lead, increased_stopping_distance=0): v_ego = self.x0[1] + increased_stopping_distance = max(increased_stopping_distance - v_ego, 0) + if lead is not None and lead.status: - x_lead = lead.dRel - (frogpilot_planner.increased_stopping_distance if not frogpilot_planner.traffic_mode_active else 0) + x_lead = lead.dRel - increased_stopping_distance v_lead = lead.vLead a_lead = lead.aLeadK a_lead_tau = lead.aLeadTau @@ -339,7 +341,7 @@ class LongitudinalMpc: x_lead = 50.0 v_lead = v_ego + 10.0 a_lead = 0.0 - a_lead_tau = _LEAD_ACCEL_TAU + a_lead_tau = LEAD_ACCEL_TAU # MPC will not converge if immediate crash is expected # Clip lead distance to what is still possible to brake for @@ -356,45 +358,12 @@ class LongitudinalMpc: self.cruise_min_a = min_a self.max_a = max_a - def update(self, radarstate, v_cruise, x, v, a, j, frogpilot_planner, personality=log.LongitudinalPersonality.standard): - if frogpilot_planner.traffic_mode_active: - t_follow = frogpilot_planner.traffic_mode_t_follow - else: - t_follow = get_T_FOLLOW(frogpilot_planner.custom_personalities, frogpilot_planner.aggressive_follow, frogpilot_planner.standard_follow, frogpilot_planner.relaxed_follow, personality) - - self.t_follow = t_follow + def update(self, lead_one, lead_two, v_cruise, x, v, a, j, radarless_model, t_follow, trafficModeActive, personality=log.LongitudinalPersonality.standard): v_ego = self.x0[1] - self.status = radarstate.leadOne.status or radarstate.leadTwo.status + self.status = lead_one.status or lead_two.status - lead_xv_0 = self.process_lead(radarstate.leadOne, frogpilot_planner) - lead_xv_1 = self.process_lead(radarstate.leadTwo, frogpilot_planner) - - # Offset by FrogAi for FrogPilot for a more natural takeoff with a lead - if frogpilot_planner.aggressive_acceleration: - distance_factor = np.maximum(1, lead_xv_0[:,0] - (lead_xv_0[:,1] * t_follow)) - standstill_offset = max(STOP_DISTANCE - (v_ego**COMFORT_BRAKE), 0) - self.acceleration_offset = np.clip((lead_xv_0[:,1] - v_ego) + standstill_offset - COMFORT_BRAKE, 1, distance_factor) - t_follow = t_follow / self.acceleration_offset - else: - self.acceleration_offset = 1 - - # Offset by FrogAi for FrogPilot for a more natural approach to a slower lead - if frogpilot_planner.smoother_braking: - distance_factor = np.maximum(1, lead_xv_0[:,0] - (lead_xv_0[:,1] * t_follow)) - self.braking_offset = np.clip((v_ego - lead_xv_0[:,1]) - COMFORT_BRAKE, 1, distance_factor) - t_follow = t_follow / self.braking_offset - else: - self.braking_offset = 1 - - # LongitudinalPlan variables for onroad driving insights - if self.status: - self.safe_obstacle_distance = int(np.mean(get_safe_obstacle_distance(v_ego, t_follow))) - self.safe_obstacle_distance_stock = int(np.mean(get_safe_obstacle_distance(v_ego, self.t_follow))) - self.stopped_equivalence_factor = int(np.mean(get_stopped_equivalence_factor(lead_xv_0[:,1]))) - else: - self.safe_obstacle_distance = 0 - self.safe_obstacle_distance_stock = 0 - self.stopped_equivalence_factor = 0 + lead_xv_0 = self.process_lead(lead_one, self.increased_stopping_distance if not trafficModeActive else 0) + lead_xv_1 = self.process_lead(lead_two) # To estimate a safe distance from a moving lead, we calculate how much stopping # distance that lead needs as a minimum. We can add that to the current distance @@ -453,8 +422,8 @@ class LongitudinalMpc: self.params[:,4] = t_follow self.run() - if (np.any(lead_xv_0[FCW_IDXS,0] - self.x_sol[FCW_IDXS,0] < CRASH_DISTANCE) and - radarstate.leadOne.modelProb > 0.9): + lead_probability = lead_one.prob if radarless_model else lead_one.modelProb + if (np.any(lead_xv_0[FCW_IDXS,0] - self.x_sol[FCW_IDXS,0] < CRASH_DISTANCE) and lead_probability > 0.9): self.crash_cnt += 1 else: self.crash_cnt = 0 @@ -468,6 +437,9 @@ class LongitudinalMpc: (lead_1_obstacle[0] - lead_0_obstacle[0]): self.source = 'lead1' + if self.params_memory.get_bool("FrogPilotTogglesUpdated"): + self.update_frogpilot_params() + def run(self): # t0 = time.monotonic() # reset = 0 @@ -510,6 +482,13 @@ class LongitudinalMpc: # print(f"long_mpc timings: total internal {self.solve_time:.2e}, external: {(time.monotonic() - t0):.2e} qp {self.time_qp_solution:.2e}, \ # lin {self.time_linearization:.2e} qp_iter {qp_iter}, reset {reset}") + def update_frogpilot_params(self): + params = Params() + + is_metric = params.get_bool("IsMetric") + + longitudinal_tune = params.get_bool("LongitudinalTune") + self.increased_stopping_distance = params.get_int("StoppingDistance") * (1 if is_metric else CV.FOOT_TO_METER) if longitudinal_tune else 0 if __name__ == "__main__": ocp = gen_long_ocp()