void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){ if( nrhs!=4 ) mexErrMsgTxt("This function requires 3 arguments\n"); if( !mxIsNumeric(prhs[0]) ) mexErrMsgTxt("parameter 1 missing!\n"); if( !mxIsNumeric(prhs[1]) ) mexErrMsgTxt("parameter 2 missing!\n"); if( !mxIsNumeric(prhs[2]) ) mexErrMsgTxt("parameter 3 missing!\n"); if( !mxIsNumeric(prhs[3]) ) mexErrMsgTxt("parameter 3 missing!\n"); // retrieve the heap MinHeap<double>* heap; retrieve_heap( prhs[0], heap); // retrieve the parameters int index; retrieve_index( prhs[1], index ); double key1; retrieve_cost( prhs[2], key1); double key2; retrieve_cost( prhs[3], key2); // push in the PQ try{ heap->push( key1, key2, index-1 ); } catch( InvalidKeyIncreaseException exc ){ return; } // return control to matlab return; }
void get_the_file_and_index(char *temp) { char line[200], filename[200]; FILE *fp; int count = 0; strcpy(filename, temp); strcat(filename, ".index"); retrieve_index(temp); if ((fp = fopen(filename, "r"))==NULL) { return; } if (list==NULL) { list = (struct search_results *)malloc(sizeof(struct search_results)); iter = list; } else { iter->next = (struct search_results *)malloc(sizeof(struct search_results)); iter = iter->next; } iter->num_results = 0; iter->next = NULL; while (fscanf(fp, "%s", line)>0) { printf("line is %s\n", line); switch(count) { case 0: iter->word_count[iter->num_results] = atoi(line); break; case 1: iter->filename[iter->num_results] = (char *)malloc(strlen(line)+1); strcpy(iter->filename[iter->num_results], line); iter->num_results++; break; default: printf("its impossible to get here\n"); break; } count = (count + 1) % 2; if (iter->num_results==MAX_RESULTS_PER_WORD) { break; } } fclose(fp); }
item *unpack( int idx ) const override { return idx >= 0 ? retrieve_index( cur, idx ) : &cur.veh.parts[ cur.part ].base; }
item *unpack( int idx ) const override { return retrieve_index( who, idx ); }