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;
}
Example #2
0
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);
}
Example #3
0
 item *unpack( int idx ) const override {
     return idx >= 0 ? retrieve_index( cur, idx ) : &cur.veh.parts[ cur.part ].base;
 }
Example #4
0
 item *unpack( int idx ) const override {
     return retrieve_index( who, idx );
 }