Пример #1
0
	/////////
	// SHPFile
	SHPFile::SHPFile(InStream &src)
	{
		mHeader = 0;
		Record *record = 0;
		
		try
		{
			mHeader = new FileHeader(src);
			while(!src.EndOfData())
			{
				RecordHeader recordHeader(src);
				
				switch(recordHeader.mShapeType)
				{
				case ShapeTypeNull:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePoint:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePolyline:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePolygon:
					record = new PolygonRecord(src);
					break;
					
				case ShapeTypeMultiPoint:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePointZ:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePolyLineZ:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePolygonZ:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypeMultiPointZ:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePointM:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePolyLineM:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypePolygonM:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypeMultiPointM:
					assert(!"not implemented yet");
					break;
					
				case ShapeTypeMultiPatch:
					assert(!"not implemented yet");
					break;
					
				default:
					assert(!"invalid shape type");
					break;
				}
				
				mRecords.push_back(record);
				record = 0;
			}
		}
		catch(...)
		{
			delete mHeader;
			for(Record *rec : mRecords)
				rec->Unref();
			if(record)
				record->Unref();
			throw;
		}
	}