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 DatabaseModel &other);
DatabaseModel(const QJsonObject &json);
// DatabaseModel(DatabaseModel &model);
TableModel *tableByName(QString tableName) const;
TableModel *tableByClassName(QString className) const;

View File

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

View File

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