/* Generated by re2c */
// re2c $INPUT -o $OUTPUT -ci --header cond_enum_header_and_directives.h
// This test ensures that `types:re2c` includes all necessary conditions,
// whether they are defined in the output file or in the generated header.

// expect conditions: a1, a2, b1, b2
enum YYCONDTYPE {
	yyca1,
	yyca2,
	yycb1,
	yycb2
};

// expect conditions: b2, a2
enum YYCONDTYPE {
	yycb2,
	yyca2
};




// unnamed block with condition a1

{
	YYCTYPE yych;
	switch (YYGETCONDITION()) {
		case yyca1: goto yyc_a1;
	}
/* *********************************** */
yyc_a1:
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	++YYCURSOR;
	{}
}

// block Y with condition a2

{
	YYCTYPE yych;
	switch (YYGETCONDITION()) {
		case yyca2: goto yyc_a2;
	}
/* *********************************** */
yyc_a2:
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	++YYCURSOR;
	{}
}


// expect conditions: a1, a2, b1, b2
enum YYCONDTYPE {
	yyca1,
	yyca2,
	yycb1,
	yycb2
};

// expect conditions: b2, a2
enum YYCONDTYPE {
	yycb2,
	yyca2
};

/* Generated by re2c */

// header start

// expect conditions: a1, a2, b1, b2
enum YYCONDTYPE {
	yyca1,
	yyca2,
	yycb1,
	yycb2
};

// expect conditions: a2, b2
enum YYCONDTYPE {
	yyca2,
	yycb2
};


// unnamed header block with condition b1

{
	YYCTYPE yych;
	switch (YYGETCONDITION()) {
		case yycb1: goto yyc_b1;
	}
/* *********************************** */
yyc_b1:
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	++YYCURSOR;
	{}
}

// header block X with condition b2

{
	YYCTYPE yych;
	switch (YYGETCONDITION()) {
		case yycb2: goto yyc_b2;
	}
/* *********************************** */
yyc_b2:
	if (YYLIMIT <= YYCURSOR) YYFILL(1);
	++YYCURSOR;
	{}
}


// expect conditions: a1, a2, b1, b2
enum YYCONDTYPE {
	yyca1,
	yyca2,
	yycb1,
	yycb2
};

// expect conditions: a2, b2
enum YYCONDTYPE {
	yyca2,
	yycb2
};


// header end
