void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { int n; if( nlhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 0 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } n = elog_mark(); plhs[0] = CreateDouble( (double) n ); if( plhs[0] == NULL ) { mexErrMsgTxt( "elog_mark: failed to create return value" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { #ifndef HAVE_CGEOM mexErrMsgTxt( "No cggrid support in your version of Antelope" ); #else CGGrid *cgg; if( nlhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_cggrid( prhs[0], &cgg ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } plhs[0] = CreateDouble( (double) cgg->nx ); if( ! plhs[0] ) { mexErrMsgTxt( "Failed to create return value"); } #endif }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double orbfd; char *regex; int nselected; if( nlhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( ! get_scalar( prhs[0], &orbfd ) ) { antelope_mexUsageMsgTxt ( USAGE ); mexErrMsgTxt( "orbreject: bad orb file descriptor\n" ); } if( ! mtlb_get_string( prhs[1], ®ex ) ) { antelope_mexUsageMsgTxt ( USAGE ); } nselected = mex_orbreject( (int) orbfd, regex ); plhs[0] = CreateDouble( (double) nselected ); if( plhs[0] == NULL ) { mexErrMsgTxt( "orbreject: failed to create return value" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double nsamp_double; double time; double endtime; if( nrhs != 3 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[0], &time ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[1], &nsamp_double ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[2], &endtime ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } plhs[0] = CreateDouble( SAMPRATE( time, (int) nsamp_double, endtime ) ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double orbfd; if( nlhs > 0 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( ! get_scalar( prhs[0], &orbfd ) ) { mexErrMsgTxt( "orbclose: bad orb file descriptor\n" ); } if( mex_orbclose( (int) orbfd ) ) { antelope_mex_clear_register( 1 ); mexErrMsgTxt ( "orbclose: failed\n" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { char *message; if( nlhs > 0 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[0], &message ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } elog_debug( 0, message ); mxFree( message ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr db; float *data = NULL; double *doublep; mwSize *dims; int nsamp; int rc; int i; mexWarnMsgTxt ( "\ntrputwf is DEPRECATED; switch to trsave_wf\n" ); if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &db ) ) { 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; } dims = (mwSize *) mxGetDimensions( prhs[1] ); if( dims[1] != 1 && dims[0] != 1 ) mexErrMsgTxt ( "trputwf: DATA must have dimensions Nx1 or 1xN\n" ); if( dims[1] == 1 ) nsamp = dims[0]; else nsamp = dims[1]; doublep = mxGetPr( prhs[1] ); data = mxCalloc( nsamp, sizeof( float ) ); for( i=0; i<nsamp; i++ ) { data[i] = (float) doublep[i]; } rc = trputwf( db, data ); antelope_mex_clear_register( 1 ); mxFree( data ); if( rc == dbINVALID ) { mexErrMsgTxt( "trputwf: failed\n" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr db; Tbl *groupfields = 0; char errmsg[STRSZ]; int rhs_index; long type = 1; double type_fp = 1; if( nrhs < 2 || nrhs > 3 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &db ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_stringtbl( prhs[1], &groupfields ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs == 3 ) { if( ! get_scalar( prhs[2], &type_fp ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else { type = (long) type_fp; } } db = dbgroup( db, groupfields, NULL, type ); antelope_mex_clear_register( 1 ); freetbl( groupfields, 0 ); if( db.table == dbINVALID ) { mexErrMsgTxt( "dbgroup: group failed" ); } plhs[0] = CreateDbptrStructFromDbptr( db ); if( plhs[0] == NULL ) { sprintf( errmsg, "dbgroup: failed to create database-pointer " ); strcat( errmsg, "structure for result" ); mexErrMsgTxt( errmsg ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { char *a; char *b; char *res; char *hold; char *another; int nleft; if( nrhs < 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[0], &a ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[1], &b ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } res = concatpaths( a, b, NULL ); nleft = nrhs - 2; while( nleft > 0 ) { nleft--; hold = res; if( ! mtlb_get_string( prhs[nrhs-1-nleft], &another ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } res = concatpaths( hold, another, NULL ); free( hold ); } plhs[0] = mxCreateString( res ); if( res != (char *) NULL ) { free( res ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double delta; double depth; char **phases = 0; double *slowness = 0; double *pr; long narrivals; Tbl *phasetbl; long i; if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[0], &delta ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[1], &depth ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } narrivals = arr_slowness( delta, depth, &phases, &slowness ); if( narrivals <= 0 ) { return; } phasetbl = newtbl( narrivals ); for( i = 0; i < narrivals; i++ ) { pushtbl( phasetbl, phases[i] ); } plhs[0] = mxCreateDoubleMatrix( narrivals, 1, mxREAL ); pr = mxGetPr( plhs[0] ); for( i = 0; i < narrivals; i++ ) { pr[i] = slowness[i]; } plhs[1] = stringtbl2cellstr( phasetbl ); freetbl( phasetbl, 0 ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr db; char *tablename = 0; char filename[FILENAME_MAX]; char status[STRSZ]; int rc; if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &db ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[1], &tablename ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } rc = dbextfile( db, tablename, filename ); antelope_mex_clear_register( 1 ); switch( rc ) { case 2: sprintf( status, "file exists, is compressed, and is readable" ); break; case 1: sprintf( status, "file exists and is readable" ); break; case 0: sprintf( status, "file does not exist, but directory is writeable" ); break; case -1: sprintf( status, "file does not exist; directory is not writeable" ); break; default: sprintf( status, "file status unknown" ); break; } mxFree( tablename ); plhs[0] = mxCreateString( filename ); plhs[1] = mxCreateString( status ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr tr; char *newchan[3]; Tbl *newchan_tbl; int rc; int i; if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &tr ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_stringtbl( prhs[1], &newchan_tbl ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( maxtbl( newchan_tbl ) != 3 ) { freetbl( newchan_tbl, 0 ); mexErrMsgTxt( "NEWCHANS array must have three channel names" ); } else { for( i = 0; i < 3; i++ ) { newchan[i] = gettbl( newchan_tbl, i ); } } rc = rotate_to_standard( tr, newchan ); antelope_mex_clear_register( 1 ); freetbl( newchan_tbl, 0 ); plhs[0] = CreateDouble( (double) rc ); if( plhs[0] == NULL ) { mexErrMsgTxt( "trrotate_to_standard: failed to create return value" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double orbfd; int version; if( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( ! get_scalar( prhs[0], &orbfd ) ) { mexErrMsgTxt( "orbping: bad orb file descriptor\n" ); } if( mex_orbping( (int) orbfd, &version ) ) { antelope_mex_clear_register( 1 ); mexErrMsgTxt ( "orbping: failed\n" ); } plhs[0] = CreateDouble( (double) version ); if( plhs[0] == NULL ) { mexErrMsgTxt( "orbping: failed to create return value" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { char *filename; FILE *fp; Response *response; if( nlhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_trimmed_string( prhs[0], &filename ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( ( fp = fopen( filename, "r" ) ) == NULL ) { perror( "dbresponse" ); mxFree( filename ); mexErrMsgTxt( "Failed to open response file." ); } else { mxFree( filename ); } if( read_response( fp, &response ) != 0 ) { fclose( fp ); antelope_mex_clear_register( 1 ); mexErrMsgTxt( "Failed to read response file." ); } else { antelope_mex_clear_register( 1 ); fclose( fp ); } plhs[0] = Response2mxArray( response ); if( ! plhs[0] ) { mexErrMsgTxt( "Failed to create an object of class dbresponse"); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Pf *pf; char *name; char *mystring; mxArray *input[1]; if( nlhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_pf( prhs[0], &pf ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[1], &name ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } pfconfig( "ask", (void *) matlabPfprompt ); mystring = pfget_string( pf, name ); antelope_mex_clear_register( 1 ); mxFree( name ); if( mystring == NULL ) { mexErrMsgTxt( "pfget_num: Couldn't get specified value" ); } else { input[0] = mxCreateString( mystring ); mexCallMATLAB( 1, plhs, 1, input, "str2double" ); mxDestroyArray( input[0] ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr db; char *record; int use_dbscratch = 0; int rc; if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &db ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[1], &record ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( STREQ( record, "dbSCRATCH" ) ) { mxFree( record ); record = 0; } rc = dbadd( db, record ); antelope_mex_clear_register( 1 ); if( record ) mxFree( record ); if( rc < 0 ) { mexErrMsgTxt( "dbadd: failed to add record" ); } else { plhs[0] = CreateDouble( (double) rc ); if( plhs[0] == NULL ) { mexErrMsgTxt( "dbadd: failed to create return value" ); } } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { int type; char *string; int printflag; double *doublep; int *intp; int i; char **messages; int *count; int NMAX; int next, wrapflag; char s[STRSZ]; if( nrhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs == 1 ) { if( ! mtlb_get_string( prhs[0], &string ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! STREQ( string, "print" ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else { mxFree( string ); printflag = 1; } } else { printflag = 0; } antelope_mex_clear_register ( printflag ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr tr; if( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &tr ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } trdestroy( &tr ); antelope_mex_clear_register( 1 ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr tr; char *tr_path = 0; char *schema_name = 0; char errmsg[STRSZ]; if( nrhs > 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( nrhs >= 1 && ! get_trimmed_string( prhs[0], &tr_path ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( nrhs == 2 && ! mtlb_get_string( prhs[1], &schema_name ) ) { mxFree( tr_path ); antelope_mexUsageMsgTxt ( USAGE ); return; } tr = trnew( tr_path, schema_name ); antelope_mex_clear_register( 1 ); if( tr_path ) mxFree( tr_path ); if( schema_name ) mxFree( schema_name ); if( tr.database == dbINVALID ) { mexErrMsgTxt( "trnew: failed to create new trace database" ); } plhs[0] = CreateDbptrStructFromDbptr( tr ); if( plhs[0] == NULL ) { sprintf( errmsg, "trnew: failed to create database-pointer " ); strcat( errmsg, "structure for result" ); mexErrMsgTxt( errmsg ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { char *envname = NULL; char *dirname = NULL; char *filename = NULL; char *suffix = NULL; char *fname = NULL; if( nrhs != 4 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[0], &envname ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[1], &dirname ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[2], &filename ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[3], &suffix ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } fname = datapath( envname, dirname, filename, suffix ); plhs[0] = mxCreateString( fname ); if( fname != (char *) NULL ) { free( fname ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { int rc; int argc = 1; char **argv; allot( char **, argv, 1 ); if( nrhs == 0 ) { argv[0] = strdup( "Matlab" ); } else if( nrhs == 1 ) { if( ! mtlb_get_string( prhs[0], &argv[0] ) ) { free( argv ); antelope_mexUsageMsgTxt ( USAGE ); return; } } else { free( argv ); antelope_mexUsageMsgTxt ( USAGE ); return; } rc = elog_init( argc, argv ); elog_set( ELOG_CALLBACK, 0, antelope_mex_elog_callback ); strcpy( Program_Name, argv[0] ); plhs[0] = CreateDouble( (double) rc ); if( plhs[0] == NULL ) { mexErrMsgTxt( "elog_init: failed to create return value" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { char *rel; char abs[FILENAME_MAX] = ""; if( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[0], &rel ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } abspath( rel, abs ); plhs[0] = mxCreateString( abs ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr db; char *table; char errmsg[STRSZ]; if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &db ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[1], &table ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } db = dbseparate( db, table ); antelope_mex_clear_register( 1 ); if( db.table == dbINVALID ) { mexErrMsgTxt( "dbseparate: returned invalid database pointer" ); } mxFree( table ); plhs[0] = CreateDbptrStructFromDbptr( db ); if( plhs[0] == NULL ) { sprintf( errmsg, "dbseparate: failed to create " ); strcat( errmsg, "database-pointer structure for result" ); mexErrMsgTxt( errmsg ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double orbfd; double time; int nselected; int pktid; if( nlhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( ! get_scalar( prhs[0], &orbfd ) ) { antelope_mexUsageMsgTxt ( USAGE ); mexErrMsgTxt( "orbafter: bad orb file descriptor\n" ); } if( ! get_scalar( prhs[1], &time ) ) { antelope_mexUsageMsgTxt ( USAGE ); } pktid = mex_orbafter( (int) orbfd, time ); antelope_mex_clear_register ( 1 ); plhs[0] = CreateDouble( (double) pktid ); if( plhs[0] == NULL ) { mexErrMsgTxt( "orbafter: failed to create return value" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr tr; double tolerance; if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &tr ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[1], &tolerance ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } trsplice( tr, tolerance, 0, 0 ); antelope_mex_clear_register( 1 ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double time0; double samprate; double time1; int sampnum_indexed_by_0; int sampnum_indexed_by_1; if( nrhs != 3 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[0], &time0 ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[1], &samprate ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[2], &time1 ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } sampnum_indexed_by_0 = TIME2SAMP( time0, samprate, time1 ); /* WAKE UP */ sampnum_indexed_by_1 = sampnum_indexed_by_0 + 1; plhs[0] = CreateDouble( (double) sampnum_indexed_by_1 ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double n; char *log; if( nlhs > 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_scalar( prhs[0], &n ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } log = elog_string( (int) n ); if( log == (char *) NULL ) { mexErrMsgTxt( "elog_string: Null string from elog_string(3)" ); } plhs[0] = mxCreateString( log ); if( plhs[0] == NULL ) { mexErrMsgTxt( "elog_string: Failed to create return value" ); } }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr db; char *result = NULL; char *dbscratch_string; int use_dbscratch = 0; long n; int rc; double *doublep; int *intp; if( nrhs < 1 || nrhs > 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! get_dbptr( prhs[0], &db ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( nrhs == 2 ) { if( ! mtlb_get_string( prhs[1], &dbscratch_string ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! STREQ( dbscratch_string, "dbSCRATCH" ) ) { mxFree( dbscratch_string ); antelope_mexUsageMsgTxt ( USAGE ); return; } else { mxFree( dbscratch_string ); use_dbscratch = 1; } } if( use_dbscratch ) { if( dbget( db, NULL ) < 0 ) { antelope_mex_clear_register( 1 ); mexErrMsgTxt( "dbget into scratch record failed" ); } } else { rc = dbquery(db, dbSIZE, &n); antelope_mex_clear_register( 1 ); if( rc == dbINVALID ) { mexErrMsgTxt( "dbget: dbquery failed" ); } result = (char *) mxCalloc( n+3, sizeof( char ) ); if( dbget( db, result ) < 0 ) { antelope_mex_clear_register( 1 ); mxFree( result ); mexErrMsgTxt( "dbget failed\n" ); } else { if ( db.field != dbALL ) { copystrip( result, result, n ); } plhs[0] = mxCreateString( result ); mxFree( result ); } } antelope_mex_clear_register( 1 ); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { Dbptr db; Point *polygon; int nrec; int single_record; double NaN; double *lat; double *lon; int nvertices; int nsaved,closed; int i,j; double *lat_pr, *lon_pr; Expression *expr; int maxneeded; int sumpoints; int *nanindices; char closedstr[2]; NaN=mxGetNaN(); if ( nrhs != 1 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if ( ! get_dbptr( prhs[0], &db ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if ( nlhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } if (dbquery( db, dbRECORD_COUNT, &nrec) < 0) { antelope_mex_clear_register( 1 ); mexErrMsgTxt("readpolygon: dbquery(recordcount) failed\n"); } if (nrec <= 0 ) { mexErrMsgTxt("readpolygon: no rows in database view\n"); } if (db.record == dbALL) { if (nrec == 1) { single_record= 1; db.record=0; dbgetv(db,0,"npoints",&sumpoints,0); maxneeded= (nrec*2) + sumpoints; } else { single_record=0; db.record=0; dbex_compile(db,"sum(npoints)",&expr,dbINTEGER); dbex_eval(db,expr,0,&sumpoints); dbex_free(expr); maxneeded= (nrec*2) + sumpoints; nanindices=mxCalloc(nrec,sizeof(int)); } } else { if (db.record >= 0) { single_record= 1; dbgetv(db,0,"npoints",&sumpoints,"closed",&closedstr,0); maxneeded= (nrec*2) + sumpoints; } else { mexErrMsgTxt("readpolygon: unspecified subset?!?\n"); } } nsaved= 0; nvertices= readPolygon(db,&polygon); lat= mxCalloc(maxneeded+1, sizeof(double)); lon= mxCalloc(maxneeded+1, sizeof(double)); for (j= 0; j < nvertices; j++) { lat[j]= polygon[j].lat; lon[j]= polygon[j].lon; } nsaved += nvertices; free(polygon); /* eventually close polygon*/ if (strncmp(closedstr,"y",1)==0) { if ( (lat[nvertices-1] != lat[0]) || (lon[nvertices-1] != lon[0]) ) { nsaved++; lat[nsaved-1]= lat[0]; lon[nsaved-1]= lon[0]; } } if ( (single_record == 0) && (nrec > 1) ) { for (i= 1; i < nrec; i++) { db.record=i; dbgetv(db,0,"closed",&closedstr,0); nvertices= readPolygon(db,&polygon); /* separate (sub)polygons by NaN */ lat[nsaved + 1]=NaN; lon[nsaved + 1]=NaN; nanindices[i-1]= nsaved+1; nsaved++; for (j= 0; j < nvertices; j++) { lat[j+nsaved]= polygon[j].lat; lon[j+nsaved]= polygon[j].lon; } nsaved += nvertices; /* eventually close polygon*/ if (strncmp(closedstr,"y",1)==0) { if ( (lat[nvertices-1] != lat[0]) || (lon[nvertices-1] != lon[0]) ) { lat[nsaved]= lat[nsaved-nvertices]; lon[nsaved]= lon[nsaved-nvertices]; nsaved++; } } free(polygon); } } plhs[0] = mxCreateDoubleMatrix(nsaved,1,mxREAL); lat_pr=(double *)mxGetPr(plhs[0]); memcpy(lat_pr, lat, nsaved*sizeof(double)); plhs[1] = mxCreateDoubleMatrix(nsaved,1,mxREAL); lon_pr=(double *)mxGetPr(plhs[1]); memcpy(lon_pr, lon, nsaved*sizeof(double)); /* NaN does NOT pass the memcpy */ if (single_record == 0) { for (i=0; i < nrec-1; i++) { lat_pr[nanindices[i]-1]=NaN; lon_pr[nanindices[i]-1]=NaN; } mxFree(nanindices); } mxFree(lat); mxFree(lon); }
void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { char *formatstring; char *timestring; mxArray *timestr; double *epoch; int M, N; int nsubs = 2; int subs[2]; int cell_index; int i, j; if( nrhs != 2 ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( mxGetClassID( prhs[0] ) != mxDOUBLE_CLASS ) { antelope_mexUsageMsgTxt ( USAGE ); return; } else if( ! mtlb_get_string( prhs[1], &formatstring ) ) { antelope_mexUsageMsgTxt ( USAGE ); return; } epoch = mxGetPr( prhs[0] ); M = mxGetM( prhs[0] ); N = mxGetN( prhs[0] ); if( M == 1 && N == 1 ) { timestring = epoch2str( *epoch, formatstring ); antelope_mex_clear_register( 1 ); plhs[0] = mxCreateString( timestring ); free( timestring ); } else { plhs[0] = mxCreateCellMatrix( M, N ); for( i = 0; i < M; i++ ) { for( j = 0; j < N; j++ ) { timestring = epoch2str( *(epoch + i*N + j), formatstring ); antelope_mex_clear_register( 1 ); timestr = mxCreateString( timestring ); free( timestring ); subs[0] = i; subs[1] = j; cell_index = mxCalcSingleSubscript( plhs[0], nsubs, subs ); mxSetCell( plhs[0], cell_index, timestr ); } } } mxFree( formatstring ); }