int uiSize = 0; archive.read( "size", uiSize ); for( int i = 0; i < uiSize; i++ ) { QString key; cVariant val;  archive.read( (char*)QString("key%1").arg(i).latin1(), key ); QString objectID; archive.readObjectID( objectID ); if( objectID == "VARIANT" ) archive.readObject( &val );  std::pair< QString, cVariant > toInsert( key, val ); this->tags_.insert( toInsert ); }
this->load( archive );
	virtual void		Serialize(ISerialization &archive)	{		if( archive.isReading() )		{			int uiSize = 0;			archive.read( "size", uiSize );			for( int i = 0; i < uiSize; i++ )			{				QString key;				cVariant val;												archive.read( (char*)QString("key%1").arg(i).latin1(), key );				QString objectID;				archive.readObjectID( objectID );				if( objectID == "VARIANT" )					archive.readObject( &val );				std::pair< QString, cVariant > toInsert( key, val );				this->tags_.insert( toInsert );			}		}		else		{			int uiSize = tags_.size();			archive.write( "size", uiSize );			std::map< QString, cVariant >::iterator it = this->tags_.begin();			int i = 0;			while( it != this->tags_.end() )			{				QString key = it->first;				cVariant val = it->second;				archive.write( (char*)QString("key%1").arg(i).latin1(), key );				archive.writeObject( &val );				it++;				i++;			}		}		cSerializable::Serialize( archive );	}