src/declarative/qml/qdeclarativecustomparser_p.h
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
equal deleted inserted replaced
30:5dc02b23752f 33:3e2da88830cd
   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