* data/variant.hh (buffer, tname, as_, raw, align_me): Rename as...
(yybuffer_, yytname_,yyas_, yyraw, yyalign_me): these.
/// Empty construction.
variant ()]b4_parse_assert_if([
/// Empty construction.
variant ()]b4_parse_assert_if([
+ : yytname_ (YY_NULL)])[
{}
/// Construct and fill.
template <typename T>
variant (const T& t)]b4_parse_assert_if([
{}
/// Construct and fill.
template <typename T>
variant (const T& t)]b4_parse_assert_if([
- : tname (typeid (T).name ())])[
+ : yytname_ (typeid (T).name ())])[
{
YYASSERT (sizeof (T) <= S);
{
YYASSERT (sizeof (T) <= S);
- new (as_ <T> ()) T (t);
+ new (yyas_<T> ()) T (t);
}
/// Destruction, allowed only if empty.
~variant ()
{]b4_parse_assert_if([
}
/// Destruction, allowed only if empty.
~variant ()
{]b4_parse_assert_if([
])[}
/// Instantiate an empty \a T in here.
])[}
/// Instantiate an empty \a T in here.
T&
build ()
{]b4_parse_assert_if([
T&
build ()
{]b4_parse_assert_if([
YYASSERT (sizeof (T) <= S);
YYASSERT (sizeof (T) <= S);
- tname = typeid (T).name ();])[
- return *new (as_<T> ()) T;
+ yytname_ = typeid (T).name ();])[
+ return *new (yyas_<T> ()) T;
}
/// Instantiate a \a T in here from \a t.
}
/// Instantiate a \a T in here from \a t.
T&
build (const T& t)
{]b4_parse_assert_if([
T&
build (const T& t)
{]b4_parse_assert_if([
YYASSERT (sizeof (T) <= S);
YYASSERT (sizeof (T) <= S);
- tname = typeid (T).name ();])[
- return *new (as_<T> ()) T (t);
+ yytname_ = typeid (T).name ();])[
+ return *new (yyas_<T> ()) T (t);
}
/// Accessor to a built \a T.
}
/// Accessor to a built \a T.
T&
as ()
{]b4_parse_assert_if([
T&
as ()
{]b4_parse_assert_if([
- YYASSERT (tname == typeid (T).name ());
+ YYASSERT (yytname_ == typeid (T).name ());
YYASSERT (sizeof (T) <= S);])[
YYASSERT (sizeof (T) <= S);])[
}
/// Const accessor to a built \a T (for %printer).
}
/// Const accessor to a built \a T (for %printer).
const T&
as () const
{]b4_parse_assert_if([
const T&
as () const
{]b4_parse_assert_if([
- YYASSERT (tname == typeid (T).name ());
+ YYASSERT (yytname_ == typeid (T).name ());
YYASSERT (sizeof (T) <= S);])[
YYASSERT (sizeof (T) <= S);])[
}
/// Swap the content with \a other, of same type.
}
/// Swap the content with \a other, of same type.
void
swap (self_type& other)
{]b4_parse_assert_if([
void
swap (self_type& other)
{]b4_parse_assert_if([
- YYASSERT (tname);
- YYASSERT (tname == other.tname);])[
+ YYASSERT (yytname_);
+ YYASSERT (yytname_ == other.yytname_);])[
std::swap (as<T> (), other.as<T> ());
}
std::swap (as<T> (), other.as<T> ());
}
void
move (self_type& other)
{]b4_parse_assert_if([
void
move (self_type& other)
{]b4_parse_assert_if([
+ YYASSERT (!yytname_);])[
build<T> ();
swap<T> (other);
other.destroy<T> ();
build<T> ();
swap<T> (other);
other.destroy<T> ();
destroy ()
{
as<T> ().~T ();]b4_parse_assert_if([
destroy ()
{
as<T> ().~T ();]b4_parse_assert_if([
/// Accessor to raw memory as \a T.
template <typename T>
T*
/// Accessor to raw memory as \a T.
template <typename T>
T*
- void *yyp = buffer.raw;
+ void *yyp = yybuffer_.yyraw;
return static_cast<T*> (yyp);
}
/// Const accessor to raw memory as \a T.
template <typename T>
const T*
return static_cast<T*> (yyp);
}
/// Const accessor to raw memory as \a T.
template <typename T>
const T*
- const void *yyp = buffer.raw;
+ const void *yyp = yybuffer_.yyraw;
return static_cast<const T*> (yyp);
}
return static_cast<const T*> (yyp);
}
- /// A buffer large enough to store any of the semantic values.
- /// Long double is chosen as it has the strongest alignment
- /// constraints.
- long double align_me;
- char raw[S];
- } buffer;]b4_parse_assert_if([
+ /// Strongest alignment constraints.
+ long double yyalign_me;
+ /// A buffer large enough to store any of the semantic values.
+ char yyraw[S];
+ } yybuffer_;]b4_parse_assert_if([
/// Whether the content is built: if defined, the name of the stored type.
/// Whether the content is built: if defined, the name of the stored type.
+ const char *yytname_;])[