2019-06-20 16:29:57 +08:00
|
|
|
Nut can compile in *shared pointer* mode or *regular* mode
|
|
|
|
|
|
2020-03-17 02:39:36 +08:00
|
|
|
In *shared pointer* mode results of queries is QList<QSharedPointer<T>> and in *regular* mode results are QList<T*>
|
2019-06-20 16:29:57 +08:00
|
|
|
|
|
|
|
|
Almost in every case shared pointer mode is better, But nut support regular mode for backward comptability.
|
|
|
|
|
|
|
|
|
|
To compiling in *shared pointer* define **NUT_SHARED_POINTER** macro
|
|
|
|
|
|
|
|
|
|
Nut has template alias
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
#ifdef NUT_SHARED_POINTER
|
|
|
|
|
template <class T>
|
|
|
|
|
using RowList = QList<QSharedPointer<T>>;
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
using Row = QSharedPointer<T>;
|
|
|
|
|
#else
|
|
|
|
|
template <typename T>
|
|
|
|
|
using RowList = QList<T*>;
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
using Row = T*;
|
|
|
|
|
#endif
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
In other words these types are defined by this table:
|
|
|
|
|
|
|
|
|
|
| Mode | Nut::Row | Nut::RowList |
|
|
|
|
|
|------ |----- |--------- |
|
|
|
|
|
|Regular|T* | QList\<T\*\> |
|
|
|
|
|
|Shared pointer|QSharedPointer\<T\> | QList\<QSharedPointer\<T\>\> |
|
|
|
|
|
|
|
|
|
|
For the integration of your source, you can use these aliases.
|
|
|
|
|
|
|
|
|
|
Ans also Nut::create<T>() method are defined for two mode
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
#ifdef NUT_SHARED_POINTER
|
|
|
|
|
template<class T>
|
|
|
|
|
inline Row<T> create(QObject *parent) {
|
|
|
|
|
return QSharedPointer<T>(new T(parent));
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
template<class T>
|
|
|
|
|
inline Row<T> create() {
|
|
|
|
|
return new T;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
So you can use the Nut::create function without considering in what way the library is being compiled. Example:
|
|
|
|
|
```cpp
|
|
|
|
|
auto post = Nut::create<Post>();
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
In above example if *NUT_SHARED_POINTER* is defined *post* is *QSharedPointer<Post>* else is *Post\**
|
|
|
|
|
|
2020-03-17 02:39:36 +08:00
|
|
|
I recommand use *NUT_SHARED_POINTER* always!
|