From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:47525) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RpyM3-0003l4-4p for qemu-devel@nongnu.org; Wed, 25 Jan 2012 03:37:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RpyLt-0002o4-Um for qemu-devel@nongnu.org; Wed, 25 Jan 2012 03:37:19 -0500 Message-ID: <4F1FBF31.2020002@web.de> Date: Wed, 25 Jan 2012 09:37:05 +0100 From: Jan Kiszka MIME-Version: 1.0 References: <1327433600-7403-1-git-send-email-aliguori@us.ibm.com> <1327433600-7403-28-git-send-email-aliguori@us.ibm.com> <4F1F0E2D.2020706@web.de> <4F1F12E7.2020309@us.ibm.com> <4F1F1C28.4040600@web.de> <4F1F1E91.50609@codemonkey.ws> <4F1F233B.8040804@web.de> <4F1F2875.3050509@codemonkey.ws> <4F1F2B77.2020703@web.de> <4F1F38B6.7000506@codemonkey.ws> In-Reply-To: <4F1F38B6.7000506@codemonkey.ws> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigC9265E105BEA45DFF872F89E" Subject: Re: [Qemu-devel] [PATCH 27/28] sysbus: apic: ioapic: convert to QEMU Object Model List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Peter Maydell , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Alexander Graf , Blue Swirl , =?ISO-8859-15?Q?Andreas_F=E4rber?= , qemu-ppc@nongnu.org, Paul Brook , Aurelien Jarno , Gerd Hoffmann This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigC9265E105BEA45DFF872F89E Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable On 2012-01-25 00:03, Anthony Liguori wrote: > They're exactly the same size (16 lines). If you embed TypeInfo into > DeviceTypeInfo, and introduce a Device specific type registration > function, then you could do: >=20 > static DeviceTypeInfo my_device_type_info =3D { > .type.name =3D TYPE_MY_DEVICE, > .type.parent =3D TYPE_PARENT_DEVICE, > .reset =3D my_device_reset, And if you introduce some #define TYPE_UNIMPLEMENTED (void *)&dummy_variable you can easily express [.field =3D NULL] =3D> use parent .field =3D UNIMPLEMENTED =3D> don't run any handler > }; >=20 > static void register_devices(void) > { > device_type_register_static(&my_device_type_info); > } >=20 > Which admittedly saves 6 lines, but also is a big step backwards IMHO. = > Now you've got a lot of one-off functions which means you loose the > advantage of having everything work through the same infrastructure.=20 Can't follow. Four lines [static inline] void device_type_register_static(DeviceTypeInfo *dt) { type_register_static(&dt->type); } are neither ugly nor complex. Rather, this helps concentrating effort at _central_ places instead of decentralizing and duplicating lines like in your imperative approach. That's the whole point: keep the common case (derived classes) compact. Jan --------------enigC9265E105BEA45DFF872F89E Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk8fvzEACgkQitSsb3rl5xRSWgCfbbjoqnfpejCenLQV2KcS8Qld xWgAoJmq9C07dM3/Kn+RKfg+2aPHNU6J =msQb -----END PGP SIGNATURE----- --------------enigC9265E105BEA45DFF872F89E--