Added macro for easier field declaration

This commit is contained in:
0xFEEDC0DE64
2018-09-01 23:25:34 +02:00
parent b7e0f1ff2a
commit 84d6d4ddd9
4 changed files with 20 additions and 56 deletions

View File

@@ -1,8 +0,0 @@
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}

View File

@@ -8,6 +8,21 @@
class DbMsgFieldBase; class DbMsgFieldBase;
#define DECLARE_DBFIELD(TYPE, NAME, UPPER_NAME) \
private: \
DbMsgField<TYPE> m_##NAME;\
\
public: \
TYPE get##UPPER_NAME() const { return m_##NAME.getValue(); } \
void set##UPPER_NAME(const TYPE &NAME) { m_##NAME.setValue(NAME); } \
bool has##UPPER_NAME() const { return m_##NAME.hasValue(); } \
void clear##UPPER_NAME() { m_##NAME.clear(); } \
\
DbMsgField<TYPE> &NAME##Field() { return m_##NAME; } \
const DbMsgField<TYPE> &NAME##Field() const { return m_##NAME; } \
DbMsgFieldBase &NAME##FieldBase() { return m_##NAME; } \
const DbMsgFieldBase &NAME##FieldBase() const { return m_##NAME; }
class MESSAGINGCORELIBSHARED_EXPORT DbMsgBase class MESSAGINGCORELIBSHARED_EXPORT DbMsgBase
{ {
static const QString m_clearedFieldsName; static const QString m_clearedFieldsName;

View File

@@ -12,7 +12,6 @@ public:
DbMsgField(); DbMsgField();
DbMsgField(const T &value); DbMsgField(const T &value);
T &getValue();
const T &getValue() const; const T &getValue() const;
void setValue(const T &value); void setValue(const T &value);
@@ -38,12 +37,6 @@ DbMsgField<T>::DbMsgField(const T &value) :
setHasValue(true); setHasValue(true);
} }
template<typename T>
T &DbMsgField<T>::getValue()
{
return m_value;
}
template<typename T> template<typename T>
const T &DbMsgField<T>::getValue() const const T &DbMsgField<T>::getValue() const
{ {

View File

@@ -19,49 +19,13 @@ public:
MyMessage(); MyMessage();
MyMessage(const QString &name, const QDate &birthday, const QDateTime &sendTimestamp, int age, double weight); MyMessage(const QString &name, const QDate &birthday, const QDateTime &sendTimestamp, int age, double weight);
QString getName() const { return m_name.getValue(); } DECLARE_DBFIELD(QString, name, Name)
void setName(const QString &name) { m_name.setValue(name); } DECLARE_DBFIELD(QDate, birthday, Birthday)
DbMsgField<QString> &nameField() { return m_name; } DECLARE_DBFIELD(QDateTime, sendTimestamp, SendTimestamp)
const DbMsgField<QString> &nameField() const { return m_name; } DECLARE_DBFIELD(int, age, Age)
DbMsgFieldBase &nameFieldBase() { return m_name; } DECLARE_DBFIELD(double, weight, Weight)
const DbMsgFieldBase &nameFieldBase() const { return m_name; }
QDate getBirthday() const { return m_birthday.getValue(); }
void setBirthday(const QDate &birthday) { m_birthday.setValue(birthday); }
DbMsgField<QDate> &birthdayField() { return m_birthday; }
const DbMsgField<QDate> &birthdayField() const { return m_birthday; }
DbMsgFieldBase &birthdayFieldBase() { return m_birthday; }
const DbMsgFieldBase &birthdayFieldBase() const { return m_birthday; }
QDateTime getSendTimestamp() const { return m_sendTimestamp.getValue(); }
void setSendTimestamp(const QDateTime &sendTimestamp) { m_sendTimestamp.setValue(sendTimestamp); }
DbMsgField<QDateTime> &sendTimestampField() { return m_sendTimestamp; }
const DbMsgField<QDateTime> &sendTimestampField() const { return m_sendTimestamp; }
DbMsgFieldBase &sendTimestampFieldBase() { return m_sendTimestamp; }
const DbMsgFieldBase &sendTimestampFieldBase() const { return m_sendTimestamp; }
int getAge() const { return m_age.getValue(); }
void setAge(const int &age) { m_age.setValue(age); }
DbMsgField<int> &ageField() { return m_age; }
const DbMsgField<int> &ageField() const { return m_age; }
DbMsgFieldBase &ageFieldBase() { return m_age; }
const DbMsgFieldBase &ageFieldBase() const { return m_age; }
double getWeight() const { return m_weight.getValue(); }
void setWeight(const double &weight) { m_weight.setValue(weight); }
DbMsgField<double> &weightField() { return m_weight; }
const DbMsgField<double> &weightField() const { return m_weight; }
DbMsgFieldBase &weightFieldBase() { return m_weight; }
const DbMsgFieldBase &weightFieldBase() const { return m_weight; }
protected: protected:
QMap<QString, DbMsgFieldBase*> getFields() override; QMap<QString, DbMsgFieldBase*> getFields() override;
QMap<QString, const DbMsgFieldBase*> getFields() const override; QMap<QString, const DbMsgFieldBase*> getFields() const override;
private:
DbMsgField<QString> m_name;
DbMsgField<QDate> m_birthday;
DbMsgField<QDateTime> m_sendTimestamp;
DbMsgField<int> m_age;
DbMsgField<double> m_weight;
}; };