String::String(StringBuffer& b) { int l = b.GetLength(); if(l <= 14) { Zero(); memcpy(chr, b.begin, l); SLen() = l; b.Free(); } else { ptr = b.begin; ptr[l] = 0; SLen() = 15; LLen() = l; chr[KIND] = min(b.GetAlloc(), 255); } b.Zero(); }
String::String(StringBuffer& b) { int l = b.GetLength(); if(l <= 14) { Zero(); memcpy(chr, b.begin, l); SLen() = l; b.Free(); } else { ptr = b.begin; ptr[l] = 0; SLen() = 15; LLen() = l; chr[KIND] = b.limit - b.begin == 31 ? MEDIUM : REF; } b.Zero(); }