Rewrite string-input-visitor to be (hopefully) less ugly. Support int and uint lists (including ranges, but not implemented via type "Range").
Virtual walks are now supported and more errors are cought (and some bugs fixed). Fix and extend the tests. Parsing of uint64_t is now properly supported. Importantly, when parsing a list we now return the list and not an ordered set (we are not an ordered set parser after all). Whoever needs that can add it on top. As far as I can see, current code can deal with it but I'll have to look at the details. While at it, introduce and use qemu_strtod() and qemu_strtod_finite(). However don't convert monitor.c as that seems to be too broken for me (it ignores both conversion errors and range errors, and there is an actual unit test in which conversion is expected to fail). RFC - v1: - Too much to name it all, just some highlights - Pull some tests before the rework - Introduce qemu_strtod_finite() and use it in more places - More tests - "qapi: rewrite string-input-visitor" -- programming error -> assert -- g_assert() -> assert(), g_assert_not_reached() -> abort() -- Accept single-element ranges "1-1" -- Split parsing and returning the next range element -- Minor style fixes David Hildenbrand (9): cutils: add qemu_strtod() and qemu_strtod_finite() cutils: use qemu_strtod_finite() in do_strtosz() qapi: use qemu_strtod_finite() in string-input-visitor qapi: use qemu_strtod_finite() in qobject-input-visitor test-string-input-visitor: add more tests qapi: rewrite string-input-visitor test-string-input-visitor: use virtual walk test-string-input-visitor: split off uint64 list tests test-string-input-visitor: add range overflow tests include/qapi/string-input-visitor.h | 4 +- include/qemu/cutils.h | 8 +- monitor.c | 2 +- qapi/qobject-input-visitor.c | 9 +- qapi/string-input-visitor.c | 418 ++++++++++++++++------------ tests/test-cutils.c | 14 +- tests/test-string-input-visitor.c | 172 +++++++++--- util/cutils.c | 52 +++- 8 files changed, 432 insertions(+), 247 deletions(-) -- 2.17.2