removing unnecessary data copies and redundant for loops. Thanks Moritz!

This commit is contained in:
Dennis Luxen 2011-03-29 09:53:48 +00:00
parent 26966f5cdb
commit 010627b75a

View File

@ -113,11 +113,7 @@ public:
} }
if(readBlob(input, &initData)) { if(readBlob(input, &initData)) {
char data[initData.charBuffer.size()]; if(!initData.PBFHeaderBlock.ParseFromArray(&(initData.charBuffer[0]), initData.charBuffer.size() ) ) {
for(unsigned i = 0; i < initData.charBuffer.size(); i++ ){
data[i] = initData.charBuffer[i];
}
if(!initData.PBFHeaderBlock.ParseFromArray(data, initData.charBuffer.size() ) ) {
std::cerr << "[error] Header not parseable!" << std::endl; std::cerr << "[error] Header not parseable!" << std::endl;
return false; return false;
} }
@ -314,9 +310,7 @@ private:
return false; return false;
} }
char data[size]; char data[size];
for(int i = 0; i < size; i++) { stream.read(data, size*sizeof(data[0]));
stream.read(&data[i], 1);
}
if ( !(threadData->PBFBlobHeader).ParseFromArray( data, size ) ){ if ( !(threadData->PBFBlobHeader).ParseFromArray( data, size ) ){
return false; return false;
@ -376,9 +370,7 @@ private:
} }
char data[size]; char data[size];
for(int i = 0; i < size; i++) { stream.read(data, sizeof(data[0])*size);
stream.read(&data[i], 1);
}
if ( !threadData->PBFBlob.ParseFromArray( data, size ) ) { if ( !threadData->PBFBlob.ParseFromArray( data, size ) ) {
std::cerr << "[error] failed to parse blob" << std::endl; std::cerr << "[error] failed to parse blob" << std::endl;
@ -424,11 +416,7 @@ private:
if ( !readBlob(stream, threadData) ) if ( !readBlob(stream, threadData) )
return false; return false;
char data[threadData->charBuffer.size()]; if ( !threadData->PBFprimitiveBlock.ParseFromArray( &(threadData->charBuffer[0]), threadData-> charBuffer.size() ) ) {
for(unsigned i = 0; i < threadData->charBuffer.size(); i++ ){
data[i] = threadData->charBuffer[i];
}
if ( !threadData->PBFprimitiveBlock.ParseFromArray( data, threadData-> charBuffer.size() ) ) {
std::cerr << "[error] failed to parse PrimitiveBlock" << std::endl; std::cerr << "[error] failed to parse PrimitiveBlock" << std::endl;
return false; return false;
} }