Beispiel #1
0
static void folder_free(void *data)
{
    search_folder_t *folder = data;

    free(folder->mboxname);
    bv_free(&folder->uids);
    bv_free(&folder->unchecked_uids);
    free(folder);
}
Beispiel #2
0
int main(int argc, char**argv)
{
    if (argc != 2)
    {
        return 1;
    }

    char *formula = argv[1];
    bv_program *p = bv_parse(formula);
    printf("RESULT: %llu\n", bv_eval(p, 1));
    bv_free(p);

    return 0;
}
Beispiel #3
0
static void reset_edge_overlay()
{
    if (smbuf != NULL)
    {
        free(smbuf);
        smbuf = NULL;
    }

    if (edgebuf != NULL)
    {
        draw_restore();     // Refresh display to restore Canon OSD
        bv_free(edgebuf);
        edgebuf = NULL;
    }

    fsm_state = EDGE_LIVE;
    slice = 0;
}
Beispiel #4
0
static void reset_edge_overlay()
{
    if (smbuf != NULL)
    {
        free(smbuf);
        smbuf = NULL;
    }

    if (edgebuf != NULL)
    {
        gui_set_need_restore();     // Refresh display to restore Canon OSD
        bv_free(edgebuf);
        edgebuf = NULL;
    }

    fsm_state = EDGE_LIVE;
    slice = 0;

    // Clean up state saved in core CHDK
    module_save_edge(edgebuf, fsm_state);
}
Beispiel #5
0
/** void setupDecoder(void)
/  Uses the current Convolutional Encoder to generate
/  the appropriate tables for an efficient Viterbi decoder
/  Should be called in main() before interrupt initialized
*/
void setupDecoder() {

	setPuncturing(FALSE);

	int i;
	int j;
	bv_t a = malloc (sizeof(struct bitvec));
	bv_new(a, 1);
	bv_t b = malloc (sizeof(struct bitvec));
	bv_new(b, 1);

	//*** this finds the properties of each state
	//generate the trellis (messages produced by state transitions)
	//generate decoding given two states
	for(i = 0; i < NUM_STATES; i++) {
		  for(j = 0; j < NUM_STATES; j++) {
			Trellis[i][j] = -1;
			Decode[i][j] = -1;
			if(j < 2)
				InverseTransitions[i][j] = -1;
		  }
	}
	// Trellis[0][0] = Trellis[1][2] = 0;
	// Trellis[1][0] = Trellis[0][2] = 3;
	// Trellis[2][1] = Trellis[3][3] = 1;
	// Trellis[3][1] = Trellis[2][3] = 2;

	for(i = 0; i < NUM_STATES; i++) {
		clear_vec(a);
		clear_vec(b);

		//get message and next state for input 0
		setState(i);
		encode(a,0);
		Transitions[i][0] = getState();
		if(InverseTransitions[getState()][0] == -1)
			InverseTransitions[getState()][0] = i;
		else
			InverseTransitions[getState()][1] = i;
		Trellis[i][getState()] = get(a,0,1);
		Decode[i][getState()] = 0;

		//get message and next state for input 1
		setState(i);
		encode(b,1);
		Transitions[i][1] = getState();
		if(InverseTransitions[getState()][0] == -1)
			InverseTransitions[getState()][0] = i;
		else
			InverseTransitions[getState()][1] = i;
		Trellis[i][getState()] = get(b,0,1);
		Decode[i][getState()] = 1;

		//initialize the decoded survivor paths
		paths[i] = malloc(sizeof(struct bitvec));
		bv_new(paths[i], 32);
		paths_next[i] = malloc (sizeof(struct bitvec));
		bv_new(paths_next[i], 32);

	}

	// for(i = 0; i < NUM_CODES; i++) {
	// 	  for(j = 0; j < 2; j++) {
	// 		printf("%d: %d -> %d \n", Decode[i][Transitions[i][j]], i, Transitions[i][j]);
	// 	  }
	// }
	// for(i = 0; i < NUM_CODES; i++) {
	// 	  for(j = 0; j < 2; j++) {
	// 		  printf("%d: %d -> %d \n", Decode[InverseTransitions[i][j]][i], InverseTransitions[i][j], i);
	// 	  }
	// }
	for(i = 0; i < NUM_CODES; i++) {
		for(j = 0; j < NUM_CODES; j++) {
		  printf("%d ", Trellis[i][j]);
		}

		printf("\n");
	}

	printf("Hamming distance \n");
	//pre-generate hamming distances for all messages
	for(i = 0; i < NUM_CODES; i++) {
		  load(a,i);
		  for(j = 0; j < NUM_CODES; j++) {
		    load(b,j);
		    HammingDistance[i][j] = hammingDistance(a,b);
		    printf("%d ", HammingDistance[i][j]);
		  }
		  printf("\n");
	}
	
	//reset the encoder and decoder
	clearState();
	vit_dec_reset();

	bv_free(a);
	bv_free(b);
	free(a);
	free(b);

	//set puncturing (only accomodates 2/3 puncture)
	setPuncturing(puncturedRec);
}
Beispiel #6
0
void ctw_free(ContextTree *tree) {
  ctw_node_free(tree->root);
  bv_free(tree->history);
  ctw_list_free(tree->context);
  free(tree);
}