[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),
[Qemu-devel] [PATCH V7 08/11] qapi: convert BlockdevOptions to use enum discriminator, Wenchao Xia, 2014/02/20
[Qemu-devel] [PATCH V7 09/11] qapi script: do not allow string discriminator, Wenchao Xia, 2014/02/20
[Qemu-devel] [PATCH V7 11/11] qapi test: add error path test for union, Wenchao Xia, 2014/02/20