qom: Remove ParentClassType argument from OBJECT_DECLARE_SIMPLE_TYPE

The requirement to specify the parent class type makes the macro
harder to use and easy to misuse (silent bugs can be introduced
if the wrong struct type is specified).

Simplify the macro by just not declaring any class struct,
allowing us to remove the class_size field from the TypeInfo
variables for those types.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20200916182519.415636-3-ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
Eduardo Habkost 2020-09-16 14:25:16 -04:00
parent 4a15e5bef8
commit c734cd40a1
20 changed files with 19 additions and 30 deletions

View File

@ -252,7 +252,6 @@ static const TypeInfo qauthz_list_info = {
.name = TYPE_QAUTHZ_LIST,
.instance_size = sizeof(QAuthZList),
.instance_finalize = qauthz_list_finalize,
.class_size = sizeof(QAuthZListClass),
.class_init = qauthz_list_class_init,
.interfaces = (InterfaceInfo[]) {
{ TYPE_USER_CREATABLE },

View File

@ -263,7 +263,6 @@ static const TypeInfo qauthz_list_file_info = {
.instance_init = qauthz_list_file_init,
.instance_size = sizeof(QAuthZListFile),
.instance_finalize = qauthz_list_file_finalize,
.class_size = sizeof(QAuthZListFileClass),
.class_init = qauthz_list_file_class_init,
.interfaces = (InterfaceInfo[]) {
{ TYPE_USER_CREATABLE },

View File

@ -129,7 +129,6 @@ static const TypeInfo qauthz_pam_info = {
.name = TYPE_QAUTHZ_PAM,
.instance_size = sizeof(QAuthZPAM),
.instance_finalize = qauthz_pam_finalize,
.class_size = sizeof(QAuthZPAMClass),
.class_init = qauthz_pam_class_init,
.interfaces = (InterfaceInfo[]) {
{ TYPE_USER_CREATABLE },

View File

@ -96,7 +96,6 @@ static const TypeInfo qauthz_simple_info = {
.name = TYPE_QAUTHZ_SIMPLE,
.instance_size = sizeof(QAuthZSimple),
.instance_finalize = qauthz_simple_finalize,
.class_size = sizeof(QAuthZSimpleClass),
.class_init = qauthz_simple_class_init,
.interfaces = (InterfaceInfo[]) {
{ TYPE_USER_CREATABLE },

View File

@ -24,7 +24,7 @@
#define TYPE_DBUS_VMSTATE "dbus-vmstate"
OBJECT_DECLARE_SIMPLE_TYPE(DBusVMState, dbus_vmstate,
DBUS_VMSTATE, ObjectClass)
DBUS_VMSTATE)
struct DBusVMState {
@ -483,7 +483,6 @@ static const TypeInfo dbus_vmstate_info = {
.parent = TYPE_OBJECT,
.instance_size = sizeof(DBusVMState),
.instance_finalize = dbus_vmstate_finalize,
.class_size = sizeof(DBusVMStateClass),
.class_init = dbus_vmstate_class_init,
.interfaces = (InterfaceInfo[]) {
{ TYPE_USER_CREATABLE },

View File

@ -197,7 +197,6 @@ static const TypeInfo vhost_user_backend_info = {
.instance_size = sizeof(VhostUserBackend),
.instance_init = vhost_user_backend_init,
.instance_finalize = vhost_user_backend_finalize,
.class_size = sizeof(VhostUserBackendClass),
};
static void register_types(void)

View File

@ -129,7 +129,6 @@ static const TypeInfo qcrypto_secret_info = {
.parent = TYPE_QCRYPTO_SECRET_COMMON,
.name = TYPE_QCRYPTO_SECRET_KEYRING,
.instance_size = sizeof(QCryptoSecretKeyring),
.class_size = sizeof(QCryptoSecretKeyringClass),
.class_init = qcrypto_secret_keyring_class_init,
.interfaces = (InterfaceInfo[]) {
{ TYPE_USER_CREATABLE },

View File

@ -28,7 +28,7 @@
#define TYPE_QAUTHZ_LIST "authz-list"
OBJECT_DECLARE_SIMPLE_TYPE(QAuthZList, qauthz_list,
QAUTHZ_LIST, QAuthZClass)
QAUTHZ_LIST)

View File

@ -28,7 +28,7 @@
#define TYPE_QAUTHZ_LIST_FILE "authz-list-file"
OBJECT_DECLARE_SIMPLE_TYPE(QAuthZListFile, qauthz_list_file,
QAUTHZ_LIST_FILE, QAuthZClass)
QAUTHZ_LIST_FILE)

View File

@ -28,7 +28,7 @@
#define TYPE_QAUTHZ_PAM "authz-pam"
OBJECT_DECLARE_SIMPLE_TYPE(QAuthZPAM, qauthz_pam,
QAUTHZ_PAM, QAuthZClass)
QAUTHZ_PAM)

View File

@ -27,7 +27,7 @@
#define TYPE_QAUTHZ_SIMPLE "authz-simple"
OBJECT_DECLARE_SIMPLE_TYPE(QAuthZSimple, qauthz_simple,
QAUTHZ_SIMPLE, QAuthZClass)
QAUTHZ_SIMPLE)

View File

@ -27,7 +27,7 @@
#define TYPE_QCRYPTO_SECRET_KEYRING "secret_keyring"
OBJECT_DECLARE_SIMPLE_TYPE(QCryptoSecretKeyring, qcrypto_secret_keyring,
QCRYPTO_SECRET_KEYRING, QCryptoSecretCommonClass)
QCRYPTO_SECRET_KEYRING)
struct QCryptoSecretKeyring {

View File

@ -27,7 +27,7 @@
#define TYPE_QIO_DNS_RESOLVER "qio-dns-resolver"
OBJECT_DECLARE_SIMPLE_TYPE(QIODNSResolver, qio_dns_resolver,
QIO_DNS_RESOLVER, ObjectClass)
QIO_DNS_RESOLVER)
/**

View File

@ -26,7 +26,7 @@
#define TYPE_QIO_NET_LISTENER "qio-net-listener"
OBJECT_DECLARE_SIMPLE_TYPE(QIONetListener, qio_net_listener,
QIO_NET_LISTENER, ObjectClass)
QIO_NET_LISTENER)
typedef void (*QIONetListenerClientFunc)(QIONetListener *listener,

View File

@ -639,19 +639,19 @@ struct Object
* @InstanceType: instance struct name
* @module_obj_name: the object name in lowercase with underscore separators
* @MODULE_OBJ_NAME: the object name in uppercase with underscore separators
* @ParentClassType: class struct name of parent type
*
* This does the same as OBJECT_DECLARE_TYPE(), but also declares
* the class struct, thus only the object struct needs to be declare
* manually.
* This does the same as OBJECT_DECLARE_TYPE(), but with no class struct
* declared.
*
* This macro should be used unless the class struct needs to have
* virtual methods declared.
*/
#define OBJECT_DECLARE_SIMPLE_TYPE(InstanceType, module_obj_name, \
MODULE_OBJ_NAME, ParentClassType) \
OBJECT_DECLARE_TYPE(InstanceType, InstanceType##Class, module_obj_name, MODULE_OBJ_NAME) \
struct InstanceType##Class { ParentClassType parent_class; };
#define OBJECT_DECLARE_SIMPLE_TYPE(InstanceType, module_obj_name, MODULE_OBJ_NAME) \
typedef struct InstanceType InstanceType; \
\
G_DEFINE_AUTOPTR_CLEANUP_FUNC(InstanceType, object_unref) \
\
DECLARE_INSTANCE_CHECKER(InstanceType, MODULE_OBJ_NAME, TYPE_##MODULE_OBJ_NAME)
/**

View File

@ -23,7 +23,7 @@
#define TYPE_VHOST_USER_BACKEND "vhost-user-backend"
OBJECT_DECLARE_SIMPLE_TYPE(VhostUserBackend, vhost_user_backend,
VHOST_USER_BACKEND, ObjectClass)
VHOST_USER_BACKEND)

View File

@ -267,7 +267,6 @@ static const TypeInfo qio_dns_resolver_info = {
.parent = TYPE_OBJECT,
.name = TYPE_QIO_DNS_RESOLVER,
.instance_size = sizeof(QIODNSResolver),
.class_size = sizeof(QIODNSResolverClass),
};

View File

@ -307,7 +307,6 @@ static const TypeInfo qio_net_listener_info = {
.name = TYPE_QIO_NET_LISTENER,
.instance_size = sizeof(QIONetListener),
.instance_finalize = qio_net_listener_finalize,
.class_size = sizeof(QIONetListenerClass),
};

View File

@ -21,7 +21,7 @@
#define TYPE_INPUT_BARRIER "input-barrier"
OBJECT_DECLARE_SIMPLE_TYPE(InputBarrier, input_barrier,
INPUT_BARRIER, ObjectClass)
INPUT_BARRIER)
#define MAX_HELLO_LENGTH 1024
@ -723,7 +723,6 @@ static void input_barrier_class_init(ObjectClass *oc, void *data)
static const TypeInfo input_barrier_info = {
.name = TYPE_INPUT_BARRIER,
.parent = TYPE_OBJECT,
.class_size = sizeof(InputBarrierClass),
.class_init = input_barrier_class_init,
.instance_size = sizeof(InputBarrier),
.instance_init = input_barrier_instance_init,

View File

@ -32,7 +32,7 @@ static bool linux_is_button(unsigned int lnx)
#define TYPE_INPUT_LINUX "input-linux"
OBJECT_DECLARE_SIMPLE_TYPE(InputLinux, input_linux,
INPUT_LINUX, ObjectClass)
INPUT_LINUX)
struct InputLinux {
@ -514,7 +514,6 @@ static void input_linux_class_init(ObjectClass *oc, void *data)
static const TypeInfo input_linux_info = {
.name = TYPE_INPUT_LINUX,
.parent = TYPE_OBJECT,
.class_size = sizeof(InputLinuxClass),
.class_init = input_linux_class_init,
.instance_size = sizeof(InputLinux),
.instance_init = input_linux_instance_init,