111 }; |
111 }; |
112 |
112 |
113 class Q_DECLARATIVE_EXPORT QDeclarativeCustomParser |
113 class Q_DECLARATIVE_EXPORT QDeclarativeCustomParser |
114 { |
114 { |
115 public: |
115 public: |
116 QDeclarativeCustomParser() : compiler(0), object(0) {} |
116 enum Flag { |
|
117 NoFlag = 0x00000000, |
|
118 AcceptsAttachedProperties = 0x00000001 |
|
119 }; |
|
120 Q_DECLARE_FLAGS(Flags, Flag); |
|
121 |
|
122 QDeclarativeCustomParser() : compiler(0), object(0), m_flags(NoFlag) {} |
|
123 QDeclarativeCustomParser(Flags f) : compiler(0), object(0), m_flags(f) {} |
117 virtual ~QDeclarativeCustomParser() {} |
124 virtual ~QDeclarativeCustomParser() {} |
118 |
125 |
119 void clearErrors(); |
126 void clearErrors(); |
|
127 Flags flags() const { return m_flags; } |
120 |
128 |
121 virtual QByteArray compile(const QList<QDeclarativeCustomParserProperty> &)=0; |
129 virtual QByteArray compile(const QList<QDeclarativeCustomParserProperty> &)=0; |
122 virtual void setCustomData(QObject *, const QByteArray &)=0; |
130 virtual void setCustomData(QObject *, const QByteArray &)=0; |
123 |
131 |
124 QList<QDeclarativeError> errors() const { return exceptions; } |
132 QList<QDeclarativeError> errors() const { return exceptions; } |
128 void error(const QDeclarativeCustomParserProperty&, const QString& description); |
136 void error(const QDeclarativeCustomParserProperty&, const QString& description); |
129 void error(const QDeclarativeCustomParserNode&, const QString& description); |
137 void error(const QDeclarativeCustomParserNode&, const QString& description); |
130 |
138 |
131 int evaluateEnum(const QByteArray&) const; |
139 int evaluateEnum(const QByteArray&) const; |
132 |
140 |
|
141 const QMetaObject *resolveType(const QByteArray&) const; |
|
142 |
133 private: |
143 private: |
134 QList<QDeclarativeError> exceptions; |
144 QList<QDeclarativeError> exceptions; |
135 QDeclarativeCompiler *compiler; |
145 QDeclarativeCompiler *compiler; |
136 QDeclarativeParser::Object *object; |
146 QDeclarativeParser::Object *object; |
|
147 Flags m_flags; |
137 friend class QDeclarativeCompiler; |
148 friend class QDeclarativeCompiler; |
138 }; |
149 }; |
|
150 Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativeCustomParser::Flags); |
139 |
151 |
140 #if 0 |
152 #if 0 |
141 #define QML_REGISTER_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN, NAME, TYPE, CUSTOMTYPE) \ |
153 #define QML_REGISTER_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN, NAME, TYPE, CUSTOMTYPE) \ |
142 qmlRegisterCustomType<TYPE>(#URI, VERSION_MAJ, VERSION_MIN, #NAME, #TYPE, new CUSTOMTYPE) |
154 qmlRegisterCustomType<TYPE>(#URI, VERSION_MAJ, VERSION_MIN, #NAME, #TYPE, new CUSTOMTYPE) |
143 #endif |
155 #endif |