void GDALPamRasterBand::PamInitialize() { if( psPam ) return; GDALDataset* poNonPamParentDS = GetDataset(); if( poNonPamParentDS == NULL || !(poNonPamParentDS->GetMOFlags() & GMO_PAM_CLASS) ) return; GDALPamDataset *poParentDS = (GDALPamDataset *) poNonPamParentDS; poParentDS->PamInitialize(); if( poParentDS->psPam == NULL ) return; // Often (always?) initializing our parent will have initialized us. if( psPam != NULL ) return; psPam = (GDALRasterBandPamInfo *) VSI_CALLOC_VERBOSE(sizeof(GDALRasterBandPamInfo),1); if( psPam == NULL ) return; psPam->dfScale = 1.0; psPam->poParentDS = poParentDS; psPam->dfNoDataValue = -1e10; psPam->poDefaultRAT = NULL; }
void GDALPamRasterBand::PamInitialize() { if( psPam ) return; GDALDataset* poNonPamParentDS = GetDataset(); if( poNonPamParentDS == nullptr || !(poNonPamParentDS->GetMOFlags() & GMO_PAM_CLASS) ) return; GDALPamDataset *poParentDS = dynamic_cast<GDALPamDataset *>( poNonPamParentDS ); if( poParentDS == nullptr ) { // Should never happen. CPLAssert(false); return; } poParentDS->PamInitialize(); if( poParentDS->psPam == nullptr ) return; // Often (always?) initializing our parent will have initialized us. if( psPam != nullptr ) return; psPam = static_cast<GDALRasterBandPamInfo *>( VSI_CALLOC_VERBOSE(sizeof(GDALRasterBandPamInfo), 1) ); if( psPam == nullptr ) return; psPam->dfScale = 1.0; psPam->poParentDS = poParentDS; psPam->dfNoDataValue = -1e10; psPam->poDefaultRAT = nullptr; }