[engraving] replaced QList to std. Part 2

This commit is contained in:
Igor Korsukov 2022-04-13 17:02:08 +03:00
parent 60f303676e
commit cfc906d130
12 changed files with 48 additions and 45 deletions

View file

@ -42,18 +42,14 @@ int main()
{
std::cout << "Hello World" << std::endl;
struct A {
int a = 0;
};
std::list<int> vec1 = { 1, 2, 3, 4, 5 };
std::list<int> vec2 = { 1, 2, 3 };
std::vector<A> vec;
int v = *vec2.end();
std::cout << "v: " << v << std::endl;
A a = value(vec, 0);
if (std::is_pointer<A>::value) {
std::cout << "pointer" << std::endl;
} else {
std::cout << "not pointer" << std::endl;
if (std::equal(vec1.begin(), vec1.end(), vec2.begin())) {
std::cout << " equal" << std::endl;
}
std::cout << " Goodbye!" << std::endl;

View file

@ -343,7 +343,7 @@ void LayoutMeasure::createMMRest(const LayoutOptions& options, Score* score, Mea
// try to find a match in mmr
bool found = false;
for (EngravingItem* ee : s->annotations()) {
if (e->linkList().contains(ee)) {
if (mu::contains(e->linkList(), static_cast<EngravingObject*>(ee))) {
found = true;
break;
}
@ -367,7 +367,7 @@ void LayoutMeasure::createMMRest(const LayoutOptions& options, Score* score, Mea
// try to find a match in underlying measure
bool found = false;
for (EngravingItem* ee : underlyingSeg->annotations()) {
if (e->linkList().contains(ee)) {
if (mu::contains(e->linkList(), static_cast<EngravingObject*>(ee))) {
found = true;
break;
}

View file

@ -2294,7 +2294,7 @@ void Score::deleteItem(EngravingItem* el)
Tuplet* tuplet = chord->tuplet();
if (tuplet) {
QList<EngravingObject*> tl = tuplet->linkList();
std::list<EngravingObject*> tl = tuplet->linkList();
for (EngravingObject* e : rest->linkList()) {
DurationElement* de = toDurationElement(e);
for (EngravingObject* ee : qAsConst(tl)) {
@ -3078,7 +3078,7 @@ void Score::cmdDeleteSelection()
for (EngravingItem* e : el) {
// these are the linked elements we are about to delete
QList<EngravingObject*> links;
std::list<EngravingObject*> links;
if (e->links()) {
links = *e->links();
}
@ -3122,11 +3122,11 @@ void Score::cmdDeleteSelection()
if (deletedSpanners.contains(spanner)) {
continue;
} else {
QList<EngravingObject*> linkedSpanners;
std::list<EngravingObject*> linkedSpanners;
if (spanner->links()) {
linkedSpanners = *spanner->links();
} else {
linkedSpanners.append(spanner);
linkedSpanners.push_back(spanner);
}
for (EngravingObject* se : qAsConst(linkedSpanners)) {
deletedSpanners.append(toSpanner(se));
@ -5542,7 +5542,7 @@ void Score::undoAddElement(EngravingItem* element, bool ctrlModifier)
//
if (element->isSlur() && sp != nsp) {
if (sp->startElement()) {
QList<EngravingObject*> sel = sp->startElement()->linkList();
std::list<EngravingObject*> sel = sp->startElement()->linkList();
for (EngravingObject* ee : qAsConst(sel)) {
EngravingItem* e = static_cast<EngravingItem*>(ee);
if (e->score() == nsp->score() && e->track() == nsp->track()) {
@ -5552,7 +5552,7 @@ void Score::undoAddElement(EngravingItem* element, bool ctrlModifier)
}
}
if (sp->endElement()) {
QList<EngravingObject*> eel = sp->endElement()->linkList();
std::list<EngravingObject*> eel = sp->endElement()->linkList();
for (EngravingObject* ee : qAsConst(eel)) {
EngravingItem* e = static_cast<EngravingItem*>(ee);
if (e->score() == nsp->score() && e->track() == nsp->track2()) {
@ -5981,7 +5981,7 @@ void Score::undoInsertTime(const Fraction& tick, const Fraction& len)
}
}
for (Spanner* ss : sl) {
if (ss->linkList().contains(s)) {
if (mu::contains(ss->linkList(), static_cast<EngravingObject*>(s))) {
append = false;
break;
}

View file

@ -1031,7 +1031,7 @@ bool EngravingItem::readProperties(XmlReader& e)
}
#endif
Q_ASSERT(!_links->contains(this));
_links->append(this);
_links->push_back(this);
} else if (tag == "tick") {
int val = e.readInt();
if (val >= 0) {

View file

@ -120,7 +120,7 @@ EngravingObject::~EngravingObject()
}
if (_links) {
_links->removeOne(this);
_links->remove(this);
if (_links->empty()) {
delete _links;
_links = 0;
@ -649,11 +649,11 @@ void EngravingObject::linkTo(EngravingObject* element)
} else {
_links = new LinkedObjects(score());
}
_links->append(element);
_links->push_back(element);
element->_links = _links;
}
Q_ASSERT(!_links->contains(this));
_links->append(this);
_links->push_back(this);
}
//---------------------------------------------------------
@ -667,7 +667,7 @@ void EngravingObject::unlink()
}
Q_ASSERT(_links->contains(this));
_links->removeOne(this);
_links->remove(this);
// if link list is empty, remove list
if (_links->size() <= 1) {
@ -692,7 +692,7 @@ bool EngravingObject::isLinked(EngravingObject* se) const
}
if (se == nullptr) {
return !_links->isEmpty() && _links->mainElement() != this;
return !_links->empty() && _links->mainElement() != this;
}
return _links->contains(se);
@ -713,13 +713,13 @@ void EngravingObject::undoUnlink()
// linkList
//---------------------------------------------------------
QList<EngravingObject*> EngravingObject::linkList() const
std::list<EngravingObject*> EngravingObject::linkList() const
{
QList<EngravingObject*> el;
std::list<EngravingObject*> el;
if (_links) {
el = *_links;
} else {
el.append(const_cast<EngravingObject*>(this));
el.push_back(const_cast<EngravingObject*>(this));
}
return el;
}

View file

@ -275,7 +275,7 @@ public:
void writeProperty(XmlWriter& xml, Pid id) const;
void writeStyledProperties(XmlWriter&) const;
QList<EngravingObject*> linkList() const;
std::list<EngravingObject*> linkList() const;
void linkTo(EngravingObject*);
void unlink();

View file

@ -53,6 +53,11 @@ void LinkedObjects::setLid(Score* score, int id)
score->linkId(id);
}
bool LinkedObjects::contains(const EngravingObject* o) const
{
return std::find(this->begin(), this->end(), o) != this->end();
}
//---------------------------------------------------------
// mainElement
// Returns "main" linked element which is expected to
@ -61,12 +66,12 @@ void LinkedObjects::setLid(Score* score, int id)
EngravingObject* LinkedObjects::mainElement()
{
if (isEmpty()) {
if (empty()) {
return nullptr;
}
MasterScore* ms = at(0)->score()->masterScore();
const bool elements = at(0)->isEngravingItem();
const bool staves = at(0)->isStaff();
MasterScore* ms = front()->score()->masterScore();
const bool elements = front()->isEngravingItem();
const bool staves = front()->isStaff();
return *std::min_element(begin(), end(), [ms, elements, staves](EngravingObject* s1, EngravingObject* s2) {
if (s1->score() == ms && s2->score() != ms) {
return true;

View file

@ -22,12 +22,12 @@
#ifndef MU_ENGRAVING_LINKEDOBJECTS_H
#define MU_ENGRAVING_LINKEDOBJECTS_H
#include <QList>
#include <list>
#include "engravingobject.h"
namespace Ms {
class LinkedObjects : public QList<EngravingObject*>
class LinkedObjects : public std::list<EngravingObject*>
{
int _lid; // unique id for every linked list
@ -38,6 +38,8 @@ public:
void setLid(Score*, int val);
int lid() const { return _lid; }
bool contains(const EngravingObject* o) const;
EngravingObject* mainElement();
};
}

View file

@ -262,7 +262,7 @@ void SlurSegment::changeAnchor(EditData& ed, EngravingItem* element)
EngravingItem* se = 0;
EngravingItem* ee = 0;
if (scr) {
QList<EngravingObject*> sel = scr->linkList();
std::list<EngravingObject*> sel = scr->linkList();
for (EngravingObject* lcr : qAsConst(sel)) {
EngravingItem* le = toEngravingItem(lcr);
if (le->score() == sp->score() && le->track() == sp->track()) {
@ -272,7 +272,7 @@ void SlurSegment::changeAnchor(EditData& ed, EngravingItem* element)
}
}
if (ecr) {
QList<EngravingObject*> sel = ecr->linkList();
std::list<EngravingObject*> sel = ecr->linkList();
for (EngravingObject* lcr : qAsConst(sel)) {
EngravingItem* le = toEngravingItem(lcr);
if (le->score() == sp->score() && le->track() == sp->track2()) {

View file

@ -919,7 +919,7 @@ bool Staff::readProperties(XmlReader& e)
}
// not using unlink() here as it may delete _links
// a pointer to which is stored also in XmlReader.
_links->removeOne(this);
_links->remove(this);
_links = nullptr;
}
if (st && st != this) {

View file

@ -877,7 +877,7 @@ bool AddElement::isFiltered(UndoCommand::Filter f, const EngravingItem* target)
case Filter::AddElement:
return target == element;
case Filter::AddElementLinked:
return target->linkList().contains(element);
return mu::contains(target->linkList(), static_cast<EngravingObject*>(element));
default:
break;
}
@ -1029,7 +1029,7 @@ bool RemoveElement::isFiltered(UndoCommand::Filter f, const EngravingItem* targe
case Filter::RemoveElement:
return target == element;
case Filter::RemoveElementLinked:
return target->linkList().contains(element);
return mu::contains(target->linkList(), static_cast<EngravingObject*>(element));
default:
break;
}
@ -2662,14 +2662,14 @@ void LinkUnlink::link()
le->front()->setLinks(le);
}
mustDelete = false;
le->append(e);
le->push_back(e);
e->setLinks(le);
}
void LinkUnlink::unlink()
{
Q_ASSERT(le->contains(e));
le->removeOne(e);
le->remove(e);
if (le->size() == 1) {
le->front()->setLinks(0);
mustDelete = true;

View file

@ -1202,7 +1202,7 @@ public:
bool isFiltered(UndoCommand::Filter f, const EngravingItem* target) const override
{
return f == UndoCommand::Filter::ChangePropertyLinked && target->linkList().contains(element);
return f == UndoCommand::Filter::ChangePropertyLinked && mu::contains(target->linkList(), element);
}
};
@ -1212,8 +1212,8 @@ public:
class ChangeBracketProperty : public ChangeProperty
{
Staff* staff;
int level;
Staff* staff = nullptr;
int level = 0;
void flip(EditData*) override;