automotive-message-broker  0.14.803
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
bmdbus_p.h
1 #ifndef _BMDBUS_P_H_
2 #define _BMDBUS_P_H_
3 
4 #include <QJSValue>
5 #include <QHash>
6 
7 #include <private/qobject_p.h>
8 #include <private/qmetaobjectbuilder_p.h>
9 
10 class BluemonkeyQObject;
12 class BluemonkeyQObjectPrivate : public QObjectPrivate
13 {
14 public:
15  BluemonkeyQObjectPrivate(BluemonkeyQObject* iface);
16 
17  virtual ~BluemonkeyQObjectPrivate() {}
18 
19  QVariant property(const QByteArray& property);
20  bool setProperty(const QByteArray& property, const QVariant& value);
21 
22  void createFrom(const QJSValue & value);
23 
24  BluemonkeyQObject* q;
25  BluemonkeyMetaObject* metaObject;
26 };
27 
28 class BluemonkeyMetaObject : public QAbstractDynamicMetaObject
29 {
30 public:
31  BluemonkeyMetaObject(BluemonkeyQObject* qq, BluemonkeyQObjectPrivate* dd,
32  const QMetaObject* mo);
34 
35  void updateProperties(const QVariantMap & data);
36 
37 private:
38  void addProperty(const QByteArray & name, const QJSValue & property);
39  void addMethod(const QByteArray & name, const QString &returnType, const QStringList &args);
40 
41  QMetaType::Type jsType(const QJSValue& value);
42 
43 protected:
44  virtual int metaCall(QMetaObject::Call _c, int _id, void** _a);
45  virtual int createProperty(const char *, const char *);
46 
47 private:
48  BluemonkeyQObject *q;
50 
51  QMetaObjectBuilder m_builder;
52  QMetaObject* m_metaObject;
53  QAbstractDynamicMetaObject* m_parent;
54 
55  int m_propertyOffset;
56  int m_methodOffset;
57 
58  QHash<QByteArray, int> m_propertyIdLookup;
59  QHash<QByteArray, QMetaType::Type> m_propertyTypeLookup;
60  QHash<QByteArray, int> m_methodIdLookup;
61 
62  friend class BluemonkeyQObjectPrivate;
63 };
64 
65 #endif