Changeset 13902
- Timestamp:
- 02/29/08 17:26:44 (4 months ago)
- Files:
-
- trunk/gdal/ogr/ogrsf_frmts/ili/ili1reader.cpp (modified) (11 diffs)
- trunk/gdal/ogr/ogrsf_frmts/ili/ili1reader.h (modified) (1 diff)
- trunk/gdal/ogr/ogrsf_frmts/ili/ogr_ili1.h (modified) (4 diffs)
- trunk/gdal/ogr/ogrsf_frmts/ili/ogrili1datasource.cpp (modified) (4 diffs)
- trunk/gdal/ogr/ogrsf_frmts/ili/ogrili1layer.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/gdal/ogr/ogrsf_frmts/ili/ili1reader.cpp
r13716 r13902 72 72 73 73 ILI1Reader::~ILI1Reader() { 74 int i; 74 75 if (fpItf) VSIFClose( fpItf ); 76 77 for(i=0;i<nLayers;i++) 78 delete papoLayers[i]; 79 CPLFree(papoLayers); 80 81 for(i=0;i<nAreaLayers;i++) 82 { 83 delete papoAreaLayers[i]; 84 delete papoAreaLineLayers[i]; 85 } 86 CPLFree(papoAreaLayers); 87 CPLFree(papoAreaLineLayers); 88 89 for(i=0;i<nSurfaceLayers;i++) 90 { 91 delete papoSurfaceLayers[i]; 92 delete papoSurfacePolyLayers[i]; 93 } 94 CPLFree(papoSurfaceLayers); 95 CPLFree(papoSurfacePolyLayers); 75 96 } 76 97 … … 268 289 const char *firsttok = NULL; 269 290 const char *pszLine; 270 c onst char *topic = NULL;291 char *topic = NULL; 271 292 int ret = TRUE; 272 293 … … 302 323 else if (EQUAL(firsttok, "TOPI")) 303 324 { 325 CPLFree(topic); 304 326 topic = CPLStrdup(CSLGetField(tokens, 1)); 305 327 } … … 330 352 else if (EQUAL(firsttok, "ENDE")) 331 353 { 354 CSLDestroy(tokens); 355 CPLFree(topic); 332 356 JoinSurfaceLayers(); 333 357 PolygonizeAreaLayers(); … … 340 364 341 365 CSLDestroy(tokens); 342 } 366 tokens = NULL; 367 } 368 369 CSLDestroy(tokens); 370 CPLFree(topic); 371 343 372 return ret; 344 373 } … … 513 542 514 543 OGRFeatureDefn *featureDef = curLayer->GetLayerDefn(); 515 OGRFieldDefn *fieldDef = NULL;516 544 OGRFeature *feature = NULL; 517 545 … … 546 574 for (fIndex=1; fIndex<CSLCount(tokens); fIndex++) 547 575 { 548 fieldDef = new OGRFieldDefn(CPLStrdup("Field00"), OFTString);549 *(char *)(fieldDef->GetNameRef()+strlen(fieldDef->GetNameRef())-2) = '0'+fIndex/10;550 *(char *)(fieldDef->GetNameRef()+strlen(fieldDef->GetNameRef())-1) = '0'+fIndex%10;551 featureDef->AddFieldDefn( fieldDef);576 char szFieldName[32]; 577 sprintf(szFieldName, "Field%02d", fIndex); 578 OGRFieldDefn oFieldDefn(szFieldName, OFTString); 579 featureDef->AddFieldDefn(&oFieldDefn); 552 580 } 553 581 } … … 561 589 if (!EQUAL(tokens[fIndex], "@")) { 562 590 //CPLDebug( "OGR_ILI", "Adding Field %d: %s", fieldno, tokens[fIndex]); 563 feature->SetField(fieldno, CPLStrdup(tokens[fIndex]));591 feature->SetField(fieldno, tokens[fIndex]); 564 592 if (featureDef->GetFieldDefn(fieldno)->GetType() == OFTReal 565 593 && fieldno > 0 … … 733 761 734 762 { 763 nLayers++; 764 735 765 papoLayers = (OGRILI1Layer **) 736 CPLRealloc( papoLayers, sizeof(void*) * ++nLayers );766 CPLRealloc( papoLayers, sizeof(void*) * nLayers ); 737 767 738 768 papoLayers[nLayers-1] = poNewLayer; … … 844 874 pszLine = CPLReadLine( fpItf ); 845 875 conttok = CSLTokenizeString2( pszLine, " ", CSLT_PRESERVEESCAPES ); 846 if (!conttok || !EQUAL(conttok[0], "CONT")) break; 876 if (!conttok || !EQUAL(conttok[0], "CONT")) 877 { 878 CSLDestroy(conttok); 879 break; 880 } 847 881 848 882 //append … … 860 894 return new ILI1Reader(); 861 895 } 896 897 void DestroyILI1Reader(IILI1Reader* reader) 898 { 899 if (reader) 900 delete reader; 901 } trunk/gdal/ogr/ogrsf_frmts/ili/ili1reader.h
r10645 r13902 48 48 49 49 IILI1Reader *CreateILI1Reader(); 50 void DestroyILI1Reader(IILI1Reader* reader); 50 51 51 52 #endif trunk/gdal/ogr/ogrsf_frmts/ili/ogr_ili1.h
r11343 r13902 47 47 OGRSpatialReference *poSRS; 48 48 OGRFeatureDefn *poFeatureDefn; 49 OGRGeometry *poFilterGeom;50 49 51 50 int nFeatures; … … 66 65 ~OGRILI1Layer(); 67 66 68 OGRGeometry * GetSpatialFilter() { return poFilterGeom; }69 void SetSpatialFilter( OGRGeometry * );70 71 67 OGRErr AddFeature(OGRFeature *poFeature); 72 68 … … 77 73 78 74 int GetFeatureCount( int bForce = TRUE ); 79 OGRErr GetExtent(OGREnvelope *psExtent, int bForce = TRUE);80 75 81 76 OGRErr CreateFeature( OGRFeature *poFeature ); … … 102 97 FILE *fpTransfer; 103 98 char *pszTopic; 99 int nLayers; 100 OGRILI1Layer** papoLayers; 104 101 105 102 public: trunk/gdal/ogr/ogrsf_frmts/ili/ogrili1datasource.cpp
r13066 r13902 52 52 fpTransfer = NULL; 53 53 pszTopic = NULL; 54 nLayers = 0; 55 papoLayers = NULL; 54 56 } 55 57 … … 61 63 62 64 { 65 int i; 66 67 for(i=0;i<nLayers;i++) 68 { 69 delete papoLayers[i]; 70 } 71 CPLFree( papoLayers ); 72 63 73 CPLFree( pszName ); 74 CPLFree( pszTopic ); 75 DestroyILI1Reader( poReader ); 64 76 if( fpTransfer ) 65 77 { … … 267 279 VSIFPrintf( fpTransfer, "TOPI %s\n", pszTopic ); 268 280 } 281 else 282 { 283 CPLFree(topic); 284 } 269 285 } 270 286 else if (pszTopic == NULL) … … 274 290 } 275 291 VSIFPrintf( fpTransfer, "TABL %s\n", table ); 276 OGRILI1Layer *poLayer = new OGRILI1Layer(CPLStrdup(table), poSRS, TRUE, eType, this); 292 293 OGRILI1Layer *poLayer = new OGRILI1Layer(table, poSRS, TRUE, eType, this); 294 295 nLayers ++; 296 papoLayers = (OGRILI1Layer**)CPLRealloc(papoLayers, sizeof(OGRILI1Layer*) * nLayers); 297 papoLayers[nLayers-1] = poLayer; 298 277 299 return poLayer; 278 300 } trunk/gdal/ogr/ogrsf_frmts/ili/ogrili1layer.cpp
r13066 r13902 44 44 45 45 { 46 poFilterGeom = NULL;47 48 46 if( poSRSIn == NULL ) 49 47 poSRS = NULL; … … 69 67 70 68 OGRILI1Layer::~OGRILI1Layer() 71 72 { 69 { 70 int i; 71 72 for(i=0;i<nFeatures;i++) 73 { 74 delete papoFeatures[i]; 75 } 76 CPLFree(papoFeatures); 77 73 78 if( poFeatureDefn ) 74 79 poFeatureDefn->Release(); … … 76 81 if( poSRS != NULL ) 77 82 poSRS->Release(); 78 79 if( poFilterGeom != NULL ) 80 delete poFilterGeom; 81 } 82 83 /************************************************************************/ 84 /* SetSpatialFilter() */ 85 /************************************************************************/ 86 87 void OGRILI1Layer::SetSpatialFilter( OGRGeometry * poGeomIn ) 88 89 { 90 if( poFilterGeom != NULL ) 91 { 92 delete poFilterGeom; 93 poFilterGeom = NULL; 94 } 95 96 if( poGeomIn != NULL ) 97 poFilterGeom = poGeomIn->clone(); 98 } 99 100 OGRErr OGRILI1Layer::AddFeature (OGRFeature *poFeature) { 83 } 84 85 86 OGRErr OGRILI1Layer::AddFeature (OGRFeature *poFeature) 87 { 88 nFeatures++; 89 101 90 papoFeatures = (OGRFeature **) 102 CPLRealloc( papoFeatures, sizeof(void*) * ++nFeatures );91 CPLRealloc( papoFeatures, sizeof(void*) * nFeatures ); 103 92 104 93 papoFeatures[nFeatures-1] = poFeature; … … 119 108 /************************************************************************/ 120 109 121 OGRFeature *OGRILI1Layer::GetNextFeature() { 122 OGRFeature *poFeature = GetNextFeatureRef(); 123 return poFeature ? poFeature->Clone() : NULL; 110 OGRFeature *OGRILI1Layer::GetNextFeature() 111 { 112 OGRFeature *poFeature; 113 114 while(nFeatureIdx < nFeatures) 115 { 116 poFeature = GetNextFeatureRef(); 117 if (poFeature) 118 return poFeature->Clone(); 119 } 120 return NULL; 124 121 } 125 122 … … 162 159 /************************************************************************/ 163 160 164 int OGRILI1Layer::GetFeatureCount( int bForce ) {165 return nFeatures; 166 } 167 168 /************************************************************************/ 169 /* GetExtent() */ 170 /************************************************************************/ 171 172 OGRErr OGRILI1Layer::GetExtent(OGREnvelope *psExtent, int bForce ) { 173 return OGRLayer::GetExtent( psExtent, bForce );161 int OGRILI1Layer::GetFeatureCount( int bForce ) 162 { 163 if (m_poFilterGeom == NULL && m_poAttrQuery == NULL) 164 { 165 return nFeatures; 166 } 167 else 168 { 169 return OGRLayer::GetFeatureCount(bForce); 170 } 174 171 } 175 172
