From: Avi Kivity <avi@redhat.com>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: jan.kiszka@siemens.com, aliguori@us.ibm.com, dlaor@redhat.com,
qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [PATCH 01/25] Introduce QEMU dictionary data type
Date: Wed, 29 Jul 2009 17:37:31 +0300 [thread overview]
Message-ID: <4A705EAB.1030200@redhat.com> (raw)
In-Reply-To: <20090729112220.16ffe414@doriath>
On 07/29/2009 05:22 PM, Luiz Capitulino wrote:
>
>
>> I meant QObject as a base type, so it is a lower layer than QDict; QDict
>> implements the QObject methods, as do QString, QNumber, etc.
>>
>
> Ok, I'm failing at imagining "QDict implements the QObject methods"
> in C, can you elaborate more and/or sketch something?
>
It's really no different than in other languages, except that you have
to write a ton of boilerplate. The kernel is riddled with object
hierarchies:
typedef struct QType {
const char *name;
void (*destroy)(QObject *);
QObject *(*clone)(QObject *)
} QType;
typedef struct QObject {
QType *type;
} QObject;
typedef struct QDict {
QObject base;
// hash stuff
} QDict;
static QType qdict_type = {
.destroy = qdict_destroy,
.clone = qdict_clone,
};
QObject *qobject_clone(QObject *obj) { return obj->type->clone(obj); }
QObject *qdict_clone(QObject *obj)
{
...
}
>> The problem with void *, beyond requiring the user to know what the
>> object type is, is that it is impossible to control object lifecycle.
>> When you destroy a QDict containing void *, you cannot destroy the
>> contained objects. On the other hand if QDict values are all QObjects,
>> then qdict_destroy() can call qobject_destroy() on all of them
>> (qobject_destroy might end up calling qdict_destroy() is a value
>> happened to be a QDict).
>>
>
> Right, but as you said in other email, can we get this merged first
> and then improve or should I do the change for this series?
>
I think we should merge first, doing this sort of change on a 25-patch
series is no fun.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2009-07-29 14:32 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-28 22:04 [Qemu-devel] [PATCH 00/25] Monitor handlers new structure phase 1 Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 01/25] Introduce QEMU dictionary data type Luiz Capitulino
2009-07-28 22:39 ` malc
2009-07-29 13:28 ` Luiz Capitulino
2009-07-29 13:38 ` malc
2009-07-29 13:38 ` Avi Kivity
2009-07-29 15:23 ` [Qemu-devel] " Paolo Bonzini
2009-07-29 15:24 ` Paolo Bonzini
2009-07-29 9:47 ` Avi Kivity
2009-07-29 9:49 ` Avi Kivity
2009-07-29 10:42 ` François Revol
2009-07-29 13:28 ` Anthony Liguori
2009-07-29 14:05 ` Avi Kivity
2009-07-29 13:46 ` Luiz Capitulino
2009-07-29 13:57 ` Avi Kivity
2009-07-29 14:22 ` Luiz Capitulino
2009-07-29 14:37 ` Avi Kivity [this message]
2009-07-29 16:11 ` Luiz Capitulino
2009-07-29 16:19 ` Avi Kivity
2009-07-30 14:50 ` Luiz Capitulino
2009-07-30 15:03 ` Avi Kivity
2009-07-30 15:05 ` Luiz Capitulino
2009-07-30 15:04 ` Filip Navara
2009-07-30 15:13 ` Avi Kivity
2009-07-30 15:15 ` Filip Navara
2009-07-30 15:19 ` Paul Brook
2009-07-28 22:04 ` [Qemu-devel] [PATCH 02/25] net: Fix do_set_link() return type Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 03/25] Add wrappers to functions used by the Monitor Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 04/25] monitor: Document missing supported argument types Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 05/25] monitor: New format for handlers " Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 06/25] monitor: Setup a dictionary with handler arguments Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 07/25] monitor: Export qemu-dict.h header Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 08/25] monitor: New GET_TLONG and GET_TPHYSADDR macros Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 09/25] monitor: Port handler_0 to use the dictionary Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 10/25] monitor: Port handler_1 " Luiz Capitulino
2009-07-28 22:04 ` [Qemu-devel] [PATCH 11/25] monitor: Port handler_2 " Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 12/25] monitor: Port handler_3 " Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 13/25] monitor: Port handler_4 " Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 14/25] monitor: Port handler_5 " Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 15/25] monitor: Port handler_6 " Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 16/25] monitor: Port handler_7 " Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 17/25] monitor: Drop handler_8 and handler_9 handling Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 18/25] monitor: Port handler_10 to use the dictionary Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 19/25] monitor: Split monitor_handle_command() Luiz Capitulino
2009-07-29 15:31 ` [Qemu-devel] " Paolo Bonzini
2009-07-29 15:44 ` Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 20/25] monitor: Add a new index for str_allocated[] Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 21/25] monitor: Drop args[] from monitor_parse_command() Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 22/25] monitor: Drop 'nb_args' " Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 23/25] Add check support Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 24/25] Introduce dictionary test data file Luiz Capitulino
2009-07-28 22:05 ` [Qemu-devel] [PATCH 25/25] Introduce qemu-dict unit-tests Luiz Capitulino
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A705EAB.1030200@redhat.com \
--to=avi@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=dlaor@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=lcapitulino@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).