template< . . . >
size_t fast_string_concatenator<S, C, T>::length() const
{
return m_lhs.length() + m_rhs.length();
}
template< . . . >
size_t fast_string_concatenator<S, C, T>::Data::length() const
{
size_t len;
assert( type == cstring || type == single ||
type == concat || type == seed);
switch(type)
{
case seed:
len = 0;
break;
case single:
len = 1;
break;
case cstring:
len = ref.cstring.len;
break;
case concat:
len = ref.concat->length();
break;
}
return len;
}