.. _c_interface: C ===== .. _C_main_API: Main solver API --------------- The main C API is imported from the header :code:`osqp.h` and provides the following functions .. doxygenfunction:: osqp_setup .. doxygenfunction:: osqp_solve .. doxygenfunction:: osqp_cleanup .. _C_sublevel_API: Sublevel API ------------ Sublevel C API is also imported from the header :code:`osqp.h` and provides the following functions Warm start ^^^^^^^^^^ OSQP automatically warm starts primal and dual variables from the previous QP solution. If you would like to warm start their values manually, you can use .. doxygenfunction:: osqp_warm_start .. doxygenfunction:: osqp_warm_start_x .. doxygenfunction:: osqp_warm_start_y .. _c_cpp_update_data : Update problem data ^^^^^^^^^^^^^^^^^^^ Problem data can be updated without executing the setup again using the following functions. .. doxygenfunction:: osqp_update_lin_cost .. doxygenfunction:: osqp_update_lower_bound .. doxygenfunction:: osqp_update_upper_bound .. doxygenfunction:: osqp_update_bounds .. doxygenfunction:: osqp_update_P .. doxygenfunction:: osqp_update_A .. doxygenfunction:: osqp_update_P_A .. _c_cpp_data_types : Data types ---------- The most basic used datatypes are * :code:`c_int`: can be :code:`long` or :code:`int` if the compiler flag :code:`DLONG` is set or not * :code:`c_float`: can be a :code:`float` or a :code:`double` if the compiler flag :code:`DFLOAT` is set or not. The relevant structures used in the API are Data ^^^^ .. doxygenstruct:: OSQPData :members: The matrices are defined in `Compressed Sparse Column (CSC) format `_ using zero-based indexing. .. doxygenstruct:: csc :members: Settings ^^^^^^^^ .. doxygenstruct:: OSQPSettings :members: Solution ^^^^^^^^ .. doxygenstruct:: OSQPSolution :members: Info ^^^^^ .. doxygenstruct:: OSQPInfo :members: Workspace ^^^^^^^^^ .. doxygenstruct:: OSQPWorkspace :members: Scaling ^^^^^^^ .. doxygenstruct:: OSQPScaling :members: Polish ^^^^^^ .. doxygenstruct:: OSQPPolish :members: .. TODO: Add sublevel API .. TODO: Add using your own linear system solver