int main(int argc, char * * argv) { FILE * f; size_t n, off, size; uint8_t * buffer; if(argc < 3) { fprintf(stderr, "usage : %s out00_chunk.bin out01_chunk\n", argv[0]); return 1; } f = fopen(argv[1], "rb"); if(!f) { fprintf(stderr, "cannot open '%s'\n", argv[1]); return 2; } fseek(f, 0, SEEK_END); n = ftell(f); fseek(f, 0, SEEK_SET); buffer = malloc(n); if(buffer == NULL) { fprintf(stderr, "malloc() error\n"); return 3; } if(n != fread(buffer, 1, n, f)) fprintf(stderr, "fread() error\n"); fclose(f); off = n; f = fopen(argv[2], "rb"); if(!f) { fprintf(stderr, "cannot open '%s'\n", argv[2]); return 2; } fseek(f, 0, SEEK_END); n = ftell(f); fseek(f, 0, SEEK_SET); size = off + n; buffer = realloc(buffer, size); if(buffer == NULL) { fprintf(stderr, "realloc() error\n"); return 3; } if(n != fread(buffer + off, 1, n, f)) fprintf(stderr, "fread() error\n"); fclose(f); extract_strings(buffer, size); free(buffer); return 0; }
//Extracts values form prhs, which are right hand side values in matlab. Problem::Problem(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { //If field_number != 1 checks are necessary to allow rearanging and skipping fields in input structure int field_number = mxGetFieldNumber(prhs[1],"res"); if(field_number != -1) res = mxGetScalar(mxGetFieldByNumber(prhs[1], 0, field_number)); field_number = mxGetFieldNumber(prhs[1],"prec"); if(field_number != -1) prec = int(mxGetScalar(mxGetFieldByNumber(prhs[1], 0, field_number))); field_number = mxGetFieldNumber(prhs[1],"vars"); if(field_number != -1) extract_vars(mxGetFieldByNumber(prhs[1], 0, field_number), var_names, vars); field_number = mxGetFieldNumber(prhs[1],"cnstrs"); if(field_number != -1) extract_strings(mxGetFieldByNumber(prhs[1], 0, field_number), cnstrs); this->plhs = plhs; this->nlhs = nlhs; };