Files
NetworkManager/libnm-core/tests/test-general-enums.h
Thomas Haller 1525b44714 utils: support unknown numeric values in nm_utils_enum_to_str() and nm_utils_enum_from_str()
- for nm_utils_enum_to_str(), whenever encounter a numeric value
  that has no expression as enum/flag, encode the value numerically.
  For enums, encode it as decimal. For flags, encode it as hexadecimal
  (with 0x prefix).
  Also check that an existing value_nick cannot be wrongly interpreted
  as a integer, and if they would, encode them instead as integers only.

- Likewise, in nm_utils_enum_from_str() accept numerical values
  and for nm_utils_enum_get_values() return enum nicks that look
  like numeric values in their numeric form only.

- In nm_utils_enum_from_str(), don't use g_strsplit(), but clone the
  string only once and manipulate it inplace.

- Accept '\n' and '\r' as additional delimiters for flags.

- For consistency, also return an err_token for enum types. If the caller
  doesn't care about that, he should simply not pass the out-argument.
2017-02-20 13:45:32 +01:00

51 lines
1.8 KiB
C

/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
* Copyright 2015 Red Hat, Inc.
*/
#ifndef _NM_TEST_GENERAL_ENUMS_H_
#define _NM_TEST_GENERAL_ENUMS_H_
typedef enum {
NM_TEST_GENERAL_BOOL_ENUM_NO = 0,
NM_TEST_GENERAL_BOOL_ENUM_YES = 1,
NM_TEST_GENERAL_BOOL_ENUM_MAYBE = 2,
NM_TEST_GENERAL_BOOL_ENUM_UNKNOWN = 3,
NM_TEST_GENERAL_BOOL_ENUM_INVALID = 4, /*< skip >*/
NM_TEST_GENERAL_BOOL_ENUM_67 = 67,
NM_TEST_GENERAL_BOOL_ENUM_46 = 64,
} NMTestGeneralBoolEnum;
typedef enum {
NM_TEST_GENERAL_META_FLAGS_NONE = 0,
NM_TEST_GENERAL_META_FLAGS_FOO = (1 << 0),
NM_TEST_GENERAL_META_FLAGS_BAR = (1 << 1),
NM_TEST_GENERAL_META_FLAGS_BAZ = (1 << 2),
NM_TEST_GENERAL_META_FLAGS_0x8 = (1 << 3),
NM_TEST_GENERAL_META_FLAGS_0x4 = (1 << 4),
} NMTestGeneralMetaFlags;
typedef enum { /*< flags >*/
NM_TEST_GENERAL_COLOR_FLAGS_WHITE = 1, /*< skip >*/
NM_TEST_GENERAL_COLOR_FLAGS_BLUE = 2,
NM_TEST_GENERAL_COLOR_FLAGS_RED = 4,
NM_TEST_GENERAL_COLOR_FLAGS_GREEN = 8,
} NMTestGeneralColorFlags;
#endif /* _NM_TEST_GENERAL_ENUMS_H_ */