// otherwise, copy tag data to temp buffer
string newTag = tag + type + value;
const int newTagDataLength = tagDataLength + newTag.size() + 1; // leave room for null-term
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength + 1); // '+1' for TagData null-term
-
+
// append newTag
strcat(originalTagData + tagDataLength, newTag.data()); // removes original null-term, appends newTag + null-term
-
+
// store temp buffer back in TagData
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
// copy original tag data to temp buffer
string newTag = tag + type;
const int newTagDataLength = tagDataLength + newTag.size() + 4; // leave room for new integer
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength + 1); // '+1' for TagData null-term
// append newTag
// store temp buffer back in TagData
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
// return success
return true;
// copy original tag data to temp buffer
string newTag = tag + type;
const int newTagDataLength = tagDataLength + newTag.size() + 4; // leave room for new float
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength + 1); // '+1' for TagData null-term
// append newTag
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
const int newTagDataLength = tagDataLength +
Constants::BAM_TAG_ARRAYBASE_SIZE +
numElements*sizeof(uint8_t);
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength+1); // '+1' for TagData's null-term
// write newTagBase (removes old null term)
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
const int newTagDataLength = tagDataLength +
Constants::BAM_TAG_ARRAYBASE_SIZE +
numElements*sizeof(int8_t);
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength+1); // '+1' for TagData's null-term
// write newTagBase (removes old null term)
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
const int newTagDataLength = tagDataLength +
Constants::BAM_TAG_ARRAYBASE_SIZE +
numElements*sizeof(uint16_t);
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength+1); // '+1' for TagData's null-term
// write newTagBase (removes old null term)
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
const int newTagDataLength = tagDataLength +
Constants::BAM_TAG_ARRAYBASE_SIZE +
numElements*sizeof(int16_t);
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength+1); // '+1' for TagData's null-term
// write newTagBase (removes old null term)
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
const int newTagDataLength = tagDataLength +
Constants::BAM_TAG_ARRAYBASE_SIZE +
numElements*sizeof(uint32_t);
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength+1); // '+1' for TagData's null-term
// write newTagBase (removes old null term)
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
const int newTagDataLength = tagDataLength +
Constants::BAM_TAG_ARRAYBASE_SIZE +
numElements*sizeof(int32_t);
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength+1); // '+1' for TagData's null-term
// write newTagBase (removes old null term)
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
const int newTagDataLength = tagDataLength +
Constants::BAM_TAG_ARRAYBASE_SIZE +
numElements*sizeof(float);
- char originalTagData[newTagDataLength];
+ char* originalTagData = new char[newTagDataLength];
memcpy(originalTagData, TagData.c_str(), tagDataLength+1); // '+1' for TagData's null-term
// write newTagBase (removes old null term)
const char* newTagData = (const char*)originalTagData;
TagData.assign(newTagData, newTagDataLength);
+ delete[] originalTagData;
+
// return success
return true;
}
if ( FindTag(tag, pTagData, originalTagDataLength, numBytesParsed) ) {
// make sure array is more than big enough
- char newTagData[originalTagDataLength + value.size()];
+ char* newTagData = new char[originalTagDataLength + value.size()];
// copy original tag data up til desired tag
const unsigned int beginningTagDataLength = numBytesParsed;
// save new tag data
TagData.assign(newTagData, endTagOffset + endTagDataLength);
+
+ delete[] newTagData;
+
return true;
}
if ( FindTag(tag, pTagData, originalTagDataLength, numBytesParsed) ) {
// make sure array is more than big enough
- char newTagData[originalTagDataLength + sizeof(value)];
+ char* newTagData = new char[originalTagDataLength + sizeof(value)];
// copy original tag data up til desired tag
const unsigned int beginningTagDataLength = numBytesParsed;
// save new tag data
TagData.assign(newTagData, endTagOffset + endTagDataLength);
+
+ delete[] newTagData;
+
return true;
}
if ( FindTag(tag, pTagData, originalTagDataLength, numBytesParsed) ) {
// make sure array is more than big enough
- char newTagData[originalTagDataLength + sizeof(value)];
+ char* newTagData = new char[originalTagDataLength + sizeof(value)];
// copy original tag data up til desired tag
const unsigned int beginningTagDataLength = numBytesParsed;
// save new tag data
TagData.assign(newTagData, endTagOffset + endTagDataLength);
+
+ delete[] newTagData;
+
return true;
}
// if tag found
if ( FindTag(tag, pTagData, originalTagDataLength, numBytesParsed) ) {
- char newTagData[originalTagDataLength];
+ char* newTagData = new char[originalTagDataLength];
// copy original tag data up til desired tag
pTagData -= 3;
// save new tag data
TagData.assign(newTagData, beginningTagDataLength + endTagDataLength);
+
+ delete[] newTagData;
+
return true;
}