void PDSS::initAllPtrs(VPStandardStateTP *tp, VPSSMgr *vpssmgr_ptr, SpeciesThermo* spthermo) { m_tp = tp; m_vpssmgr_ptr = vpssmgr_ptr; m_spthermo = spthermo; initPtrs(); }
// Spoof Data constructor for use from data builder. // Initializes a new, empty data area that will be populated later. SpoofData::SpoofData(UErrorCode &status) { reset(); if (U_FAILURE(status)) { return; } fDataOwned = true; fRefCount = 1; // The spoof header should already be sized to be a multiple of 16 bytes. // Just in case it's not, round it up. uint32_t initialSize = (sizeof(SpoofDataHeader) + 15) & ~15; U_ASSERT(initialSize == sizeof(SpoofDataHeader)); fRawData = static_cast<SpoofDataHeader *>(uprv_malloc(initialSize)); fMemLimit = initialSize; if (fRawData == NULL) { status = U_MEMORY_ALLOCATION_ERROR; return; } uprv_memset(fRawData, 0, initialSize); fRawData->fMagic = USPOOF_MAGIC; fRawData->fFormatVersion[0] = 1; fRawData->fFormatVersion[1] = 0; fRawData->fFormatVersion[2] = 0; fRawData->fFormatVersion[3] = 0; initPtrs(status); }
//--------------------------------------------------------------------------- void extract_resource(const char *fname) { if ( !initPtrs(fname) ) return; store(NULL, 0); // zero-resource header bool wrerr = false; bool res = extractDirectory(0, 0); if ( !res ) { msg("Can't extract resource (possible it is invalid)\n"); } else { qflush(fr); if ( ferror(fr) || feof(fr) ) wrerr = true; } if ( qfclose(fr) ) wrerr = true; if ( res && wrerr ) msg("Error writing resource file\n"); if ( !res || wrerr ) unlink(fname); else msg("Resources have been extracted and stored in '%s'\n", fname); }
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); }
void *SpoofData::reserveSpace(int32_t numBytes, UErrorCode &status) { if (U_FAILURE(status)) { return NULL; } if (!fDataOwned) { UPRV_UNREACHABLE; } numBytes = (numBytes + 15) & ~15; // Round up to a multiple of 16 uint32_t returnOffset = fMemLimit; fMemLimit += numBytes; fRawData = static_cast<SpoofDataHeader *>(uprv_realloc(fRawData, fMemLimit)); fRawData->fLength = fMemLimit; uprv_memset((char *)fRawData + returnOffset, 0, numBytes); initPtrs(status); return (char *)fRawData + returnOffset; }
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); }
void PDSS::initThermo() { AssertThrow(m_tp != 0, "PDSS::initThermo()"); m_vpssmgr_ptr = m_tp->provideVPSSMgr(); initPtrs(); m_mw = m_tp->molecularWeight(m_spindex); }