From 81c63b0eed39432878f78727f60a1e7499645199 Mon Sep 17 00:00:00 2001 From: Yves-Alexis Perez Date: Fri, 11 Jul 2014 07:23:31 +0200 Subject: Imported Upstream version 5.2.0 --- src/libstrongswan/utils/enum.h | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'src/libstrongswan/utils/enum.h') diff --git a/src/libstrongswan/utils/enum.h b/src/libstrongswan/utils/enum.h index a2f97d05e..3c03c2a7b 100644 --- a/src/libstrongswan/utils/enum.h +++ b/src/libstrongswan/utils/enum.h @@ -120,9 +120,30 @@ char *enum_to_name(enum_name_t *e, int val); * * @param e enum names for this enum value * @param name name to get enum value for - * @return enum value, -1 if not found + * @param valp variable sized pointer receiving value + * @return TRUE if enum name found, FALSE otherwise */ -int enum_from_name(enum_name_t *e, char *name); +#define enum_from_name(e, name, valp) ({ \ + int _val; \ + int _found = enum_from_name_as_int(e, name, &_val); \ + if (_found) \ + { \ + *(valp) = _val; \ + } \ + _found; }) + +/** + * Convert a enum string back to its enum value, integer pointer variant. + * + * This variant takes integer pointer only, use enum_from_name() to pass + * enum type pointers for the result. + * + * @param e enum names for this enum value + * @param name name to get enum value for + * @param val integer pointer receiving value + * @return TRUE if enum name found, FALSE otherwise + */ +bool enum_from_name_as_int(enum_name_t *e, const char *name, int *val); /** * printf hook function for enum_names_t. -- cgit v1.2.3