| 0 | 1 /* | 
|  | 2 *  This program is free software; you can redistribute it and/or modify | 
|  | 3 *  it under the terms of the GNU General Public License as published by | 
|  | 4 *  the Free Software Foundation; either version 3 of the License, or | 
|  | 5 *  (at your option) any later version. | 
|  | 6 * | 
|  | 7 *   Written (W) 2010-2011 Jonas Behr, Regina Bohnert, Gunnar Raetsch | 
|  | 8 *   Copyright (C) 2010-2011 Max Planck Society | 
|  | 9 */ | 
|  | 10 | 
|  | 11 | 
|  | 12 #include <stdio.h> | 
|  | 13 #include <mex.h> | 
|  | 14 #include "mex_input.h" | 
|  | 15 | 
|  | 16 char *get_string(const mxArray *prhs) { | 
|  | 17   char *buf; | 
|  | 18   int buflen; | 
|  | 19   if (!prhs) | 
|  | 20     mexErrMsgTxt("get_string called with NULL pointer arg"); | 
|  | 21   if (!mxIsChar(prhs)) | 
|  | 22     mexErrMsgTxt("input is not a string"); | 
|  | 23   if (mxGetM(prhs) != 1) | 
|  | 24     mexErrMsgTxt("input is not a row vector"); | 
|  | 25   buflen = mxGetN(prhs) + 1; | 
|  | 26   buf = (char*) malloc(buflen); | 
|  | 27   /* copy the string from prhs into buf and add terminating NULL char */ | 
|  | 28   if (mxGetString(prhs, buf, buflen)) | 
|  | 29     mexErrMsgTxt("not enough space"); | 
|  | 30   return buf; | 
|  | 31 } | 
|  | 32 | 
|  | 33 bool get_bool(const mxArray *prhs) | 
|  | 34 { | 
|  | 35 	const int M = mxGetM(prhs); | 
|  | 36 	const int N = mxGetN(prhs); | 
|  | 37 	double *f = (double*) mxGetPr(prhs); | 
|  | 38 | 
|  | 39 	if (!prhs) | 
|  | 40 		mexErrMsgTxt("Arg is NULL pointer"); | 
|  | 41 	if (M != 1 || N != 1) | 
|  | 42 		mexErrMsgTxt("Arg is not a scalar"); | 
|  | 43 	if (f[0] != 0) | 
|  | 44 		return true; | 
|  | 45 	return false; | 
|  | 46 } | 
|  | 47 | 
|  | 48 int get_int(const mxArray *prhs) | 
|  | 49 { | 
|  | 50 	const int M = mxGetM(prhs); | 
|  | 51 	const int N = mxGetN(prhs); | 
|  | 52 	double *f = (double*) mxGetPr(prhs); | 
|  | 53 | 
|  | 54 	if (!prhs) | 
|  | 55 		mexErrMsgTxt("Arg is NULL pointer"); | 
|  | 56 	if (M != 1 || N != 1) | 
|  | 57 		mexErrMsgTxt("Arg is not a scalar"); | 
|  | 58 | 
|  | 59 	return (int) f[0]; | 
|  | 60 } |