From e6cab1c6baa63cb440d86027ec00d2aee61e44b7 Mon Sep 17 00:00:00 2001 From: arq5x <arq5x@virginia.edu> Date: Mon, 20 Jan 2014 13:27:31 -0500 Subject: [PATCH] [BUG] change getField() logic in GffRecord --- .../FileRecordTools/Records/GffRecord.cpp | 37 +++++++++++++++++++ src/utils/FileRecordTools/Records/GffRecord.h | 3 +- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/utils/FileRecordTools/Records/GffRecord.cpp b/src/utils/FileRecordTools/Records/GffRecord.cpp index f13c8fd8..a91ce159 100644 --- a/src/utils/FileRecordTools/Records/GffRecord.cpp +++ b/src/utils/FileRecordTools/Records/GffRecord.cpp @@ -120,3 +120,40 @@ void GffRecord::printNull(QuickString &outBuf) const } } +const QuickString &GffRecord::getField(int fieldNum) const +{ + if (fieldNum == 9 && _numFields == 9) { + return _group; + } + switch (fieldNum) { + case 1: + return _chrName; + break; + case 2: + return _source; + break; + case 3: + return _name; + break; + case 4: + return _startPosStr; + break; + case 5: + return _endPosStr; + break; + case 6: + return _score; + break; + case 7: + return _strand; + break; + case 8: + return _frame; + break; + default: + return Bed6Interval::getField(fieldNum); + break; + } +} + + diff --git a/src/utils/FileRecordTools/Records/GffRecord.h b/src/utils/FileRecordTools/Records/GffRecord.h index 195d4bea..b84d96a7 100644 --- a/src/utils/FileRecordTools/Records/GffRecord.h +++ b/src/utils/FileRecordTools/Records/GffRecord.h @@ -27,9 +27,10 @@ public: virtual const QuickString &getSource() const { return _source; } virtual const QuickString &getFrame() const { return _frame; } virtual const QuickString &getGroup() const { return _group; } - virtual const int getNumFields() const { return _numFields; } + virtual int getNumFields() const { return _numFields; } virtual void setNumFields(int val) { _numFields = val; } + virtual const QuickString &getField(int fieldNum) const; //Note: using the assignment operator in a GffRecord can potentially be a performance hit, //if the number of fields frequently differ between this object and the one being copied. const GffRecord &operator=(const GffRecord &other); -- GitLab