internal String ToStringClass() {
if (!_canonical)
Canonicalize();
// make a guess about the length of the ranges. We'll update this at the end.
// This is important because if the last range ends in LastChar, we won't append
// LastChar to the list.
int rangeLen = _rangelist.Count * 2 ;
StringBuilder sb = new StringBuilder(rangeLen + _categories.Length + 3);
int flags;
if (_negate)
flags = 1;
else
flags = 0;
sb.Append((char) flags);
sb.Append((char) rangeLen);
sb.Append((char) _categories.Length);
for (int i = 0; i < _rangelist.Count; i++) {
SingleRange currentRange = (SingleRange)_rangelist[i];
sb.Append(currentRange._first);
if (currentRange._last != Lastchar)
sb.Append((char)(currentRange._last + 1));
}
sb[SETLENGTH] = (char) (sb.Length - SETSTART);
sb.Append(_categories);
if (_subtractor != null)
sb.Append(_subtractor.ToStringClass());
return sb.ToString();
}