#include "casadi/core/casadi_calculus.hpp"
#include "casadi/core/casadi_exception.hpp"
#include "casadi/core/casadi_meta.hpp"
#include "casadi/core/casadi_options.hpp"
#include "casadi/core/casadi_types.hpp"
#include "casadi/core/function/control_simulator.hpp"
#include "casadi/core/function/custom_function.hpp"
#include "casadi/core/function/external_function.hpp"
#include "casadi/core/function/function.hpp"
#include "casadi/core/function/homotopy_nlp_solver.hpp"
#include "casadi/core/function/implicit_function.hpp"
#include "casadi/core/function/integrator.hpp"
#include "casadi/core/function/io_interface.hpp"
#include "casadi/core/function/linear_solver.hpp"
#include "casadi/core/function/lp_solver.hpp"
#include "casadi/core/function/mx_function.hpp"
#include "casadi/core/function/nlp_solver.hpp"
#include "casadi/core/function/nullspace.hpp"
#include "casadi/core/function/ocp_solver.hpp"
#include "casadi/core/function/parallelizer.hpp"
#include "casadi/core/function/qcqp_solver.hpp"
#include "casadi/core/function/qp_solver.hpp"
#include "casadi/core/function/sdp_solver.hpp"
#include "casadi/core/function/sdqp_solver.hpp"
#include "casadi/core/function/simulator.hpp"
#include "casadi/core/function/socp_solver.hpp"
#include "casadi/core/function/stabilized_qp_solver.hpp"
#include "casadi/core/function/sx_function.hpp"
#include "casadi/core/function/symbolic_qr.hpp"
#include "casadi/core/functor.hpp"
#include "casadi/core/generic_type.hpp"
#include "casadi/core/matrix/generic_expression.hpp"
#include "casadi/core/matrix/generic_matrix.hpp"
#include "casadi/core/matrix/matrix.hpp"
#include "casadi/core/matrix/matrix_tools.hpp"
#include "casadi/core/matrix/slice.hpp"
#include "casadi/core/matrix/sparsity.hpp"
#include "casadi/core/matrix/sparsity_tools.hpp"
#include "casadi/core/mx/mx.hpp"
#include "casadi/core/mx/mx_tools.hpp"
#include "casadi/core/options_functionality.hpp"
#include "casadi/core/printable_object.hpp"
#include "casadi/core/shared_object.hpp"
#include "casadi/core/std_vector_tools.hpp"
#include "casadi/core/sx/sx_element.hpp"
#include "casadi/core/sx/sx_tools.hpp"
#include "casadi/core/weak_ref.hpp"
#include "casadi/interfaces/snopt/snopt_solver.hpp"
#include <cmath>
#include <sstream>
#include <stdexcept>
#include "../marshal.hpp"

// ================== delete UserType (Namespace ["casadi"]) (Name "SnoptSolver")===============
// classType: UserType (Namespace ["casadi"]) (Name "SnoptSolver")
extern "C"
    void delete_casadi__SnoptSolver(casadi::SnoptSolver* obj);
void delete_casadi__SnoptSolver(casadi::SnoptSolver* obj){
    delete obj;
}

// ================== Constructor method: "CONSTRUCTOR" ===============
// class: "casadi::SnoptSolver"
// cppName: "casadi::SnoptSolver"
// cWrapperName: "casadi__SnoptSolver__CONSTRUCTOR__0"
// protoArgs: "(std::string ** err_msg, casadi::Function* x0)"
// args: "(x0_)"
// rettype: UserType (Namespace ["casadi"]) (Name "SnoptSolver")
// cWrapperRetType: "casadi::SnoptSolver*"
// proto: "casadi::SnoptSolver* casadi__SnoptSolver__CONSTRUCTOR__0(std::string ** err_msg, casadi::Function* x0)"
// call: "casadi::SnoptSolver(x0_)"
// params: [Ref (Const (UserType (Namespace ["casadi"]) (Name "Function")))]
extern "C"
    casadi::SnoptSolver* casadi__SnoptSolver__CONSTRUCTOR__0(std::string ** err_msg, casadi::Function* x0);
