[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification |
Date: |
Tue, 23 Jul 2013 20:15:40 +0100 |
On 23 July 2013 03:43, Andreas Färber <address@hidden> wrote:
> v2 improves internal vs. "public" header separation for GIC.
> As before, no feedback was received to address PMM's QOM concerns,
> so this is what we have as design patterns for the moment.
I had a thought about this. Suppose we have our class header
files do something like this:
#ifdef MYCLASS_IMPLEMENTATION
#define PRIVATE
#else
#ifdef __GNUC__
#define PRIVATE __attribute__((deprecated("this is a private field")))
#else
#define PRIVATE
#endif
typedef struct MyObject {
int publicfield;
int privatefield PRIVATE;
} MyObject;
Then we can allow both users of the class and the implementation
to share the same header file (obviously only the implementation
defines MYCLASS_IMPLEMENTATION before using it). The users can
embed the struct MyObject with no problems, but if they try
to directly access a private field this happens:
/tmp/zz9.c:22:5: warning: ‘privatefield’ is deprecated (declared at
/tmp/zz9.c:12): this is a private field [-Wdeprecated-declarations]
(Since this is only a safety-guard against accidental uses,
it's OK that it's only present when building with gcc.)
thanks
-- PMM
- [Qemu-devel] [PATCH v2 06/16] cpu/a9mpcore: Embed A9SCUState, (continued)
- [Qemu-devel] [PATCH v2 06/16] cpu/a9mpcore: Embed A9SCUState, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 03/16] intc/arm_gic: Extract public header hw/intc/arm_gic.h, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 11/16] cpu/a9mpcore: Prepare for QOM embedding, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 10/16] cpu/a9mpcore: Convert to QOM realize, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 12/16] cpu/a15mpcore: QOM cast cleanup, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 14/16] cpu/a15mpcore: Embed GICState, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 13/16] cpu/a15mpcore: Split off instance_init, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 15/16] cpu/a15mpcore: Convert to QOM realize, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 09/16] cpu/a9mpcore: Embed ARMMPTimerState, Andreas Färber, 2013/07/22
- [Qemu-devel] [PATCH v2 16/16] cpu/a15mpcore: Prepare for QOM embedding, Andreas Färber, 2013/07/22
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification,
Peter Maydell <=
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Peter Maydell, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Alexander Graf, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Peter Maydell, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Alexander Graf, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Andreas Färber, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Peter Maydell, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Andreas Färber, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Peter Maydell, 2013/07/23
- Re: [Qemu-devel] [PATCH v2 00/16] arm: A9MPCore+A15MPCore QOM'ification, Andreas Färber, 2013/07/23