[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [marble] /: turn SimpleArrayData into pointer to avoid memory
From: Niko Sams <niko.sams () gmail ! com>
Date: 2011-12-31 15:16:59
Message-ID: 20111231151659.5688B580C3 () git ! kde ! org
[Download RAW message or body]
Git commit a9cfdf1d2ef329d7d870a60a0b7ce4da1d5f02bf by Niko Sams.
Committed on 08/12/2011 at 19:38.
Pushed by nsams into branch 'master'.
turn SimpleArrayData into pointer to avoid memory management issues
M +3 -2 src/lib/geodata/data/GeoDataExtendedData.cpp
M +2 -2 src/lib/geodata/data/GeoDataExtendedData.h
M +1 -1 src/lib/geodata/data/GeoDataExtendedData_p.h
M +2 -2 src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp
M +12 -12 tests/TestGeoDataTrack.cpp
http://commits.kde.org/marble/a9cfdf1d2ef329d7d870a60a0b7ce4da1d5f02bf
diff --git a/src/lib/geodata/data/GeoDataExtendedData.cpp \
b/src/lib/geodata/data/GeoDataExtendedData.cpp index 17a1fe2..4437216 100644
--- a/src/lib/geodata/data/GeoDataExtendedData.cpp
+++ b/src/lib/geodata/data/GeoDataExtendedData.cpp
@@ -85,13 +85,14 @@ bool GeoDataExtendedData::contains( const QString &key ) const
return d->hash.contains( key );
}
-void GeoDataExtendedData::setSimpleArrayData( const QString& key, const \
GeoDataSimpleArrayData& values ) +void GeoDataExtendedData::setSimpleArrayData( const \
QString& key, GeoDataSimpleArrayData *values ) {
d->arrayHash[ key ] = values;
}
-GeoDataSimpleArrayData& GeoDataExtendedData::simpleArrayData( const QString& key )
+GeoDataSimpleArrayData* GeoDataExtendedData::simpleArrayData( const QString& key ) \
const {
+ if ( !d->arrayHash.contains( key ) ) return 0;
return d->arrayHash[ key ];
}
diff --git a/src/lib/geodata/data/GeoDataExtendedData.h \
b/src/lib/geodata/data/GeoDataExtendedData.h index b534544..d318fa6 100644
--- a/src/lib/geodata/data/GeoDataExtendedData.h
+++ b/src/lib/geodata/data/GeoDataExtendedData.h
@@ -92,12 +92,12 @@ class GEODATA_EXPORT GeoDataExtendedData : public GeoDataObject
/**
* @brief set SimpleArrayData for given @p key
*/
- void setSimpleArrayData( const QString& key, const GeoDataSimpleArrayData& \
values ); + void setSimpleArrayData( const QString& key, GeoDataSimpleArrayData* \
values );
/**
* @brief return SimpleArrayData for given @p key as a modifiable reference
*/
- GeoDataSimpleArrayData& simpleArrayData( const QString& key );
+ GeoDataSimpleArrayData* simpleArrayData( const QString& key ) const;
/**
diff --git a/src/lib/geodata/data/GeoDataExtendedData_p.h \
b/src/lib/geodata/data/GeoDataExtendedData_p.h index d52fe7e..9646e10 100644
--- a/src/lib/geodata/data/GeoDataExtendedData_p.h
+++ b/src/lib/geodata/data/GeoDataExtendedData_p.h
@@ -32,7 +32,7 @@ class GeoDataExtendedDataPrivate
}
QHash< QString, GeoDataData > hash;
- QHash< QString, GeoDataSimpleArrayData > arrayHash;
+ QHash< QString, GeoDataSimpleArrayData* > arrayHash;
};
diff --git a/src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp \
b/src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp index \
4fd8224..bb71d3c 100644
--- a/src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp
+++ b/src/lib/geodata/handlers/kml/KmlSimpleArrayDataTagHandler.cpp
@@ -43,14 +43,14 @@ GeoNode* KmlSimpleArrayDataTagHandler::parse( GeoParser& parser ) \
const GeoStackItem parentItem = parser.parentElement();
if ( parentItem.is<GeoDataExtendedData>() ) {
- GeoDataSimpleArrayData arrayData;
+ GeoDataSimpleArrayData *arrayData = new GeoDataSimpleArrayData();
QString name = parser.attribute( "name" ).trimmed();
parentItem.nodeAs<GeoDataExtendedData>()->setSimpleArrayData( name, \
arrayData ); #ifdef DEBUG_TAGS
mDebug() << "Parsed <" << kmlTag_SimpleArrayData << ">"
<< " parent item name: " << parentItem.qualifiedName().first;
#endif // DEBUG_TAGS
- return &parentItem.nodeAs<GeoDataExtendedData>()->simpleArrayData( name );
+ return arrayData;
}
return 0;
diff --git a/tests/TestGeoDataTrack.cpp b/tests/TestGeoDataTrack.cpp
index a00b3bb..c6bf16f 100644
--- a/tests/TestGeoDataTrack.cpp
+++ b/tests/TestGeoDataTrack.cpp
@@ -258,22 +258,22 @@ void TestGeoDataTrack::extendedDataParseTest()
QCOMPARE( track->size(), 7 );
{
- GeoDataSimpleArrayData cadence = track->extendedData().simpleArrayData( \
"cadence" );
- QCOMPARE( cadence.size(), 7 );
- QCOMPARE( cadence.valueAt( 0 ), QVariant( "86" ) );
- QCOMPARE( cadence.valueAt( 6 ), QVariant( "113" ) );
+ GeoDataSimpleArrayData *cadence = track->extendedData().simpleArrayData( \
"cadence" ); + QCOMPARE( cadence->size(), 7 );
+ QCOMPARE( cadence->valueAt( 0 ), QVariant( "86" ) );
+ QCOMPARE( cadence->valueAt( 6 ), QVariant( "113" ) );
}
{
- GeoDataSimpleArrayData hr = track->extendedData().simpleArrayData( \
"heartrate" );
- QCOMPARE( hr.size(), 7 );
- QCOMPARE( hr.valueAt( 0 ), QVariant( "181" ) );
- QCOMPARE( hr.valueAt( 6 ), QVariant( "173" ) );
+ GeoDataSimpleArrayData *hr = track->extendedData().simpleArrayData( \
"heartrate" ); + QCOMPARE( hr->size(), 7 );
+ QCOMPARE( hr->valueAt( 0 ), QVariant( "181" ) );
+ QCOMPARE( hr->valueAt( 6 ), QVariant( "173" ) );
}
{
- GeoDataSimpleArrayData power = track->extendedData().simpleArrayData( \
"power" );
- QCOMPARE( power.size(), 7 );
- QCOMPARE( power.valueAt( 0 ), QVariant( "327.0" ) );
- QCOMPARE( power.valueAt( 6 ), QVariant( "183.0" ) );
+ GeoDataSimpleArrayData *power = track->extendedData().simpleArrayData( \
"power" ); + QCOMPARE( power->size(), 7 );
+ QCOMPARE( power->valueAt( 0 ), QVariant( "327.0" ) );
+ QCOMPARE( power->valueAt( 6 ), QVariant( "183.0" ) );
}
delete dataDocument;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic