From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=52078 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OnYJU-0006I9-CJ for qemu-devel@nongnu.org; Mon, 23 Aug 2010 10:47:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OnYJS-0004Ki-En for qemu-devel@nongnu.org; Mon, 23 Aug 2010 10:47:52 -0400 Received: from mail-gw0-f45.google.com ([74.125.83.45]:54840) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OnYJS-0004KP-Ba for qemu-devel@nongnu.org; Mon, 23 Aug 2010 10:47:50 -0400 Received: by gwb11 with SMTP id 11so2326581gwb.4 for ; Mon, 23 Aug 2010 07:47:49 -0700 (PDT) Message-ID: <4C728A12.2090006@codemonkey.ws> Date: Mon, 23 Aug 2010 09:47:46 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v2 0/7] APIC/IOAPIC cleanup References: <4C6D86F9.3010602@codemonkey.ws> <4C6D98E7.9020109@codemonkey.ws> <4C6DA75D.40303@codemonkey.ws> <4C6ECBB7.7060608@codemonkey.ws> <4C718865.7010807@redhat.com> <4C719080.4030202@codemonkey.ws> <4C720B1F.3030206@redhat.com> <4C727646.3040903@codemonkey.ws> <4C727ACC.7080501@redhat.com> <4C727C43.2040704@codemonkey.ws> <4C727EF5.6060402@redhat.com> <4C72851E.50405@codemonkey.ws> <4C72869A.3030302@redhat.com> In-Reply-To: <4C72869A.3030302@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: Blue Swirl , "Liu >> \"Liu, Jinsong\"" , qemu-devel , Markus Armbruster , Paul Brook On 08/23/2010 09:32 AM, Avi Kivity wrote: >> Is bad? The answer would depend on whether OtherState implemented >> methods or not. If OtherState has no methods, it's fine. If it has >> methods, it's bad. > > > I don't see why. As long as you can manipulate all of MyDevice's > state via MyDeviceState methods, why do you care about OtherState at all? See below. >> >> Devices can contain references to structs and objects. If a Device >> contains a reference to an object, the object should be stored in a >> BusState which is a container of Devices. Therefore, the object >> should inherit from Device. > > I disagree. It's up to the author to decide whether to split a Device > into 1 or 15 objects. > > If one of the other objects is also a subclass of DeviceState, then > you're probably violating that DeviceState's contract. But that's a > different (and trivial) matter. > > (side point: in C no objects have constructors and methods. in C++ > all objects have constructors and methods, even PODs) Things that inherit from DeviceState have ctors/dtors. Things that don't end up inventing their own and probably will do so poorly. When implementing a C object model, you really need to have a base object that everything inherits from. In glib, it's GObject. Regards, Anthony Liguori