Equip variants with more checking code. Provide a means to request
includes.
* data/variant.hh (b4_variant_includes): New.
* data/lalr1.cc: Use it.
* data/variant.hh (variant::built): Define at the end, as a private member.
(variant::tname): New.
Somewhat makes "built" useless, but let's keep both for a start, in
case using "typeinfo" is considered unacceptable in some environments.
Fix some formatting issues.
* data/c++.m4, data/lalr1.cc (parser::symbol_type): Change the
constructor to take a token_type instead of the (internal) symbol
number.
Call yytranslate_.
* data/variant.hh (b4_symbol_constructor_define_): Therefore,
don't call yytranslate_ here.
* data/c++.m4 (b4_symbol_constructor_declare)
(b4_symbol_constructor_define): New empty stubs.
(b4_public_types_declare, b4_public_types_define): Use them.
* data/lalr1.cc (b4_symbol_constructor_declare)
(b4_symbol_constructor_declare_)
(b4_symbol_constructor_define_, b4_symbol_constructor_define):
Move to...
* data/variant.hh: here.
Remove the "b4_variant_if" parts, as variant.hh is loaded only if
needed.
* data/lalr1.cc: No longer invoke b4_symbol_constructor_define and
b4_symbol_constructor_declare, as it is now done by
b4_public_types_define and b4_public_types_declare.
* data/c++.m4 (b4_semantic_type_declare): New.
Factors and generalizes what was in glr.cc and lalr1.cc.
* data/variant.hh (b4_semantic_type_declare): Redefine it for
variants.
* data/lalr1.cc, data/glr.cc: Use it.