/*
* 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 . ;
*/
# ifndef INTERFACES_ACADOS_C_CONDENSING_INTERFACE_H_
# define INTERFACES_ACADOS_C_CONDENSING_INTERFACE_H_
# ifdef __cplusplus
extern " C " {
# endif
# include "acados/ocp_qp/ocp_qp_full_condensing.h"
# include "acados/ocp_qp/ocp_qp_partial_condensing.h"
typedef enum {
PARTIAL_CONDENSING ,
FULL_CONDENSING ,
} condensing_t ;
typedef struct
{
condensing_t condensing_type ;
} condensing_plan ;
typedef struct
{
ocp_qp_xcond_config * config ;
void * dims ;
void * opts ;
void * mem ;
void * work ;
} condensing_module ;
ocp_qp_xcond_config * ocp_qp_condensing_config_create ( condensing_plan * plan ) ;
//
void * ocp_qp_condensing_opts_create ( ocp_qp_xcond_config * config , void * dims_ ) ;
//
acados_size_t ocp_qp_condensing_calculate_size ( ocp_qp_xcond_config * config , void * dims_ , void * opts_ ) ;
//
condensing_module * ocp_qp_condensing_assign ( ocp_qp_xcond_config * config , void * dims_ ,
void * opts_ , void * raw_memory ) ;
//
condensing_module * ocp_qp_condensing_create ( ocp_qp_xcond_config * config , void * dims_ ,
void * opts_ ) ;
//
int ocp_qp_condense ( condensing_module * module , void * qp_in , void * qp_out ) ;
//
int ocp_qp_expand ( condensing_module * module , void * qp_in , void * qp_out ) ;
# ifdef __cplusplus
} /* extern "C" */
# endif
# endif // INTERFACES_ACADOS_C_CONDENSING_INTERFACE_H_