43 ClassName = 0x00000001,
44 SuperClass = 0x00000002,
48 Constructors = 0x00000020,
49 Properties = 0x00000040,
50 Enumerators = 0x00000080,
51 ClassInfos = 0x00000100,
52 RelatedMetaObjects = 0x00000200,
53 StaticMetacall = 0x00000400,
54 PublicMethods = 0x00000800,
55 ProtectedMethods = 0x00001000,
56 PrivateMethods = 0x00002000,
57 AllMembers = 0x7FFFFFFF,
58 AllPrimaryMembers = 0x7FFFFBFC
60 Q_DECLARE_FLAGS(AddMembers, AddMember)
63 explicit QMetaObjectBuilder(
const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members = AllMembers);
64 virtual ~QMetaObjectBuilder();
66 QByteArray className()
const;
67 void setClassName(
const QByteArray& name);
69 const QMetaObject *superClass()
const;
70 void setSuperClass(
const QMetaObject *meta);
72 MetaObjectFlags flags()
const;
73 void setFlags(MetaObjectFlags);
75 int methodCount()
const;
76 int constructorCount()
const;
77 int propertyCount()
const;
78 int enumeratorCount()
const;
79 int classInfoCount()
const;
80 int relatedMetaObjectCount()
const;
82 QMetaMethodBuilder addMethod(
const QByteArray& signature);
83 QMetaMethodBuilder addMethod(
const QByteArray& signature,
const QByteArray& returnType);
84 QMetaMethodBuilder addMethod(
const QMetaMethod& prototype);
86 QMetaMethodBuilder addSlot(
const QByteArray& signature);
87 QMetaMethodBuilder addSignal(
const QByteArray& signature);
89 QMetaMethodBuilder addConstructor(
const QByteArray& signature);
90 QMetaMethodBuilder addConstructor(
const QMetaMethod& prototype);
92 QMetaPropertyBuilder addProperty(
const QByteArray& name,
const QByteArray& type,
int notifierId=-1);
93 QMetaPropertyBuilder addProperty(
const QByteArray& name,
const QByteArray& type, QMetaType metaType,
int notifierId=-1);
94 QMetaPropertyBuilder addProperty(
const QMetaProperty& prototype);
96 QMetaEnumBuilder addEnumerator(
const QByteArray& name);
97 QMetaEnumBuilder addEnumerator(
const QMetaEnum& prototype);
99 int addClassInfo(
const QByteArray& name,
const QByteArray& value);
101 int addRelatedMetaObject(
const QMetaObject *meta);
103 void addMetaObject(
const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members = AllMembers);
105 QMetaMethodBuilder method(
int index)
const;
106 QMetaMethodBuilder signal(
int index)
const;
107 QMetaMethodBuilder constructor(
int index)
const;
108 QMetaPropertyBuilder property(
int index)
const;
109 QMetaEnumBuilder enumerator(
int index)
const;
110 const QMetaObject *relatedMetaObject(
int index)
const;
112 QByteArray classInfoName(
int index)
const;
113 QByteArray classInfoValue(
int index)
const;
115 void removeMethod(
int index);
116 void removeSignal(
int index);
117 void removeConstructor(
int index);
118 void removeProperty(
int index);
119 void removeEnumerator(
int index);
120 void removeClassInfo(
int index);
121 void removeRelatedMetaObject(
int index);
123 int indexOfMethod(
const QByteArray& signature);
124 int indexOfSignal(
const QByteArray& signature);
125 int indexOfSlot(
const QByteArray& signature);
126 int indexOfConstructor(
const QByteArray& signature);
127 int indexOfProperty(
const QByteArray& name);
128 int indexOfEnumerator(
const QByteArray& name);
129 int indexOfClassInfo(
const QByteArray& name);
131 typedef void (*StaticMetacallFunction)(QObject *, QMetaObject::Call,
int,
void **);
133 QMetaObjectBuilder::StaticMetacallFunction staticMetacallFunction()
const;
134 void setStaticMetacallFunction(QMetaObjectBuilder::StaticMetacallFunction value);
136 QMetaObject *toMetaObject()
const;
139 Q_DISABLE_COPY_MOVE(QMetaObjectBuilder)
141 QMetaObjectBuilderPrivate *d;
143 friend class QMetaMethodBuilder;
144 friend class QMetaPropertyBuilder;
145 friend class QMetaEnumBuilder;
151 QMetaMethodBuilder() =
default;
155 QMetaMethod::MethodType methodType()
const;
156 QByteArray signature()
const;
158 QByteArray returnType()
const;
159 void setReturnType(
const QByteArray& value);
161 QList<QByteArrayView> parameterTypes()
const;
162 QList<QByteArray> parameterNames()
const;
163 void setParameterNames(
const QList<QByteArray>& value);
165 QByteArray tag()
const;
166 void setTag(
const QByteArray& value);
168 QMetaMethod::Access access()
const;
169 void setAccess(QMetaMethod::Access value);
171 int attributes()
const;
172 void setAttributes(
int value);
174 bool isConst()
const;
175 void setConst(
bool methodIsConst=
true);
177 int revision()
const;
178 void setRevision(
int revision);
181 const QMetaObjectBuilder *_mobj =
nullptr;
183 QMetaMethod::MethodType _type = QMetaMethod::MethodType::Method;
185 friend class QMetaObjectBuilder;
186 friend class QMetaPropertyBuilder;
188 QMetaMethodBuilder(
const QMetaObjectBuilder *mobj,
int index, QMetaMethod::MethodType type)
189 : _mobj(mobj), _index(index), _type(type) {}
191 QMetaMethodBuilderPrivate *d_func()
const;
197 QMetaPropertyBuilder() : _mobj(
nullptr), _index(0) {}
199 int index()
const {
return _index; }
201 QByteArray name()
const;
202 QByteArray type()
const;
204 bool hasNotifySignal()
const;
205 QMetaMethodBuilder notifySignal()
const;
206 void setNotifySignal(
const QMetaMethodBuilder& value);
207 void removeNotifySignal();
209 bool isReadable()
const;
210 bool isWritable()
const;
211 bool isResettable()
const;
212 bool isDesignable()
const;
213 bool isScriptable()
const;
214 bool isStored()
const;
215 bool isEditable()
const;
217 bool hasStdCppSet()
const;
218 bool isEnumOrFlag()
const;
219 bool isConstant()
const;
220 bool isFinal()
const;
221 bool isVirtual()
const;
222 bool isOverride()
const;
223 bool isAlias()
const;
224 bool isBindable()
const;
225 bool isRequired()
const;
227 void setReadable(
bool value);
228 void setWritable(
bool value);
229 void setResettable(
bool value);
230 void setDesignable(
bool value);
231 void setScriptable(
bool value);
232 void setStored(
bool value);
233 void setUser(
bool value);
234 void setStdCppSet(
bool value);
235 void setEnumOrFlag(
bool value);
236 void setConstant(
bool value);
237 void setFinal(
bool value);
238 void setVirtual(
bool value);
239 void setOverride(
bool value);
240 void setAlias(
bool value);
241 void setBindable(
bool value);
242 void setRequired(
bool value);
244 int revision()
const;
245 void setRevision(
int revision);
248 const QMetaObjectBuilder *_mobj;
251 friend class QMetaObjectBuilder;
253 QMetaPropertyBuilder(
const QMetaObjectBuilder *mobj,
int index)
254 : _mobj(mobj), _index(index) {}
256 QMetaPropertyBuilderPrivate *d_func()
const;
262 QMetaEnumBuilder() : _mobj(
nullptr), _index(0) {}
264 int index()
const {
return _index; }
266 QByteArray name()
const;
268 QByteArray enumName()
const;
269 void setEnumName(
const QByteArray &alias);
271 QMetaType metaType()
const;
272 void setMetaType(QMetaType metaType);
275 void setIsFlag(
bool value);
277 bool isScoped()
const;
278 void setIsScoped(
bool value);
280 bool is64Bit()
const;
281 void setIs64Bit(
bool value);
283 int keyCount()
const;
284 QByteArray key(
int index)
const;
285 int value(
int index)
const;
286 std::optional<quint64> value64(
int index)
const;
288 int addKey(
const QByteArray &name,
int value);
289 int addKey(
const QByteArray &name, quint64 value);
290 void removeKey(
int index);
293 const QMetaObjectBuilder *_mobj;
296 friend class QMetaObjectBuilder;
298 QMetaEnumBuilder(
const QMetaObjectBuilder *mobj,
int index)
299 : _mobj(mobj), _index(index) {}
301 QMetaEnumBuilderPrivate *d_func()
const;