SpoofData::SpoofData(UDataMemory *udm, UErrorCode &status) { reset(); if (U_FAILURE(status)) { return; } fRawData = reinterpret_cast<SpoofDataHeader *> ((char *)(udm->pHeader) + udm->pHeader->dataHeader.headerSize); fUDM = udm; validateDataVersion(fRawData, status); initPtrs(status); }
SpoofData::SpoofData(UDataMemory *udm, UErrorCode &status) { reset(); if (U_FAILURE(status)) { return; } fUDM = udm; // fRawData is non-const because it may be constructed by the data builder. fRawData = reinterpret_cast<SpoofDataHeader *>( const_cast<void *>(udata_getMemory(udm))); validateDataVersion(status); initPtrs(status); }
SpoofData::SpoofData(const void *data, int32_t length, UErrorCode &status) { reset(); if (U_FAILURE(status)) { return; } if ((size_t)length < sizeof(SpoofDataHeader)) { status = U_INVALID_FORMAT_ERROR; return; } void *ncData = const_cast<void *>(data); fRawData = static_cast<SpoofDataHeader *>(ncData); if (length < fRawData->fLength) { status = U_INVALID_FORMAT_ERROR; return; } validateDataVersion(fRawData, status); initPtrs(status); }