Exemple #1
0
static int detail_button_Ev( const ev_t* ev, int n, char* dest ) {

	char buf[4092] = { '\0' };

	// Describe the button press
	describe_button_Ev( ev, sizeof(buf), buf );
	strcat( buf, " State { " );

	// Write the rest of the button states
	bool multi = false;
	for( int i=0; i<n_buttonsets; i++ ) {

		struct buttonset_s* buttonset = &buttonsets[i];

		for( int j=0; j<buttonset->N; j++ ) {
			int button = buttonset->base + j;

			if( bitset_isset( ev->button.state, button ) ) {
				// Button NN
				char desc[256];
				sprintf(desc, "%s button %d", buttonset->prefix, j);

				if( multi )
					strcat(buf, ", ");
				strcat( buf, desc );
				multi = true;
			}
		}
	}

	strcat( buf, " }");
	return maybe_strncpy( dest, n, buf );

}
Exemple #2
0
static int describe_button_Ev( const ev_t* ev, int n, char* dest ) {

	const int which = ev->button.which;
	char buf[4092];

	// Find the button set
	for( int i=0; i<n_buttonsets; i++ ) {
		
		struct buttonset_s* buttonset = &buttonsets[i];
		if( which >= buttonset->base 
		    && which < buttonset->base + buttonset->N ) {

			// Describe the button press/release
			sprintf(buf, "%s %s button %d", 
			        bitset_isset( ev->button.state, which ) ? "Pressed" : "Released",
			        buttonset->prefix, which - buttonset->base);
			break;

		}

	}

	return maybe_strncpy( dest, n, buf );

}
Exemple #3
0
int main(int args, char **argv) {
    size_t bitset_size = 1 << (30 - 5);
    uint64_t max_prime = bitset_size << 5;

    fprintf(stderr, "Upper limit: %d\n", max_prime);

    bitset bits;
    bits.size = bitset_size;
    bits.elements = calloc(sizeof(unsigned int), bits.size);

    // Set all multiples of two to be non-primes and the rest
    // to be primes
    memset(bits.elements, 2 + 8 + 32 + 128, bits.size * sizeof(unsigned int));

    bitset *primes = &bits;
    bitset_unset(primes, 1);
    bitset_set(primes, 2);

    uint64_t p = 3;

    while (p < max_prime) {
        // Filter out all multiples of p
        for (uint32_t i = p + p; i < max_prime; i += p) {
            bitset_unset(primes, i);
        }

        // Find next number to filter out
        do {
            p += 2;
        } while (p < max_prime && !bitset_isset(primes, p));
    }

    // Write to file
    /*
    FILE *fp = fopen("test2.raw", "w");

    for (p = 2; p < max_prime; p++) {
      if (bitset_isset(primes, p)) {
        writeVarint64(p, fp);
      }
    }

    fflush(fp);
    fclose(fp);
    fprintf(stderr, "wrote varints\n");
    */

    FILE *fp = fopen("primes.bin", "w");
    fwrite(bits.elements, sizeof(unsigned int), bits.size, fp);
    fflush(fp);
    fclose(fp);

    fprintf(stderr, "Largest prime: %d\n", p - 2);
    fprintf(stderr, "Wrote bitset: primes.bin\n");
    free(bits.elements);
}
Exemple #4
0
int Solve(int mask){
    if(bitset_isset(seen, mask))
        return dp[mask];
    bitset_set(seen, mask);
    int bad = 0;
    for(int i = 0; i < 9; i++)
        if((neighbour[inside[i]] & mask) == neighbour[inside[i]])
            bad |= 1 << inside[i];
    if(!bad){
        dp[mask] = 0;
        int sign = 1;
        for (int i = 0; i < 25; i++)
            if (mask & (1 << v[i])) {
                dp[mask] += sign * value[v[i]];
                sign *= -1;
            }
        return dp[mask];
    }
    int good = mask - bad, w[25], state[25], n = 0;
    for(int i = 0, j = 1; i < 25; i++, j *= 2)
        if(good & j){
            int k = 0, now = neighbour[i] & bad;
            while (k < n && now != state[k])
                k++;
            if (k == n) {
                w[n] = i;
                state[n] = now;
                n++;
            }
            else
                if (value[i] > value[w[k]])
                    w[k] = i;
        }
    dp[mask] = -INF;
    for(int i = 0; i < n; i++)
        dp[mask] = max(dp[mask], value[w[i]] - Solve(mask ^ (1 << w[i])));
    return dp[mask];
}
Exemple #5
0
static int
memzone_get_flags(struct memzone *mz, os_index_t i)
{
        return bitset_isset(mz->flags, 2 * i) |
                (bitset_isset(mz->flags, 2 * i + 1) << 1);
}