Skip to content

hipo::bank: missing std::vector accessors for byte, short, and long; using the wrong type will silently give wrong results

hipo::bank has vector accessors: https://github.com/gavalian/hipo/blob/7f6d72988fde3f9f954b9b6e7915d3007a033f47/hipo4/bank.h#L296-L298

For the sake of completion, it would be nice to also have

  • std::vector<int> getShort(int item) const noexcept;
  • std::vector<int> getByte(int item) const noexcept;
  • std::vector<long> getLong(int item) const noexcept;

If you use the wrong one, you'll get the wrong results; for example:

// trackBank is `REC::Track`; item 'sector' is type 'byte'
trackBank.getInt("sector"); // returns [0, 1]
for(auto const row : trackBank.getRowList()) trackBank.getInt("sector", row)); // returns [2, 6]
for(auto const row : trackBank.getRowList()) trackBank.getByte("sector", row)); // returns [2, 6]

Similarly for the ones which take string parameters: https://github.com/gavalian/hipo/blob/7f6d72988fde3f9f954b9b6e7915d3007a033f47/hipo4/bank.h#L324-L326