diff --git a/src/utils/FileRecordTools/Records/GffRecord.cpp b/src/utils/FileRecordTools/Records/GffRecord.cpp index f13c8fd8c59f357eaefb4136ddb5a1a4fa8d72cb..a91ce159eb819309959d0391f70d69e8217b6808 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 195d4beaf5453f946922b2d5ad3ba60d6da8aec5..b84d96a71384750e850de0ffe4d03bb3e8272dfd 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);