#include "matrixlayer.h"


class PcbCamMatrixLayerData : public QSharedData
{
public:
    PcbCamMatrixLayerData() { }
    PcbCamMatrixLayerData(const PcbCamMatrixLayerData &other): QSharedData(other),
        id(other.id),
        row(other.row),
        context(other.context),
        type(other.type),
        name(other.name),
        oldName(other.oldName),
        polarity(other.polarity),
        startName(other.startName),
        endName(other.endName){ }
    ~PcbCamMatrixLayerData() { }

    int id {0};
    int row {0};
    PcbCam::LayerContext context {PcbCam::MiscContext};
    QString type {"signal"};
    QString name ;
    QString oldName;
    PcbCam::Polarity polarity {PcbCam::Positive};
    QString startName;
    QString endName;

};

PcbCamMatrixLayer::PcbCamMatrixLayer() : d(new PcbCamMatrixLayerData)
{

}

PcbCamMatrixLayer::PcbCamMatrixLayer(const PcbCamMatrixLayer &rhs) : d(rhs.d)
{

}

PcbCamMatrixLayer &PcbCamMatrixLayer::operator=(const PcbCamMatrixLayer &rhs)
{
    if (this != &rhs)
        d.operator=(rhs.d);
    return *this;
}

PcbCamMatrixLayer::~PcbCamMatrixLayer()
{

}

int PcbCamMatrixLayer::id() const
{
    return d->id;
}

void PcbCamMatrixLayer::setId(int iId)
{
    d->id = iId;
}

int PcbCamMatrixLayer::row() const
{
    return d->row;
}

void PcbCamMatrixLayer::setRow(int iRow)
{
    d->row = iRow;
}

PcbCam::LayerContext PcbCamMatrixLayer::context() const
{
    return d->context;
}

void PcbCamMatrixLayer::setContext(PcbCam::LayerContext iContext)
{
    d->context = iContext;
}

QString PcbCamMatrixLayer::type() const
{
    return d->type;
}

void PcbCamMatrixLayer::setType(const QString &iType)
{
    d->type = iType;
}

QString PcbCamMatrixLayer::name() const
{
    return d->name;
}

void PcbCamMatrixLayer::setName(const QString &iName)
{
    d->name = iName;
}

QString PcbCamMatrixLayer::oldName() const
{
    return d->oldName;
}

void PcbCamMatrixLayer::setOldName(const QString &iOldName)
{
    d->oldName = iOldName;
}

PcbCam::Polarity PcbCamMatrixLayer::polarity() const
{
    return d->polarity;
}

void PcbCamMatrixLayer::setPolarity(PcbCam::Polarity iPolarity)
{
    d->polarity = iPolarity;
}

QString PcbCamMatrixLayer::startName() const
{
    return d->startName;
}

void PcbCamMatrixLayer::setStartName(const QString iName)
{
    d->startName = iName;
}

QString PcbCamMatrixLayer::endName() const
{
    return d->endName;
}

void PcbCamMatrixLayer::setEndName(const QString &iName)
{
    d->endName = iName;
}
