JNIEXPORT jint JNICALL Java_es_gva_cit_jogr_OGRDataSource_deleteLayerNat (JNIEnv *env, jobject obj, jlong cPtr, jint layer){ OGRDataSource *ds = (OGRDataSource *) 0 ; int ogrerr; ds = *(OGRDataSource **)&cPtr; if(ds!=NULL){ ogrerr = ds->DeleteLayer(layer); } return ogrerr; }
OGRErr OGRDataSourceWithTransaction::DeleteLayer(int iIndex) { if( !m_poBaseDataSource ) return OGRERR_FAILURE; OGRLayer* poLayer = GetLayer(iIndex); CPLString osName; if( poLayer ) osName = poLayer->GetName(); OGRErr eErr = m_poBaseDataSource->DeleteLayer(iIndex); if( eErr == OGRERR_NONE && osName.size()) { std::map<CPLString, OGRLayerWithTransaction*>::iterator oIter = m_oMapLayers.find(osName); if(oIter != m_oMapLayers.end()) { delete oIter->second; m_oSetLayers.erase(oIter->second); m_oMapLayers.erase(oIter); } } return eErr; }