wip: memory leaks

This commit is contained in:
Hamed Masafi 2018-02-27 12:00:25 +03:30
parent bca26e7066
commit 3bdf6f294d
3 changed files with 19 additions and 11 deletions

View File

@ -43,7 +43,6 @@ public:
DatabaseModel(const QString &name = QString::null); DatabaseModel(const QString &name = QString::null);
DatabaseModel(const DatabaseModel &other); DatabaseModel(const DatabaseModel &other);
DatabaseModel(const QJsonObject &json); DatabaseModel(const QJsonObject &json);
// DatabaseModel(DatabaseModel &model);
TableModel *tableByName(QString tableName) const; TableModel *tableByName(QString tableName) const;
TableModel *tableByClassName(QString className) const; TableModel *tableByClassName(QString className) const;

View File

@ -84,6 +84,9 @@ PhraseData::~PhraseData()
LOG(""); LOG("");
} }
AbstractFieldPhrase::AbstractFieldPhrase(PhraseData *d) : data(d)
{ }
AbstractFieldPhrase::AbstractFieldPhrase(const char *className, const char *fieldName) AbstractFieldPhrase::AbstractFieldPhrase(const char *className, const char *fieldName)
:data(new PhraseData(className, fieldName)) :data(new PhraseData(className, fieldName))
{ {
@ -92,10 +95,16 @@ AbstractFieldPhrase::AbstractFieldPhrase(const char *className, const char *fiel
AbstractFieldPhrase::AbstractFieldPhrase(const AbstractFieldPhrase &other) AbstractFieldPhrase::AbstractFieldPhrase(const AbstractFieldPhrase &other)
{ {
qDebug() <<"4444444444444444"; qDebug() <<"Copy ctor"<<other.data->toString();
data = new PhraseData(other.data); data = new PhraseData(other.data);
} }
AbstractFieldPhrase::AbstractFieldPhrase(AbstractFieldPhrase &&other)
{
data = other.data;
other.data = 0;
}
AbstractFieldPhrase::~AbstractFieldPhrase() AbstractFieldPhrase::~AbstractFieldPhrase()
{ {
if (data) { if (data) {
@ -148,13 +157,11 @@ AbstractFieldPhraseOperatorField(<=, PhraseData::LessEqual)
AbstractFieldPhraseOperatorField(> , PhraseData::Greater) AbstractFieldPhraseOperatorField(> , PhraseData::Greater)
AbstractFieldPhraseOperatorField(>=, PhraseData::GreaterEqual) AbstractFieldPhraseOperatorField(>=, PhraseData::GreaterEqual)
AbstractFieldPhrase AbstractFieldPhrase::operator !() AbstractFieldPhrase &AbstractFieldPhrase::operator !()
{ {
//TODO: classname and s AbstractFieldPhrase *f = new AbstractFieldPhrase(new PhraseData(data));
AbstractFieldPhrase f(data->className, data->fieldName); f->data->isNot = !data->isNot;
f.data = new PhraseData(data); return *f;
f.data->isNot = !data->isNot;
return f;
} }
AssignmentPhrase AbstractFieldPhrase::operator =(const QVariant &other) AssignmentPhrase AbstractFieldPhrase::operator =(const QVariant &other)

View File

@ -168,8 +168,8 @@ class ConditionalPhrase
{ {
public: public:
PhraseData *data; PhraseData *data;
QSharedPointer<PhraseData> leftDataPointer; // QSharedPointer<PhraseData> leftDataPointer;
QSharedPointer<PhraseData> rightDataPointer; // QSharedPointer<PhraseData> rightDataPointer;
ConditionalPhrase(); ConditionalPhrase();
ConditionalPhrase(const ConditionalPhrase &other); ConditionalPhrase(const ConditionalPhrase &other);
#ifdef Q_COMPILER_RVALUE_REFS #ifdef Q_COMPILER_RVALUE_REFS
@ -212,8 +212,10 @@ class AbstractFieldPhrase
{ {
public: public:
PhraseData *data; PhraseData *data;
explicit AbstractFieldPhrase(PhraseData *d);
AbstractFieldPhrase(const char *className, const char *fieldName); AbstractFieldPhrase(const char *className, const char *fieldName);
AbstractFieldPhrase(const AbstractFieldPhrase &other); AbstractFieldPhrase(const AbstractFieldPhrase &other);
AbstractFieldPhrase(AbstractFieldPhrase &&other);
virtual ~AbstractFieldPhrase(); virtual ~AbstractFieldPhrase();
@ -251,7 +253,7 @@ public:
ConditionalPhrase operator <=(const AbstractFieldPhrase &other); ConditionalPhrase operator <=(const AbstractFieldPhrase &other);
ConditionalPhrase operator >=(const AbstractFieldPhrase &other); ConditionalPhrase operator >=(const AbstractFieldPhrase &other);
AbstractFieldPhrase operator !(); AbstractFieldPhrase &operator !();
AssignmentPhrase operator =(const QVariant &other); AssignmentPhrase operator =(const QVariant &other);
AssignmentPhrase operator <<(const QVariant &other); AssignmentPhrase operator <<(const QVariant &other);
}; };