/** Transfer ownership of the current ptr to the caller, setting the internalreferencetonull.Notethecallerisreponsibleforcalling sk_freeonthereturnedaddress.
*/ void* release() {
fSize = 0; return fPtr.release();
}
private: struct WrapFree { voidoperator()(void* p) { sk_free(p); }
};
std::unique_ptr<void, WrapFree> fPtr;
size_t fSize; // can be larger than the requested size (see kReuse)
};
private: // Align up to 32 bits. staticconst size_t kSizeAlign4 = SkAlign4(kSizeRequested); #ifdefined(SK_BUILD_FOR_GOOGLE3) // Stack frame size is limited for SK_BUILD_FOR_GOOGLE3. 4k is less than the actual max, but some functions // have multiple large stack allocations. staticconst size_t kMaxBytes = 4 * 1024; staticconst size_t kSize = kSizeRequested > kMaxBytes ? kMaxBytes : kSizeAlign4; #else staticconst size_t kSize = kSizeAlign4; #endif
void* fPtr;
size_t fSize; // can be larger than the requested size (see kReuse)
uint32_t fStorage[kSize >> 2];
}; // Can't guard the constructor because it's a template class.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.