phrase better operators [skip ci]

This commit is contained in:
Hamed Masafi 2018-02-25 20:54:29 +03:30
parent d0f73c1673
commit e049a4409a
2 changed files with 55 additions and 6 deletions

View File

@ -223,15 +223,26 @@ AssignmentPhrase::AssignmentPhrase(AbstractFieldPhrase *l, const AssignmentPhras
// l->data = 0;
}
AssignmentPhrase::~AssignmentPhrase()
{
if (data)
delete data;
}
//AssignmentPhrase::AssignmentPhrase(AssignmentPhrase *l, const AssignmentPhrase *r)
//{
//// data = new PhraseData(l->data, PhraseData::Append, r->data);
// qFatal("SS");
//}
AssignmentPhraseList AssignmentPhrase::operator &(const AssignmentPhrase &other)
//AssignmentPhraseList AssignmentPhrase::operator &(const AssignmentPhrase &other)
//{
// return AssignmentPhraseList(this, &other);
//}
AssignmentPhraseList::AssignmentPhraseList()
{
return AssignmentPhraseList(this, &other);
}
AssignmentPhraseList::AssignmentPhraseList(const AssignmentPhrase &l)
@ -245,10 +256,10 @@ AssignmentPhraseList::AssignmentPhraseList(AssignmentPhraseList *l, const Assign
data.append(r->data);
}
AssignmentPhraseList::AssignmentPhraseList(AssignmentPhrase *l, const AssignmentPhrase *r)
AssignmentPhraseList::AssignmentPhraseList(const AssignmentPhrase &r, const AssignmentPhrase &l)
{
data.append(l->data);
data.append(r->data);
data.append(l.data);
data.append(r.data);
}
AssignmentPhraseList AssignmentPhraseList::operator &(const AssignmentPhrase &ph)
@ -256,6 +267,11 @@ AssignmentPhraseList AssignmentPhraseList::operator &(const AssignmentPhrase &ph
return AssignmentPhraseList(this, &ph);
}
AssignmentPhraseList::~AssignmentPhraseList()
{
qDeleteAll(data);
}
ConditionalPhrase::ConditionalPhrase() : data(0)
{ }
@ -374,4 +390,27 @@ ConditionalPhrase ConditionalPhrase::operator !()
return f;
}
AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r)
{
return AssignmentPhraseList(l, r);
}
AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r)
{
r.data = 0;
return AssignmentPhraseList(l, r);
}
AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r)
{
l.data = 0;
return AssignmentPhraseList(l, r);
}
AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r)
{
r.data = l.data = 0;
return AssignmentPhraseList(l, r);
}
NUT_END_NAMESPACE

View File

@ -115,11 +115,15 @@ class AssignmentPhraseList
{
public:
QList<PhraseData*> data;
AssignmentPhraseList();
AssignmentPhraseList(const AssignmentPhrase &l);
AssignmentPhraseList(AssignmentPhraseList *l, const AssignmentPhrase *r);
AssignmentPhraseList(AssignmentPhrase *l, const AssignmentPhrase *r);
AssignmentPhraseList(const AssignmentPhrase &r, const AssignmentPhrase &l);
AssignmentPhraseList operator &(const AssignmentPhrase &ph);
~AssignmentPhraseList();
};
class AssignmentPhrase
@ -128,12 +132,18 @@ public:
PhraseData *data;
AssignmentPhrase(AbstractFieldPhrase *l, QVariant r);
AssignmentPhrase(AbstractFieldPhrase *l, const AssignmentPhrase *r);
~AssignmentPhrase();
// AssignmentPhrase(AssignmentPhrase *l, const AssignmentPhrase *r);
AssignmentPhraseList operator &(const AssignmentPhrase &other);
// AssignmentPhraseList operator &(const AssignmentPhrase &other);
};
AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r);
AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r);
AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r);
AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r);
class PhraseList{
public:
bool isValid;