Exemplo n.º 1
0
void
Space::visit(Visitor& visitor) const
{
	if (m_level >= 0 && m_number == 0)
	{
		visitor.linebreak(m_level);
	}
	else if (m_number == 0 || m_level > 3)
	{
		visitor.space(m_bracket, m_isFirstOrLast);
	}
	else
	{
		mstl::string s;

		switch (m_level)
		{
			case 1: s.format("%u", m_number); break;
			case 2: s.append(char(((m_number - 1) % 26) + 'a')); break;
			case 3: s.appendSmallRomanNumber(m_number); break;
		}

		visitor.number(s, m_isFirstOrLast);
	}
}