2015-08-21 07:04:50 +00:00
|
|
|
/*
|
|
|
|
* String parsing Visitor
|
|
|
|
*
|
|
|
|
* Copyright Red Hat, Inc. 2012
|
|
|
|
*
|
|
|
|
* Author: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
|
*
|
|
|
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
|
|
|
* See the COPYING.LIB file in the top-level directory.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef STRING_INPUT_VISITOR_H
|
|
|
|
#define STRING_INPUT_VISITOR_H
|
|
|
|
|
|
|
|
#include "qapi/visitor.h"
|
|
|
|
|
|
|
|
typedef struct StringInputVisitor StringInputVisitor;
|
|
|
|
|
qapi: Document visitor interfaces, add assertions
The visitor interface for mapping between QObject/QemuOpts/string
and QAPI is scandalously under-documented, making changes to visitor
core, individual visitors, and users of visitors difficult to
coordinate. Among other questions: when is it safe to pass NULL,
vs. when a string must be provided; which visitors implement which
callbacks; the difference between concrete and virtual visits.
Correct this by retrofitting proper contracts, and document where some
of the interface warts remain (for example, we may want to modify
visit_end_* to require the same 'obj' as the visit_start counterpart,
so the dealloc visitor can be simplified). Later patches in this
series will tackle some, but not all, of these warts.
Add assertions to (partially) enforce the contract. Some of these
were only made possible by recent cleanup commits.
Backports commit adfb264c9ed04bfc694921b72173be8e29e90024 from qemu
2018-02-23 20:45:26 +00:00
|
|
|
/*
|
|
|
|
* The string input visitor does not implement support for visiting
|
2018-12-18 09:57:23 +00:00
|
|
|
* QAPI structs, alternates, null, or arbitrary QTypes. Only flat lists
|
|
|
|
* of integers (except type "size") are supported.
|
qapi: Document visitor interfaces, add assertions
The visitor interface for mapping between QObject/QemuOpts/string
and QAPI is scandalously under-documented, making changes to visitor
core, individual visitors, and users of visitors difficult to
coordinate. Among other questions: when is it safe to pass NULL,
vs. when a string must be provided; which visitors implement which
callbacks; the difference between concrete and virtual visits.
Correct this by retrofitting proper contracts, and document where some
of the interface warts remain (for example, we may want to modify
visit_end_* to require the same 'obj' as the visit_start counterpart,
so the dealloc visitor can be simplified). Later patches in this
series will tackle some, but not all, of these warts.
Add assertions to (partially) enforce the contract. Some of these
were only made possible by recent cleanup commits.
Backports commit adfb264c9ed04bfc694921b72173be8e29e90024 from qemu
2018-02-23 20:45:26 +00:00
|
|
|
*/
|
2018-02-25 06:08:00 +00:00
|
|
|
Visitor *string_input_visitor_new(const char *str);
|
2015-08-21 07:04:50 +00:00
|
|
|
|
|
|
|
#endif
|