Exemplo n.º 1
0
static int cmd_decode(const char* path, const char** field_names, int names_length)
{
	tdb* db = tdb_init(); assert(db);
	tdb_error err = tdb_open(db, path);
	if(err) {
		REPORT_ERROR("Failed to open TDB. error=%i\n", err);
		return 1;
	}

	tdb_field* ids;
	err = resolve_fieldids(&ids, db, field_names, names_length);
	if(err)
		goto out;

	/** actual field names (except for timestamp) */
	for(int i = 0; i < names_length; ++i) {
		assert(ids[i] > 0 && "reading from timestamp column 0 not supported");
		--ids[i];
	}

	TIMED("cmd_decode", err, do_get_all_and_decode(db, path, ids, (unsigned)names_length));

out:
	tdb_close(db);
	return err;
}
Exemplo n.º 2
0
void poll_networking(void)
{
    uint64_t now;

    if (!netif)
        return;

    /* poll interface */
    netfrontif_poll(netif, LWIP_NETIF_MAX_RXBURST_LEN);

    /* process lwIP timers */
    now = NSEC_TO_MSEC(NOW());
    TIMED(now, ts_etharp,  ARP_TMR_INTERVAL, etharp_tmr());
    TIMED(now, ts_ipreass, IP_TMR_INTERVAL,  ip_reass_tmr());
    TIMED(now, ts_tcp,     TCP_TMR_INTERVAL, tcp_tmr());
    TIMED(now, ts_dns,     DNS_TMR_INTERVAL, dns_tmr());
}
Exemplo n.º 3
0
static int cmd_append_all(const char* output_path, const char* input)
{
	tdb* db = tdb_init(); assert(db);
	int err = tdb_open(db, input);
	if(err) {
		REPORT_ERROR("Failed to open TDB. error=%i\n", err);
		return 1;
	}

	const uint64_t num_fields = tdb_num_fields(db) - 1;
	const char**   field_ids  = duplicate_fieldids(db);
	tdb_cons*      cons       = tdb_cons_init();
	assert(cons);

	err = tdb_cons_open(cons, output_path, field_ids, num_fields);
	if(err) {
		REPORT_ERROR("Failed to create TDB cons. error=%i\n", err);
		goto free_fieldids;
	}

	TIMED("tdb_cons_append()", err, tdb_cons_append(cons, db));
	if(err) {
		REPORT_ERROR("Failed to append DB. error=%i\n", err);
		goto close_cons;
	}

	err = tdb_cons_finalize(cons);
	if(err) {
		REPORT_ERROR("Failed to finalize output DB. error=%i\n", err);
		goto close_cons;
	}

	printf("Successfully converted / rewritten DB.\n");


close_cons:
	tdb_cons_close(cons);

free_fieldids:
	/* to make the compiler not complain about casting const'ness away,
	   let's pull out this small, dirty trick */
	for(uint64_t i = 0; i < num_fields; ++i) {
		void* make_compiler_happy;
		memcpy(&make_compiler_happy, field_ids + i, sizeof(void*));
		free(make_compiler_happy);
	}
	free(field_ids);

	tdb_close(db);

	return err ? 1 : 0;
}
Exemplo n.º 4
0
/**
 * copies a subset of data from one DB into another one. The subset is
 * given by field names
 */
