qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH V7 10/11] qapi script: do not add "_" for every


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH V7 10/11] qapi script: do not add "_" for every capitalized char in enum
Date: Thu, 20 Feb 2014 17:54:48 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux)

Wenchao Xia <address@hidden> writes:

> Now "enum AIOContext" will generate AIO_CONTEXT instead of A_I_O_CONTEXT,
> "X86CPU" will generate X86_CPU instead of X86_C_P_U.
>
> Signed-off-by: Wenchao Xia <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> ---
>  include/qapi/qmp/qerror.h |    2 +-
>  scripts/qapi.py           |   26 +++++++++++++++++++-------
>  target-i386/cpu.c         |    2 +-
>  3 files changed, 21 insertions(+), 9 deletions(-)
>
> diff --git a/include/qapi/qmp/qerror.h b/include/qapi/qmp/qerror.h
> index 73c67b7..78db342 100644
> --- a/include/qapi/qmp/qerror.h
> +++ b/include/qapi/qmp/qerror.h
> @@ -159,7 +159,7 @@ void qerror_report_err(Error *err);
>      ERROR_CLASS_GENERIC_ERROR, "Invalid JSON syntax"
>  
>  #define QERR_KVM_MISSING_CAP \
> -    ERROR_CLASS_K_V_M_MISSING_CAP, "Using KVM without %s, %s unavailable"
> +    ERROR_CLASS_KVM_MISSING_CAP, "Using KVM without %s, %s unavailable"
>  
>  #define QERR_MIGRATION_ACTIVE \
>      ERROR_CLASS_GENERIC_ERROR, "There's a migration process in progress"
> diff --git a/scripts/qapi.py b/scripts/qapi.py
> index c3c118b..548d559 100644
> --- a/scripts/qapi.py
> +++ b/scripts/qapi.py
> @@ -485,19 +485,31 @@ def guardend(name):
>  ''',
>                   name=guardname(name))
>  
> -def _generate_enum_value_string(value):
> +# ENUMName -> ENUM_NAME, EnumName1 -> ENUM_NAME1
> +# ENUM_NAME -> ENUM_NAME, ENUM_NAME1 -> ENUM_NAME1, ENUM_Name2 -> ENUM_NAME2
> +# ENUM24_Name -> ENUM24_NAME
> +def _generate_enum_string(value):
> +    c_fun_str = c_fun(value, False)
>      if value.isupper():
> -        return c_fun(value, False)
> +        return c_fun_str
> +
>      new_name = ''
> -    for c in c_fun(value, False):
> -        if c.isupper():
> -            new_name += '_'
> +    l = len(c_fun_str)
> +    for i in range(l):
> +        c = c_fun_str[i]
> +        # When c is upper and no "_" appears before, do more checks
> +        if c.isupper() and (i > 0) and c_fun_str[i - 1] != "_":

c_fun_str[i - 1]... what if i == 0?

> +            # Case 1: next string is lower
> +            # Case 2: previous string is digit
> +            if (i < (l - 1) and c_fun_str[i + 1].islower()) or \
> +            c_fun_str[i - 1].isdigit():
> +                new_name += '_'
>          new_name += c
>      return new_name.lstrip('_').upper()
>  
>  def generate_enum_full_value_string(enum_name, enum_value):
>      # generate abbrev string
> -    abbrev_string = de_camel_case(enum_name).upper()
> +    abbrev_string = _generate_enum_string(enum_name)
>      # generate value string
> -    value_string = _generate_enum_value_string(enum_value)
> +    value_string = _generate_enum_string(enum_value)
>      return "%s_%s" % (abbrev_string, value_string)
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 0e8812a..c83ab0f 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -315,7 +315,7 @@ typedef struct X86RegisterInfo32 {
>  } X86RegisterInfo32;
>  
>  #define REGISTER(reg) \
> -    [R_##reg] = { .name = #reg, .qapi_enum = X86_C_P_U_REGISTER32_##reg }
> +    [R_##reg] = { .name = #reg, .qapi_enum = X86_CPU_REGISTER32_##reg }
>  X86RegisterInfo32 x86_reg_info_32[CPU_NB_REGS32] = {
>      REGISTER(EAX),
>      REGISTER(ECX),



reply via email to

[Prev in Thread] Current Thread [Next in Thread]