qemu-e2k/docs
Eric Blake 9fb081e0b9 qapi: Reserve 'q_*' and 'has_*' member names
c_name() produces names starting with 'q_' when protecting a
dictionary member name that would fail to directly compile, but
in doing so can cause clashes with any member name already
beginning with 'q-' or 'q_'.  Likewise, we create a C name 'has_'
for any optional member that can clash with any member name
beginning with 'has-' or 'has_'.

Technically, rather than blindly reserving the namespace,
we could try to complain about user names only when an actual
collision occurs, or even teach c_name() how to munge names
to avoid collisions.  But it is not trivial, especially when
collisions can occur across multiple types (such as via
inheritance or flat unions).  Besides, no existing .json
files are trying to use these names.  So it's easier to just
outright forbid the potential for collision.  We can always
relax things in the future if a real need arises for QMP to
express member names that have been forbidden here.

'has_' only has to be reserved for struct/union member names,
while 'q_' is reserved everywhere (matching the fact that
only members can be optional, while we use c_name() for munging
both members and entities).  Note that we could relax 'q_'
restrictions on entities independently from member names; for
example, c_name('qmp_' + 'unix') would result in a different
function name than our current 'qmp_' + c_name('unix').

Update and add tests to cover the new error messages.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1445898903-12082-6-git-send-email-eblake@redhat.com>
[Consistently pass protect=False to c_name(); commit message tweaked
slightly]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2015-11-02 08:30:26 +01:00
..
specs ivshmem: use little-endian int64_t for the protocol 2015-10-26 10:19:53 +01:00
aio_notify_accept.promela
aio_notify_bug.promela
aio_notify.promela
atomics.txt
bitmaps.md
blkdebug.txt
blkverify.txt
bootindex.txt
build-system.txt docs: describe the QEMU build system structure / design 2015-09-25 12:20:18 +02:00
ccid.txt
ich9-ehci-uhci.cfg
image-fuzzer.txt
live-block-ops.txt
memory-hotplug.txt
memory.txt
migration.txt
multi-thread-compression.txt
multiple-iothreads.txt
multiseat.txt
pci_expander_bridge.txt
q35-chipset.cfg
qapi-code-gen.txt qapi: Reserve 'q_*' and 'has_*' member names 2015-11-02 08:30:26 +01:00
qcow2-cache.txt
qdev-device-use.txt
qemupciserial.inf
qmp-events.txt docs: Document QMP event rate limiting 2015-10-30 09:05:38 +01:00
qmp-intro.txt docs: Move files from docs/qmp/ to docs/ 2015-10-12 18:44:53 +02:00
qmp-spec.txt docs: Document QMP event rate limiting 2015-10-30 09:05:38 +01:00
rcu.txt doc/rcu: fix g_free_rcu() usage example 2015-10-19 10:13:07 +02:00
rdma.txt
spice-port-fqdn.txt
tracing.txt docs: update the usage example of "dtrace" backend in tracing.txt 2015-10-09 10:14:05 +01:00
usb2.txt
usb-storage.txt
virtio-balloon-stats.txt
virtio-migration.txt virtio: add some migration doc 2015-10-22 14:34:48 +03:00
vnc-ledstate-Pseudo-encoding.txt
win32-qemu-event.promela qemu-thread: add a fast path to the Win32 QemuEvent 2015-09-24 20:52:28 +02:00
writing-qmp-commands.txt qapi: Rename qmp_marshal_input_FOO() to qmp_marshal_FOO() 2015-09-21 09:56:48 +02:00
xbzrle.txt
xen-save-devices-state.txt