#include "mex.h"
#include <qucs-core/qucs_interface.h>
#ifndef MEXTRSOLVER_H
#define MEXTRSOLVER_H
class mextrsolver
{
public:
mextrsolver();
virtual ~mextrsolver();
void printx(void);
int prepare_netlist(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void init_sync(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void init_async(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
int stepsolve_sync(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void acceptstep_sync(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
int stepsolve_async(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void acceptstep_async(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void rejectstep_async(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
int getsolution(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
int getN(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
int getM(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void getJac(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void setecvs(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void getiprobe(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void getvprobe(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
void getnodev(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
private:
qucs::trsolver_interface qtr;
};
void mextrsolvermessage(int, const char*, ...);
#endif