static int cmd_recode(const char* output_path, const char* input,
		      const char** field_names, int names_length)
{
	assert(names_length > 0);

	tdb* const db = tdb_init(); assert(db);
	int err = tdb_open(db, input);
	if(err) {
		REPORT_ERROR("Failed to open TDB. error=%i\n", err);
		return 1;
	}

	tdb_field* field_ids;
	err = resolve_fieldids(&field_ids, db, field_names, names_length);
	if(err < 0) {
		goto free_tdb;
	}

	tdb_cons* const cons = tdb_cons_init();
	assert(cons);

	err = tdb_cons_open(cons, output_path, field_names, (unsigned)names_length);
	if(err) {
		REPORT_ERROR("Failed to create TDB cons. error=%i\n", err);
		goto free_ids;
	}

	TIMED("recode", err, do_recode(cons, db, field_ids, names_length));
	if(err)
		goto close_cons;

	err = tdb_cons_finalize(cons);
	if(err) {
		REPORT_ERROR("Failed to finalize output DB. error=%i\n", err);
	}

close_cons:
	tdb_cons_close(cons);
free_ids:
	free(field_ids);
free_tdb:
	tdb_close(db);
	return err;
}
Exemplo n.º 5
0
Arquivo: main.cpp Projeto: ZOO-OO/IU9
int main()
{
	// Ввод текста из стандартного потока ввода
	// (при вводе текста из консоли в конце нужно нажать Ctrl-D).

	string text = string(istreambuf_iterator<char>(cin), istreambuf_iterator<char>());

	// Итератор для вывода слов через пробел.
	ostream_iterator<string> owords(cout, " ");

	// Разбиение текста на слова.
	vector<string> tokens;
	TIMED(get_tokens(text, delimiters, tokens));
	copy(tokens.begin(), tokens.end(), owords);
	cout << endl;

	// Составление частотного словаря.
	map<string, int> freqdi;
	TIMED(get_type_freq(tokens, freqdi);)
	for (auto p : freqdi) {
Exemplo n.º 6
0
static int cmd_get_all_and_decode(char** dbs, int argc)
{
	for(int i = 0; i < argc; ++i) {
		const char* path = dbs[i];
		tdb* db = tdb_init();
		int err = tdb_open(db, path);
		if(err) {
			printf("Error code %i while opening TDB at %s\n", err, path);
			return 1;
		}

		const unsigned int nfields = (unsigned)tdb_num_fields(db) - 1u;
		tdb_field ids[nfields];
		for (unsigned int field_id = 0; field_id < nfields; ++field_id)
			ids[field_id] = field_id;

		TIMED("get_all", err, do_get_all_and_decode(db, path, ids, nfields));
		tdb_close(db);
	}

	return 0;
}
Exemplo n.º 7
0
int main(int argc, char **argv) {
	InitVars(argc, argv, "segment.cfg");
	if (argc != 2) {
		DLOG << "Usage: "<<argv[0]<<" INPUT"<<endl;
		exit(-1);
	}

	// Read image
	ImageBundle image(argv[1]);
	const int& w = image.nx();
	const int& h = image.ny();
	image.BuildHSV();

	// Convert to HSV and mono
	WriteHueOnly("out/h_only.png", image.hsv);

	// Segment
	FHSegmenter segmenter;
	TIMED("Segment")
		segmenter.Compute(image);
	const int num_segments = segmenter.num_segments;
	DLOG << "Generated " << num_segments << " segments";
	segmenter.OutputSegViz("out/segmentation.png");

	// Compute features for each segment
	HistSegmentFeatures<TextonLabeller<NhdPixelFeatures> > segftrs;
	segftrs.Compute(image.rgb, image.hsv, segmenter.segmentation, num_segments);
	segftrs.OutputLabelViz("out/label_map.png");

	// Compute similarity matrix
	MatF similarity(num_segments, num_segments);
	for (int i = 0; i < num_segments; i++) {
		similarity[i][i] = 0;
		for (int j = i+1; j < num_segments; j++) {
			const double ssd = VectorSSD(segftrs.features[i], segftrs.features[j]);
			similarity[i][j] = min(1.0/sqrt(ssd), 10);
			similarity[j][i] = similarity[i][j];
		}
	}
	similarity /= similarity.MaxValue();
	WriteMatrixImageRescaled("out/similarity.png", similarity);

	// Generate some vizualizations
	const int kNumViz = 15;
	ImageRGB<byte> viz(w, h);
	vector<PixelRGB<byte> > colors(num_segments);

	vector<int> segment_indices;
	sorted_order(segmenter.segment_sizes, segment_indices, greater<int>());

	for (int i = 0; i < kNumViz; i++) {
		// Pick a random pixel and use the segment at that pixel so that
		// larger segments are more likely to be chosen
		const int root = segment_indices[i];
		DREPORT(root);

		// Compute colors for each other segment
		for (int j = 0; j < num_segments; j++) {
			if (j == root) {
				colors[j].Set(255, 0, 0);
			} else {
				const int v = similarity[j][root] * 255;
				colors[j].Set(v, v, v);
			}
		}

		// Generate the vizualization
		for (int r = 0; r < h; r++) {
			PixelRGB<byte>* vizrow = viz[r];
			const int* segrow = segmenter.segmentation[r];
			for (int c = 0; c < w; c++) {
				vizrow[c] = colors[segrow[c]];
			}
		}
		WriteImage("out/sim"+PaddedInt(i,2)+".png", viz);
	}

	return 0;
}