42 ClassName = 0x00000001,
43 SuperClass = 0x00000002,
47 Constructors = 0x00000020,
48 Properties = 0x00000040,
49 Enumerators = 0x00000080,
50 ClassInfos = 0x00000100,
51 RelatedMetaObjects = 0x00000200,
52 StaticMetacall = 0x00000400,
53 PublicMethods = 0x00000800,
54 ProtectedMethods = 0x00001000,
55 PrivateMethods = 0x00002000,
56 AllMembers = 0x7FFFFFFF,
57 AllPrimaryMembers = 0x7FFFFBFC
59 Q_DECLARE_FLAGS(AddMembers, AddMember)
62 explicit QMetaObjectBuilder(
const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members = AllMembers);
63 virtual ~QMetaObjectBuilder();
65 QByteArray className()
const;
66 void setClassName(
const QByteArray& name);
68 const QMetaObject *superClass()
const;
69 void setSuperClass(
const QMetaObject *meta);
71 MetaObjectFlags flags()
const;
72 void setFlags(MetaObjectFlags);
74 int methodCount()
const;
75 int constructorCount()
const;
76 int propertyCount()
const;
77 int enumeratorCount()
const;
78 int classInfoCount()
const;
79 int relatedMetaObjectCount()
const;
81 QMetaMethodBuilder addMethod(
const QByteArray& signature);
82 QMetaMethodBuilder addMethod(
const QByteArray& signature,
const QByteArray& returnType);
83 QMetaMethodBuilder addMethod(
const QMetaMethod& prototype);
85 QMetaMethodBuilder addSlot(
const QByteArray& signature);
86 QMetaMethodBuilder addSignal(
const QByteArray& signature);
88 QMetaMethodBuilder addConstructor(
const QByteArray& signature);
89 QMetaMethodBuilder addConstructor(
const QMetaMethod& prototype);
91 QMetaPropertyBuilder addProperty(
const QByteArray& name,
const QByteArray& type,
int notifierId=-1);
92 QMetaPropertyBuilder addProperty(
const QByteArray& name,
const QByteArray& type, QMetaType metaType,
int notifierId=-1);
93 QMetaPropertyBuilder addProperty(
const QMetaProperty& prototype);
95 QMetaEnumBuilder addEnumerator(
const QByteArray& name);
96 QMetaEnumBuilder addEnumerator(
const QMetaEnum& prototype);
98 int addClassInfo(
const QByteArray& name,
const QByteArray& value);
100 int addRelatedMetaObject(
const QMetaObject *meta);
102 void addMetaObject(
const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members = AllMembers);
104 QMetaMethodBuilder method(
int index)
const;
105 QMetaMethodBuilder constructor(
int index)
const;
106 QMetaPropertyBuilder property(
int index)
const;
107 QMetaEnumBuilder enumerator(
int index)
const;
108 const QMetaObject *relatedMetaObject(
int index)
const;
110 QByteArray classInfoName(
int index)
const;
111 QByteArray classInfoValue(
int index)
const;
113 void removeMethod(
int index);
114 void removeConstructor(
int index);
115 void removeProperty(
int index);
116 void removeEnumerator(
int index);
117 void removeClassInfo(
int index);
118 void removeRelatedMetaObject(
int index);
120 int indexOfMethod(
const QByteArray& signature);
121 int indexOfSignal(
const QByteArray& signature);
122 int indexOfSlot(
const QByteArray& signature);
123 int indexOfConstructor(
const QByteArray& signature);
124 int indexOfProperty(
const QByteArray& name);
125 int indexOfEnumerator(
const QByteArray& name);
126 int indexOfClassInfo(
const QByteArray& name);
128 typedef void (*StaticMetacallFunction)(QObject *, QMetaObject::Call,
int,
void **);
130 QMetaObjectBuilder::StaticMetacallFunction staticMetacallFunction()
const;
131 void setStaticMetacallFunction(QMetaObjectBuilder::StaticMetacallFunction value);
133 QMetaObject *toMetaObject()
const;
136 Q_DISABLE_COPY_MOVE(QMetaObjectBuilder)
138 QMetaObjectBuilderPrivate *d;
140 friend class QMetaMethodBuilder;
141 friend class QMetaPropertyBuilder;
142 friend class QMetaEnumBuilder;
148 QMetaMethodBuilder() : _mobj(
nullptr), _index(0) {}
152 QMetaMethod::MethodType methodType()
const;
153 QByteArray signature()
const;
155 QByteArray returnType()
const;
156 void setReturnType(
const QByteArray& value);
158 QList<QByteArrayView> parameterTypes()
const;
159 QList<QByteArray> parameterNames()
const;
160 void setParameterNames(
const QList<QByteArray>& value);
162 QByteArray tag()
const;
163 void setTag(
const QByteArray& value);
165 QMetaMethod::Access access()
const;
166 void setAccess(QMetaMethod::Access value);
168 int attributes()
const;
169 void setAttributes(
int value);
171 bool isConst()
const;
172 void setConst(
bool methodIsConst=
true);
174 int revision()
const;
175 void setRevision(
int revision);
178 const QMetaObjectBuilder *_mobj;
181 friend class QMetaObjectBuilder;
182 friend class QMetaPropertyBuilder;
184 QMetaMethodBuilder(
const QMetaObjectBuilder *mobj,
int index)
185 : _mobj(mobj), _index(index) {}
187 QMetaMethodBuilderPrivate *d_func()
const;
193 QMetaPropertyBuilder() : _mobj(
nullptr), _index(0) {}
195 int index()
const {
return _index; }
197 QByteArray name()
const;
198 QByteArray type()
const;
200 bool hasNotifySignal()
const;
201 QMetaMethodBuilder notifySignal()
const;
202 void setNotifySignal(
const QMetaMethodBuilder& value);
203 void removeNotifySignal();
205 bool isReadable()
const;
206 bool isWritable()
const;
207 bool isResettable()
const;
208 bool isDesignable()
const;
209 bool isScriptable()
const;
210 bool isStored()
const;
211 bool isEditable()
const;
213 bool hasStdCppSet()
const;
214 bool isEnumOrFlag()
const;
215 bool isConstant()
const;
216 bool isFinal()
const;
217 bool isVirtual()
const;
218 bool isOverride()
const;
219 bool isAlias()
const;
220 bool isBindable()
const;
221 bool isRequired()
const;
223 void setReadable(
bool value);
224 void setWritable(
bool value);
225 void setResettable(
bool value);
226 void setDesignable(
bool value);
227 void setScriptable(
bool value);
228 void setStored(
bool value);
229 void setUser(
bool value);
230 void setStdCppSet(
bool value);
231 void setEnumOrFlag(
bool value);
232 void setConstant(
bool value);
233 void setFinal(
bool value);
234 void setVirtual(
bool value);
235 void setOverride(
bool value);
236 void setAlias(
bool value);
237 void setBindable(
bool value);
238 void setRequired(
bool value);
240 int revision()
const;
241 void setRevision(
int revision);
244 const QMetaObjectBuilder *_mobj;
247 friend class QMetaObjectBuilder;
249 QMetaPropertyBuilder(
const QMetaObjectBuilder *mobj,
int index)
250 : _mobj(mobj), _index(index) {}
252 QMetaPropertyBuilderPrivate *d_func()
const;
258 QMetaEnumBuilder() : _mobj(
nullptr), _index(0) {}
260 int index()
const {
return _index; }
262 QByteArray name()
const;
264 QByteArray enumName()
const;
265 void setEnumName(
const QByteArray &alias);
267 QMetaType metaType()
const;
268 void setMetaType(QMetaType metaType);
271 void setIsFlag(
bool value);
273 bool isScoped()
const;
274 void setIsScoped(
bool value);
276 bool is64Bit()
const;
277 void setIs64Bit(
bool value);
279 int keyCount()
const;
280 QByteArray key(
int index)
const;
281 int value(
int index)
const;
282 std::optional<quint64> value64(
int index)
const;
284 int addKey(
const QByteArray &name,
int value);
285 int addKey(
const QByteArray &name, quint64 value);
286 void removeKey(
int index);
289 const QMetaObjectBuilder *_mobj;
292 friend class QMetaObjectBuilder;
294 QMetaEnumBuilder(
const QMetaObjectBuilder *mobj,
int index)
295 : _mobj(mobj), _index(index) {}
297 QMetaEnumBuilderPrivate *d_func()
const;