Lines Matching full:frec
224 if (fRec != &gEmptyRec) {
225 SkASSERT(fRec->fLength > 0);
226 SkASSERT(fRec->fRefCnt > 0);
227 SkASSERT(0 == fRec->data()[fRec->fLength]);
235 SkString::SkString() : fRec(const_cast<Rec*>(&gEmptyRec)) {
237 fStr = fRec->data();
244 fRec = AllocRec(NULL, (U16CPU)len);
246 fStr = fRec->data();
253 fRec = AllocRec(text, (U16CPU)len);
255 fStr = fRec->data();
260 fRec = AllocRec(text, (U16CPU)len);
262 fStr = fRec->data();
269 fRec = RefRec(src.fRec);
271 fStr = fRec->data();
278 if (fRec->fLength) {
279 SkASSERT(fRec->fRefCnt > 0);
280 if (sk_atomic_dec(&fRec->fRefCnt) == 1) {
281 sk_free(fRec);
287 return fRec == src.fRec || this->equals(src.c_str(), src.size());
297 return fRec->fLength == len && !memcmp(fRec->data(), text, len);
303 if (fRec != src.fRec) {
322 if (fRec->fLength) {
323 SkASSERT(fRec->fRefCnt > 0);
324 if (sk_atomic_dec(&fRec->fRefCnt) == 1) {
325 sk_free(fRec);
329 fRec = const_cast<Rec*>(&gEmptyRec);
331 fStr = fRec->data();
338 if (fRec->fLength) {
339 if (fRec->fRefCnt > 1) {
340 Rec* rec = AllocRec(fRec->data(), fRec->fLength);
341 if (sk_atomic_dec(&fRec->fRefCnt) == 1) {
344 // data (fRec and rec), so we need to delete one of them.
345 sk_free(fRec);
347 fRec = rec;
349 fStr = fRec->data();
353 return fRec->data();
363 } else if (1 == fRec->fRefCnt && len <= fRec->fLength) {
371 fRec->fLength = len;
372 } else if (1 == fRec->fRefCnt && (fRec->fLength >> 2) == (len >> 2)) {
379 fRec->fLength = len;
398 } else if (count <= fRec->fLength) {
400 if (count < fRec->fLength) {
425 size_t length = fRec->fLength;
440 if (1 == fRec->fRefCnt && (length >> 2) == ((length + len) >> 2)) {
449 fRec->fLength = length + len;
454 SkString tmp(fRec->fLength + len);
458 memcpy(dst, fRec->data(), offset);
461 if (offset < fRec->fLength) {
462 memcpy(dst + offset + len, fRec->data() + offset,
463 fRec->fLength - offset);
576 SkTSwap<Rec*>(fRec, other.fRec);