static int get_resp_value(int ret) { char resp[STD_RESP_LEN + 1], **argv; int count, result = -1, argc; count = read(serverfd, resp, STD_RESP_LEN); if (count > 0) { resp[count] = '\0'; argc = str_to_argv(resp, &argv); if (argc == -1) printf_die(stderr, "[ERROR] Cannot allocate buffer... exiting!\n", EXIT_FAILURE); if (argc >= 1 && str_isnumber(argv[0])) { eval_response(atoi(argv[0])); if (argc >= 2 && str_isnumber(argv[1])) result = atoi(argv[1]); else result = 0; } free(argv); } if (ret == -1) printf_die(stdout, "Server probably dead or you have been killed!\n"); return result; }
static PyObject * PyResponse_eval_response(PyResponse *self, PyObject *args) { double omega, real, imag; PyObject *result; if (! PyArg_ParseTuple(args, "d", &omega)) return NULL; if (eval_response(omega, self->response, &real, &imag) != 0) return NULL; result = PyComplex_FromDoubles(real, imag); if (result == NULL) return NULL; return result; }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Response *response; double *real_ptr, *imag_ptr; double *omega_ptr; int M, N; int nelements; int rc; int i; if( nlhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_response( prhs[0], &response ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( mxGetClassID( prhs[1] ) != mxDOUBLE_CLASS ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( mxGetNumberOfDimensions( prhs[1] ) != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } M = mxGetM( prhs[1] ); N = mxGetN( prhs[1] ); plhs[0] = mxCreateDoubleMatrix( M, N, mxCOMPLEX ); nelements = M * N; omega_ptr = (double *) mxGetPr( prhs[1] ); real_ptr = (double *) mxGetPr( plhs[0] ); imag_ptr = (double *) mxGetPi( plhs[0] ); for( i = 0; i < nelements; i++ ) { rc = eval_response( *omega_ptr++, response, real_ptr++, imag_ptr++ ); if( rc ) { mxDestroyArray( plhs[0] ); antelope_mex_clear_register( 1 ); mexErrMsgTxt( "eval_response failed" ); } } }