qapi: Add size parser to StringInputVisitor
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
		
							parent
							
								
									23802b4fe0
								
							
						
					
					
						commit
						a5829ccfc3
					
				| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
#include "qapi/string-input-visitor.h"
 | 
			
		||||
#include "qapi/visitor-impl.h"
 | 
			
		||||
#include "qapi/qmp/qerror.h"
 | 
			
		||||
#include "qemu/option.h"
 | 
			
		||||
 | 
			
		||||
struct StringInputVisitor
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +42,28 @@ static void parse_type_int(Visitor *v, int64_t *obj, const char *name,
 | 
			
		|||
    *obj = val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void parse_type_size(Visitor *v, uint64_t *obj, const char *name,
 | 
			
		||||
                            Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    StringInputVisitor *siv = DO_UPCAST(StringInputVisitor, visitor, v);
 | 
			
		||||
    Error *err = NULL;
 | 
			
		||||
    uint64_t val;
 | 
			
		||||
 | 
			
		||||
    if (siv->string) {
 | 
			
		||||
        parse_option_size(name, siv->string, &val, &err);
 | 
			
		||||
    } else {
 | 
			
		||||
        error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
 | 
			
		||||
                  "size");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    if (err) {
 | 
			
		||||
        error_propagate(errp, err);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    *obj = val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void parse_type_bool(Visitor *v, bool *obj, const char *name,
 | 
			
		||||
                            Error **errp)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -128,6 +151,7 @@ StringInputVisitor *string_input_visitor_new(const char *str)
 | 
			
		|||
 | 
			
		||||
    v->visitor.type_enum = input_type_enum;
 | 
			
		||||
    v->visitor.type_int = parse_type_int;
 | 
			
		||||
    v->visitor.type_size = parse_type_size;
 | 
			
		||||
    v->visitor.type_bool = parse_type_bool;
 | 
			
		||||
    v->visitor.type_str = parse_type_str;
 | 
			
		||||
    v->visitor.type_number = parse_type_number;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue