/* CTF 1.8 */

trace {
	major = 1;
	minor = 8;
	uuid = "76f9dfbb-899b-4f86-b0bf-c7999c23e140";
	byte_order = le;
	packet.header := struct {
		integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } magic;
		integer { size = 8; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } uuid[16];
		integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } stream_id;
	} align(8);
};

env {
	host = "mercury";
	sysname = "Linux";
	nodename = "mercury";
	release = "3.11.4-1-ARCH";
	version = "#1 SMP PREEMPT Sat Oct 5 21:22:51 CEST 2013";
	machine = "x86_64";
};

clock {
	name = test_clock;
	uuid = "0d1b73cf-dd96-43ee-b685-408f8574c06c";
	description = "This is a test clock";
	freq = 1000000000;
	precision = 10;
	offset_s = 1351530929945824323;
	offset = 1234567;
	absolute = TRUE;
};

stream {
	id = 0;
	event.header := struct {
		integer { size = 32; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } id;
		integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } timestamp;
	} align(8);

	packet.context := struct {
		integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } timestamp_begin;
		integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } timestamp_end;
		integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } content_size;
		integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } packet_size;
		integer { size = 64; align = 8; signed = false; encoding = none; base = decimal; byte_order = le; } events_discarded;
	} align(8);
};

event {
	name = "Simple Event";
	id = 0;
	stream_id = 0;
	fields := struct {
		integer { size = 12; align = 1; signed = false; encoding = none; base = decimal; byte_order = le; } integer_field;
		floating_point { exp_dig = 11; mant_dig = 53; byte_order = le; align = 32; } float_field;
	} align(32);
};

event {
	name = "Spammy_Event";
	id = 1;
	stream_id = 0;
	fields := struct {
		integer { size = 17; align = 1; signed = false; encoding = none; base = decimal; byte_order = le; } field_1;
		string { encoding = UTF8; } a_string;
	} align(8);
};

event {
	name = "Complex Test Event";
	id = 2;
	stream_id = 0;
	fields := struct {
		integer { size = 35; align = 1; signed = false; encoding = none; base = hexadecimal; byte_order = le; } uint_35;
		integer { size = 16; align = 32; signed = true; encoding = none; base = decimal; byte_order = le; } int_16;
		struct {
			enum : integer { size = 3; align = 1; signed = false; encoding = none; base = decimal; byte_order = le; } { UINT3_TYPE = 0, INT16_TYPE = 1, UINT35_TYPE = 2 ... 7 } variant_selector;
			string { encoding = UTF8; } a_string;
			variant <variant_selector> {
				integer { size = 3; align = 1; signed = false; encoding = none; base = decimal; byte_order = le; } UINT3_TYPE;
				integer { size = 16; align = 32; signed = true; encoding = none; base = decimal; byte_order = le; } INT16_TYPE;
				integer { size = 35; align = 1; signed = false; encoding = none; base = hexadecimal; byte_order = le; } UINT35_TYPE;
			} variant_value;
			struct {
				integer { size = 35; align = 1; signed = false; encoding = none; base = hexadecimal; byte_order = le; } seq_len;
				integer { size = 16; align = 32; signed = true; encoding = none; base = decimal; byte_order = le; } a_sequence[seq_len];
			} align(32) inner_structure;
		} align(32) complex_structure;
	} align(32);
};

