Move some getters from headers

This commit is contained in:
Gavin MacGregor
2025-10-29 19:37:56 +00:00
parent 6c46aba687
commit 1b3623d61b
10 changed files with 432 additions and 84 deletions

View File

@@ -36,6 +36,16 @@ DRCSPage::DRCSPage(const PageBase &other)
setControlBit(b, other.controlBit(b));
}
PageBase::PageFunctionEnum DRCSPage::pageFunction() const
{
return PFGlobalPOP;
}
PageBase::PacketCodingEnum DRCSPage::packetCoding() const
{
return Coding7bit;
}
int DRCSPage::drcsMode(int c) const
{
if (!packetExists(28, 3))

View File

@@ -30,8 +30,8 @@ public:
DRCSPage(const PageBase &other);
// TODO PFNormalPOP as well?
PageFunctionEnum pageFunction() const { return PFGlobalPOP; }
PacketCodingEnum packetCoding() const override { return Coding7bit; }
PageFunctionEnum pageFunction() const;
PacketCodingEnum packetCoding() const;
int drcsMode(int c) const;
bool ptu(int c, uchar *data) const;

View File

@@ -80,6 +80,16 @@ void LevelOnePage::clearPage()
// If clearPage() is called outside constructor, we need to implement m_enhancements.clear();
}
PageBase::PageFunctionEnum LevelOnePage::pageFunction() const
{
return PFLevelOnePage;
}
PageBase::PacketCodingEnum LevelOnePage::packetCoding() const
{
return Coding7bit;
}
bool LevelOnePage::isEmpty() const
{
if (!m_enhancements.isEmpty())
@@ -295,10 +305,47 @@ bool LevelOnePage::setControlBit(int b, bool active)
return PageX26Base::setControlBit(b, active);
}
int LevelOnePage::maxEnhancements() const
{
return 208;
}
/* void LevelOnePage::setSubPageNumber(int newSubPageNumber) { m_subPageNumber = newSubPageNumber; } */
void LevelOnePage::setCycleValue(int newValue) { m_cycleValue = newValue; };
void LevelOnePage::setCycleType(CycleTypeEnum newType) { m_cycleType = newType; }
void LevelOnePage::setDefaultCharSet(int newDefaultCharSet) { m_defaultCharSet = newDefaultCharSet; }
int LevelOnePage::cycleValue() const
{
return m_cycleValue;
}
void LevelOnePage::setCycleValue(int newValue)
{
m_cycleValue = newValue;
}
LevelOnePage::CycleTypeEnum LevelOnePage::cycleType() const
{
return m_cycleType;
}
void LevelOnePage::setCycleType(CycleTypeEnum newType)
{
m_cycleType = newType;
}
int LevelOnePage::defaultCharSet() const
{
return m_defaultCharSet;
}
void LevelOnePage::setDefaultCharSet(int newDefaultCharSet)
{
m_defaultCharSet = newDefaultCharSet;
}
int LevelOnePage::defaultNOS() const
{
return m_defaultNOS;
}
void LevelOnePage::setDefaultNOS(int defaultNOS)
{
@@ -309,6 +356,11 @@ void LevelOnePage::setDefaultNOS(int defaultNOS)
PageX26Base::setControlBit(C14NOS, m_defaultNOS & 0x4);
}
int LevelOnePage::secondCharSet() const
{
return m_secondCharSet;
}
void LevelOnePage::setSecondCharSet(int newSecondCharSet)
{
m_secondCharSet = newSecondCharSet;
@@ -316,8 +368,18 @@ void LevelOnePage::setSecondCharSet(int newSecondCharSet)
m_secondNOS = 0x7;
}
int LevelOnePage::secondNOS() const
{
return m_secondNOS;
}
void LevelOnePage::setSecondNOS(int newSecondNOS) { m_secondNOS = newSecondNOS; }
unsigned char LevelOnePage::character(int r, int c) const
{
return PageX26Base::packetExists(r) ? PageX26Base::packet(r).at(c) : 0x20;
}
void LevelOnePage::setCharacter(int r, int c, unsigned char newCharacter)
{
QByteArray pkt;
@@ -338,10 +400,45 @@ void LevelOnePage::setCharacter(int r, int c, unsigned char newCharacter)
}
}
void LevelOnePage::setDefaultScreenColour(int newDefaultScreenColour) { m_defaultScreenColour = newDefaultScreenColour; }
void LevelOnePage::setDefaultRowColour(int newDefaultRowColour) { m_defaultRowColour = newDefaultRowColour; }
void LevelOnePage::setColourTableRemap(int newColourTableRemap) { m_colourTableRemap = newColourTableRemap; }
void LevelOnePage::setBlackBackgroundSubst(bool newBlackBackgroundSubst) { m_blackBackgroundSubst = newBlackBackgroundSubst; }
int LevelOnePage::defaultScreenColour() const
{
return m_defaultScreenColour;
}
void LevelOnePage::setDefaultScreenColour(int newDefaultScreenColour)
{
m_defaultScreenColour = newDefaultScreenColour;
}
int LevelOnePage::defaultRowColour() const
{
return m_defaultRowColour;
}
void LevelOnePage::setDefaultRowColour(int newDefaultRowColour)
{
m_defaultRowColour = newDefaultRowColour;
}
int LevelOnePage::colourTableRemap() const
{
return m_colourTableRemap;
}
void LevelOnePage::setColourTableRemap(int newColourTableRemap)
{
m_colourTableRemap = newColourTableRemap;
}
bool LevelOnePage::blackBackgroundSubst() const
{
return m_blackBackgroundSubst;
}
void LevelOnePage::setBlackBackgroundSubst(bool newBlackBackgroundSubst)
{
m_blackBackgroundSubst = newBlackBackgroundSubst;
}
int LevelOnePage::CLUT(int index, int renderLevel) const
{
@@ -552,36 +649,101 @@ int LevelOnePage::levelRequired() const
return levelSeen;
}
void LevelOnePage::setLeftSidePanelDisplayed(bool newLeftSidePanelDisplayed) { m_leftSidePanelDisplayed = newLeftSidePanelDisplayed; }
void LevelOnePage::setRightSidePanelDisplayed(bool newRightSidePanelDisplayed) { m_rightSidePanelDisplayed = newRightSidePanelDisplayed; }
void LevelOnePage::setSidePanelColumns(int newSidePanelColumns) { m_sidePanelColumns = newSidePanelColumns; }
void LevelOnePage::setSidePanelStatusL25(bool newSidePanelStatusL25) { m_sidePanelStatusL25 = newSidePanelStatusL25; }
bool LevelOnePage::leftSidePanelDisplayed() const
{
return m_leftSidePanelDisplayed;
}
void LevelOnePage::setLeftSidePanelDisplayed(bool newLeftSidePanelDisplayed)
{
m_leftSidePanelDisplayed = newLeftSidePanelDisplayed;
}
bool LevelOnePage::rightSidePanelDisplayed() const
{
return m_rightSidePanelDisplayed;
}
void LevelOnePage::setRightSidePanelDisplayed(bool newRightSidePanelDisplayed)
{
m_rightSidePanelDisplayed = newRightSidePanelDisplayed;
}
int LevelOnePage::sidePanelColumns() const
{
return m_sidePanelColumns;
}
void LevelOnePage::setSidePanelColumns(int newSidePanelColumns)
{
m_sidePanelColumns = newSidePanelColumns;
}
bool LevelOnePage::sidePanelStatusL25() const
{
return m_sidePanelStatusL25;
}
void LevelOnePage::setSidePanelStatusL25(bool newSidePanelStatusL25)
{
m_sidePanelStatusL25 = newSidePanelStatusL25;
}
int LevelOnePage::fastTextLinkPageNumber(int linkNumber) const
{
return m_fastTextLink[linkNumber].pageNumber;
}
void LevelOnePage::setFastTextLinkPageNumber(int linkNumber, int pageNumber)
{
m_fastTextLink[linkNumber].pageNumber = pageNumber;
}
int LevelOnePage::composeLinkFunction(int linkNumber) const
{
return m_composeLink[linkNumber].function;
}
void LevelOnePage::setComposeLinkFunction(int linkNumber, int newFunction)
{
m_composeLink[linkNumber].function = newFunction;
}
bool LevelOnePage::composeLinkLevel2p5(int linkNumber) const
{
return m_composeLink[linkNumber].level2p5;
}
void LevelOnePage::setComposeLinkLevel2p5(int linkNumber, bool newRequired)
{
m_composeLink[linkNumber].level2p5 = newRequired;
}
bool LevelOnePage::composeLinkLevel3p5(int linkNumber) const
{
return m_composeLink[linkNumber].level3p5;
}
void LevelOnePage::setComposeLinkLevel3p5(int linkNumber, bool newRequired)
{
m_composeLink[linkNumber].level3p5 = newRequired;
}
int LevelOnePage::composeLinkPageNumber(int linkNumber) const
{
return m_composeLink[linkNumber].pageNumber;
}
void LevelOnePage::setComposeLinkPageNumber(int linkNumber, int newPageNumber)
{
m_composeLink[linkNumber].pageNumber = newPageNumber;
}
int LevelOnePage::composeLinkSubPageCodes(int linkNumber) const
{
return m_composeLink[linkNumber].subPageCodes;
}
void LevelOnePage::setComposeLinkSubPageCodes(int linkNumber, int newSubPageCodes)
{
m_composeLink[linkNumber].subPageCodes = newSubPageCodes;

View File

@@ -42,8 +42,8 @@ public:
LevelOnePage();
LevelOnePage(const PageBase &other);
PageFunctionEnum pageFunction() const override { return PFLevelOnePage; }
PacketCodingEnum packetCoding() const override { return Coding7bit; }
PageFunctionEnum pageFunction() const override;
PacketCodingEnum packetCoding() const override;
bool isEmpty() const override;
@@ -55,30 +55,30 @@ public:
void clearPage();
int maxEnhancements() const override { return 208; };
int maxEnhancements() const override;
/* void setSubPageNumber(int); */
int cycleValue() const { return m_cycleValue; };
int cycleValue() const;
void setCycleValue(int newValue);
CycleTypeEnum cycleType() const { return m_cycleType; };
CycleTypeEnum cycleType() const;
void setCycleType(CycleTypeEnum newType);
int defaultCharSet() const { return m_defaultCharSet; }
int defaultCharSet() const;
void setDefaultCharSet(int newDefaultCharSet);
int defaultNOS() const { return m_defaultNOS; }
int defaultNOS() const;
void setDefaultNOS(int defaultNOS);
int secondCharSet() const { return m_secondCharSet; }
int secondCharSet() const;
void setSecondCharSet(int newSecondCharSet);
int secondNOS() const { return m_secondNOS; }
int secondNOS() const;
void setSecondNOS(int newSecondNOS);
unsigned char character(int r, int c) const { return PageX26Base::packetExists(r) ? PageX26Base::packet(r).at(c) : 0x20; }
unsigned char character(int r, int c) const;
void setCharacter(int r, int c, unsigned char newChar);
int defaultScreenColour() const { return m_defaultScreenColour; }
int defaultScreenColour() const;
void setDefaultScreenColour(int newDefaultScreenColour);
int defaultRowColour() const { return m_defaultRowColour; }
int defaultRowColour() const;
void setDefaultRowColour(int newDefaultRowColour);
int colourTableRemap() const { return m_colourTableRemap; }
int colourTableRemap() const;
void setColourTableRemap(int newColourTableRemap);
bool blackBackgroundSubst() const { return m_blackBackgroundSubst; }
bool blackBackgroundSubst() const;
void setBlackBackgroundSubst(bool newBlackBackgroundSubst);
int CLUT(int index, int renderLevel=3) const;
void setCLUT(int index, int newColour);
@@ -88,25 +88,25 @@ public:
int dCLUT(bool globalDrcs, int mode, int index) const;
void setDCLUT(bool globalDrcs, int mode, int index, int colour);
int levelRequired() const;
bool leftSidePanelDisplayed() const { return m_leftSidePanelDisplayed; }
bool leftSidePanelDisplayed() const;
void setLeftSidePanelDisplayed(bool newLeftSidePanelDisplayed);
bool rightSidePanelDisplayed() const { return m_rightSidePanelDisplayed; }
bool rightSidePanelDisplayed() const;
void setRightSidePanelDisplayed(bool newRightSidePanelDisplayed);
int sidePanelColumns() const { return m_sidePanelColumns; }
int sidePanelColumns() const;
void setSidePanelColumns(int newSidePanelColumns);
bool sidePanelStatusL25() const { return m_sidePanelStatusL25; }
bool sidePanelStatusL25() const;
void setSidePanelStatusL25(bool newSidePanelStatusL25);
int fastTextLinkPageNumber(int linkNumber) const { return m_fastTextLink[linkNumber].pageNumber; }
int fastTextLinkPageNumber(int linkNumber) const;
void setFastTextLinkPageNumber(int linkNumber, int pageNumber);
int composeLinkFunction(int linkNumber) const { return m_composeLink[linkNumber].function; }
int composeLinkFunction(int linkNumber) const;
void setComposeLinkFunction(int linkNumber, int newFunction);
bool composeLinkLevel2p5(int linkNumber) const { return m_composeLink[linkNumber].level2p5; }
bool composeLinkLevel2p5(int linkNumber) const;
void setComposeLinkLevel2p5(int linkNumber, bool newRequired);
bool composeLinkLevel3p5(int linkNumber) const { return m_composeLink[linkNumber].level3p5; }
bool composeLinkLevel3p5(int linkNumber) const;
void setComposeLinkLevel3p5(int linkNumber, bool newRequired);
int composeLinkPageNumber(int linkNumber) const { return m_composeLink[linkNumber].pageNumber; }
int composeLinkPageNumber(int linkNumber) const;
void setComposeLinkPageNumber(int linkNumber, int newPageNumber);
int composeLinkSubPageCodes(int linkNumber) const { return m_composeLink[linkNumber].subPageCodes; }
int composeLinkSubPageCodes(int linkNumber) const;
void setComposeLinkSubPageCodes(int linkNumber, int newSubPageCodes);
private:

View File

@@ -27,6 +27,16 @@ PageBase::PageBase()
m_controlBits[b] = false;
}
PageBase::PageFunctionEnum PageBase::pageFunction() const
{
return PFUnknown;
}
PageBase::PacketCodingEnum PageBase::packetCoding() const
{
return CodingUnknown;
}
bool PageBase::isEmpty() const
{
for (int y=0; y<26; y++)
@@ -40,6 +50,16 @@ bool PageBase::isEmpty() const
return true;
}
QByteArray PageBase::packet(int y) const
{
return m_displayPackets[y];
}
QByteArray PageBase::packet(int y, int d) const
{
return m_designationPackets[y-26][d];
}
bool PageBase::setPacket(int y, QByteArray pkt)
{
m_displayPackets[y] = pkt;
@@ -54,6 +74,16 @@ bool PageBase::setPacket(int y, int d, QByteArray pkt)
return true;
}
bool PageBase::packetExists(int y) const
{
return !m_displayPackets[y].isEmpty();
}
bool PageBase::packetExists(int y, int d) const
{
return !m_designationPackets[y-26][d].isEmpty();
}
bool PageBase::clearPacket(int y)
{
m_displayPackets[y] = QByteArray();
@@ -77,6 +107,11 @@ void PageBase::clearAllPackets()
clearPacket(y, d);
}
bool PageBase::controlBit(int b) const
{
return m_controlBits[b];
}
bool PageBase::setControlBit(int b, bool active)
{
m_controlBits[b] = active;

View File

@@ -22,11 +22,8 @@
#include <QByteArray>
// If we inherit from QObject then we can't copy construct, so "make a new subpage that's a copy of this one" wouldn't work
class PageBase //: public QObject
class PageBase
{
//Q_OBJECT
public:
enum ControlBitsEnum { C4ErasePage, C5Newsflash, C6Subtitle, C7SuppressHeader, C8Update, C9InterruptedSequence, C10InhibitDisplay, C11SerialMagazine, C12NOS, C13NOS, C14NOS };
// Available Page Functions according to 9.4.2.1 of the spec
@@ -36,22 +33,22 @@ public:
PageBase();
virtual PageFunctionEnum pageFunction() const { return PFUnknown; }
virtual PacketCodingEnum packetCoding() const { return CodingUnknown; }
virtual PageFunctionEnum pageFunction() const;
virtual PacketCodingEnum packetCoding() const;
virtual bool isEmpty() const;
virtual QByteArray packet(int y) const { return m_displayPackets[y]; }
virtual QByteArray packet(int y, int d) const { return m_designationPackets[y-26][d]; }
virtual QByteArray packet(int y) const;
virtual QByteArray packet(int y, int d) const;
virtual bool setPacket(int y, QByteArray pkt);
virtual bool setPacket(int y, int d, QByteArray pkt);
virtual bool packetExists(int y) const { return !m_displayPackets[y].isEmpty(); }
virtual bool packetExists(int y, int d) const { return !m_designationPackets[y-26][d].isEmpty(); }
virtual bool packetExists(int y) const;
virtual bool packetExists(int y, int d) const ;
virtual bool clearPacket(int y);
virtual bool clearPacket(int y, int d);
virtual void clearAllPackets();
virtual bool controlBit(int b) const { return m_controlBits[b]; }
virtual bool controlBit(int b) const;
virtual bool setControlBit(int b, bool active);
private:

View File

@@ -21,6 +21,11 @@
#include "pagex26base.h"
X26TripletList *PageX26Base::enhancements()
{
return &m_enhancements;
}
QByteArray PageX26Base::packetFromEnhancementList(int p) const
{
QByteArray result(40, 0x00);
@@ -79,3 +84,8 @@ void PageX26Base::setEnhancementListFromPacket(int p, QByteArray pkt)
while (m_enhancements.size()>1 && m_enhancements.at(m_enhancements.size()-2).mode() == 0x1f && m_enhancements.at(m_enhancements.size()-2).address() == 0x3f && m_enhancements.at(m_enhancements.size()-2).data() == newX26Triplet.data())
m_enhancements.removeLast();
}
bool PageX26Base::packetFromEnhancementListNeeded(int n) const
{
return ((m_enhancements.size()+12) / 13) > n;
}

View File

@@ -26,18 +26,16 @@
#include "pagebase.h"
#include "x26triplets.h"
class PageX26Base : public PageBase //: public QObject
class PageX26Base : public PageBase
{
//Q_OBJECT
public:
X26TripletList *enhancements() { return &m_enhancements; };
X26TripletList *enhancements();
virtual int maxEnhancements() const =0;
protected:
QByteArray packetFromEnhancementList(int p) const;
void setEnhancementListFromPacket(int p, QByteArray pkt);
bool packetFromEnhancementListNeeded(int n) const { return ((m_enhancements.size()+12) / 13) > n; };
bool packetFromEnhancementListNeeded(int n) const;
X26TripletList m_enhancements;
};

View File

@@ -26,6 +26,41 @@ X26Triplet::X26Triplet(int address, int mode, int data)
m_data = data;
}
int X26Triplet::address() const
{
return m_address;
}
int X26Triplet::mode() const
{
return m_mode;
}
int X26Triplet::modeExt() const
{
return (m_address >= 40) ? m_mode : (m_mode | 0x20);
}
int X26Triplet::data() const
{
return m_data;
}
int X26Triplet::addressRow() const
{
return (m_address == 40) ? 24 :m_address-40;
}
int X26Triplet::addressColumn() const
{
return (m_address);
}
bool X26Triplet::isRowTriplet() const
{
return (m_address >= 40);
}
void X26Triplet::setAddress(int address)
{
m_address = address;
@@ -51,6 +86,26 @@ void X26Triplet::setAddressColumn(int addressColumn)
m_address = addressColumn;
}
int X26Triplet::objectSource() const
{
return (m_address & 0x18) >> 3;
}
int X26Triplet::objectLocalDesignationCode() const
{
return (((m_address & 0x01) << 3) | (m_data >> 4));
}
int X26Triplet::objectLocalTripletNumber() const
{
return m_data & 0x0f;
}
int X26Triplet::objectLocalIndex() const
{
return objectLocalDesignationCode() * 13 + objectLocalTripletNumber();
}
void X26Triplet::setObjectLocalDesignationCode(int i)
{
m_address = (m_address & 0x38) | (i >> 3);
@@ -68,6 +123,46 @@ void X26Triplet::setObjectLocalIndex(int i)
m_data = (((i / 13) & 0x07) << 4) | (i % 13);
}
int X26Triplet::activePositionRow() const
{
return m_activePositionRow;
}
int X26Triplet::activePositionColumn() const
{
return m_activePositionColumn;
}
int X26Triplet::activePositionRow1p5() const
{
return m_activePositionRow1p5;
}
int X26Triplet::activePositionColumn1p5() const
{
return m_activePositionColumn1p5;
}
X26Triplet::X26TripletError X26Triplet::error() const
{
return m_error;
}
bool X26Triplet::reservedMode() const
{
return m_reservedMode;
}
bool X26Triplet::reservedData() const
{
return m_reservedData;
}
bool X26Triplet::activePosition1p5Differs() const
{
return m_activePosition1p5Differs;
}
void X26TripletList::updateInternalData()
{
@@ -282,6 +377,35 @@ void X26TripletList::replace(int i, const X26Triplet &value)
updateInternalData();
}
void X26TripletList::removeLast()
{
m_list.removeLast();
}
const X26Triplet &X26TripletList::at(int i) const
{
return m_list.at(i);
}
bool X26TripletList::isEmpty() const
{
return m_list.isEmpty();
}
void X26TripletList::reserve(int alloc)
{
m_list.reserve(alloc);
}
int X26TripletList::size() const
{
return m_list.size();
}
const QList<int> &X26TripletList::objects(int t) const
{
return m_objects[t];
};
X26TripletList::ActivePosition::ActivePosition()
{
@@ -293,6 +417,21 @@ void X26TripletList::ActivePosition::reset()
m_row = m_column = -1;
}
int X26TripletList::ActivePosition::row() const
{
return m_row; // return (m_row == -1) ? 0 : m_row;
}
int X26TripletList::ActivePosition::column() const
{
return m_column; // return (m_column == -1) ? 0 : m_column;
}
bool X26TripletList::ActivePosition::isDeployed() const
{
return m_row != -1;
}
bool X26TripletList::ActivePosition::setRow(int row)
{
if (row < m_row)

View File

@@ -36,13 +36,13 @@ public:
X26Triplet(int address, int mode, int data);
int address() const { return m_address; }
int mode() const { return m_mode; }
int modeExt() const { return (m_address >= 40) ? m_mode : (m_mode | 0x20); }
int data() const { return m_data; }
int addressRow() const { return (m_address == 40) ? 24 :m_address-40; }
int addressColumn() const { return (m_address); }
bool isRowTriplet() const { return (m_address >= 40); }
int address() const;
int mode() const;
int modeExt() const;
int data() const;
int addressRow() const;
int addressColumn() const;
bool isRowTriplet() const;
void setAddress(int address);
void setMode(int mode);
@@ -50,23 +50,23 @@ public:
void setAddressRow(int addressRow);
void setAddressColumn(int addressColumn);
int objectSource() const { return (m_address & 0x18) >> 3; }
int objectSource() const;
int objectLocalDesignationCode() const { return (((m_address & 0x01) << 3) | (m_data >> 4)); }
int objectLocalTripletNumber() const { return m_data & 0x0f; }
int objectLocalIndex() const { return objectLocalDesignationCode() * 13 + objectLocalTripletNumber(); }
int objectLocalDesignationCode() const;
int objectLocalTripletNumber() const;
int objectLocalIndex() const;
void setObjectLocalDesignationCode(int i);
void setObjectLocalTripletNumber(int i);
void setObjectLocalIndex(int i);
int activePositionRow() const { return m_activePositionRow; }
int activePositionColumn() const { return m_activePositionColumn; }
int activePositionRow1p5() const { return m_activePositionRow1p5; }
int activePositionColumn1p5() const { return m_activePositionColumn1p5; }
X26TripletError error() const { return m_error; }
bool reservedMode() const { return m_reservedMode; }
bool reservedData() const { return m_reservedData; }
bool activePosition1p5Differs() const { return m_activePosition1p5Differs; }
int activePositionRow() const;
int activePositionColumn() const;
int activePositionRow1p5() const;
int activePositionColumn1p5() const;
X26TripletError error() const;
bool reservedMode() const;
bool reservedData() const;
bool activePosition1p5Differs() const;
friend class X26TripletList;
@@ -91,14 +91,13 @@ public:
void insert(int i, const X26Triplet &value);
void removeAt(int i);
void replace(int i, const X26Triplet &value);
void removeLast();
const X26Triplet &at(int i) const;
bool isEmpty() const;
void reserve(int alloc);
int size() const;
void removeLast() { m_list.removeLast(); }
const X26Triplet &at(int i) const { return m_list.at(i); }
bool isEmpty() const { return m_list.isEmpty(); }
void reserve(int alloc) { m_list.reserve(alloc); }
int size() const { return m_list.size(); }
const QList<int> &objects(int t) const { return m_objects[t]; };
const QList<int> &objects(int t) const;
private:
void updateInternalData();
@@ -111,11 +110,9 @@ private:
public:
ActivePosition();
void reset();
// int row() const { return (m_row == -1) ? 0 : m_row; }
// int column() const { return (m_column == -1) ? 0 : m_column; }
int row() const { return m_row; }
int column() const { return m_column; }
bool isDeployed() const { return m_row != -1; }
int row() const;
int column() const;
bool isDeployed() const;
bool setRow(int);
bool setColumn(int);
// bool setRowAndColumn(int, int);