text: #ifndef QQMLLISTPROPERTYHELPER
  #define QQMLLISTPROPERTYHELPER
  
  #include <QList>
  #include <QQmlListProperty>
  
  #define QML_LIST_PROPERTY(CLASS, NAME, TYPE) \
      public: \
          static int NAME##_count (QQmlListProperty<TYPE> * prop) { \
              CLASS * instance = qobject_cast<CLASS *> (prop->object); \
              return (instance != NULL ? instance->m_##NAME.count () : 0); \
          } \
          static void NAME##_clear (QQmlListProperty<TYPE> * prop) { \
              CLASS * instance = qobject_cast<CLASS *> (prop->object); \
              if (instance != NULL) { \
                  instance->m_##NAME.clear (); \
              } \
          } \
          static void NAME##_append (QQmlListProperty<TYPE> * prop, TYPE * obj) { \
              CLASS * instance = qobject_cast<CLASS *> (prop->object); \
              if (instance != NULL && obj != NULL) { \
                  instance->m_##NAME.append (obj); \
              } \
          } \
          static TYPE * NAME##_at (QQmlListProperty<TYPE> * prop, int idx) { \
              CLASS * instance = qobject_cast<CLASS *> (prop->object); \
              return (instance != NULL ? instance->m_##NAME.at (idx) : NULL); \
          } \
          QList<TYPE *> get_##NAME##s (void) const { \
              return m_##NAME; \
          } \
      private: \
          QList<TYPE *> m_##NAME;
  
  #endif // QQMLLISTPROPERTYHELPER
  
  