casadi::SnoptSolver* casadi__SnoptSolver__CONSTRUCTOR__0(std::string ** err_msg, casadi::Function* x0){
    try {
        casadi::Function x0_ = Marshaling<casadi::Function,casadi::Function*>::marshal(x0);

        casadi::SnoptSolver ret = casadi::SnoptSolver(x0_);
        return WrapReturn< casadi::SnoptSolver*, casadi::SnoptSolver >::wrapReturn( ret );
    } catch (std::exception& ex) {
         *err_msg = new std::string(ex.what());
         return 0;
    }
}


// ================== Constructor method: "CONSTRUCTOR" ===============
// class: "casadi::SnoptSolver"
// cppName: "casadi::SnoptSolver"
// cWrapperName: "casadi__SnoptSolver__CONSTRUCTOR__1"
// protoArgs: "(std::string ** err_msg)"
// args: "()"
// rettype: UserType (Namespace ["casadi"]) (Name "SnoptSolver")
// cWrapperRetType: "casadi::SnoptSolver*"
// proto: "casadi::SnoptSolver* casadi__SnoptSolver__CONSTRUCTOR__1(std::string ** err_msg)"
// call: "casadi::SnoptSolver()"
// params: []
extern "C"
    casadi::SnoptSolver* casadi__SnoptSolver__CONSTRUCTOR__1(std::string ** err_msg);
casadi::SnoptSolver* casadi__SnoptSolver__CONSTRUCTOR__1(std::string ** err_msg){
    try {

        casadi::SnoptSolver ret = casadi::SnoptSolver();
        return WrapReturn< casadi::SnoptSolver*, casadi::SnoptSolver >::wrapReturn( ret );
    } catch (std::exception& ex) {
         *err_msg = new std::string(ex.what());
         return 0;
    }
}


// ================== Static method: "creator" ===============
// class: "casadi::SnoptSolver"
// cppName: "casadi::SnoptSolver::creator"
// cWrapperName: "casadi__SnoptSolver__creator"
// protoArgs: "(std::string ** err_msg, casadi::Function* x0)"
// args: "(x0_)"
// rettype: UserType (Namespace ["casadi"]) (Name "NLPSolver")
// cWrapperRetType: "casadi::NLPSolver*"
// proto: "casadi::NLPSolver* casadi__SnoptSolver__creator(std::string ** err_msg, casadi::Function* x0)"
// call: "casadi::SnoptSolver::creator(x0_)"
// params: [Ref (Const (UserType (Namespace ["casadi"]) (Name "Function")))]
extern "C"
    casadi::NLPSolver* casadi__SnoptSolver__creator(std::string ** err_msg, casadi::Function* x0);
casadi::NLPSolver* casadi__SnoptSolver__creator(std::string ** err_msg, casadi::Function* x0){
    try {
        casadi::Function x0_ = Marshaling<casadi::Function,casadi::Function*>::marshal(x0);

        casadi::NLPSolver ret = casadi::SnoptSolver::creator(x0_);
        return WrapReturn< casadi::NLPSolver*, casadi::NLPSolver >::wrapReturn( ret );
    } catch (std::exception& ex) {
         *err_msg = new std::string(ex.what());
         return 0;
    }
}


// ================== Normal method: "setOptionsFromFile" ===============
// class: "casadi::SnoptSolver"
// cppName: "casadi::SnoptSolver::setOptionsFromFile"
// cWrapperName: "casadi__SnoptSolver__setOptionsFromFile"
// protoArgs: "(std::string ** err_msg, casadi::SnoptSolver* obj, std::string* x0)"
// args: "(x0_)"
// rettype: CVoid
// cWrapperRetType: "void"
// proto: "void casadi__SnoptSolver__setOptionsFromFile(std::string ** err_msg, casadi::SnoptSolver* obj, std::string* x0)"
// call: "obj->setOptionsFromFile(x0_)"
// params: [Ref (Const StdString)]
extern "C"
    void casadi__SnoptSolver__setOptionsFromFile(std::string ** err_msg, casadi::SnoptSolver* obj, std::string* x0);
void casadi__SnoptSolver__setOptionsFromFile(std::string ** err_msg, casadi::SnoptSolver* obj, std::string* x0){
    try {
        std::string x0_ = Marshaling<std::string,std::string*>::marshal(x0);

    obj->setOptionsFromFile(x0_);
    } catch (std::exception& ex) {
         *err_msg = new std::string(ex.what());
         return;
    }
}



