// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // The following macros are used to declare both the action id enumerations and // the stringized names of the enumeration elements for use in persisting the // actions. To stringize the element names, define STRINGIZE_ACTION_IDS prior to // including this file. This file is intended to be included just before and // just after the enumeration or string array declarations. #if !defined(ACTION_ID_MACROS_DEFINED) #define ACTION_ID_MACROS_DEFINED #if defined(STRINGIZE_ACTION_IDS) // Convert first token to string, throw away the rest. #define D1 … #define D2 … #define D3 … #elif defined(MAP_ACTION_IDS_TO_STRINGS) // Map first token from enum to string, throw away the rest. #define D1 … #define D2 … #define D3 … #elif defined(MAP_STRING_TO_ACTION_IDS) // Map first token from string to enum, throw away the rest. #define D1 … #define D2 … #define D3 … #else // defined(STRINGIZE_ACTION_IDS) // Declare enum with optional assigned value. #define D1 … #define D2 … #define D3 … #endif // defined(STRINGIZE_ACTION_IDS) // Select which token in the declaration is the assigned value. // Use first and optional third token, ignore optional second. #define E1 … #define E2 … #define E3 … #define E4 … #define GET_E … #define E … #else // !defined(ACTION_ID_MACROS_DEFINED) #undef D1 #undef D2 #undef D3 #undef E1 #undef E2 #undef E3 #undef E4 #undef GET_E #undef E #undef ACTION_ID_MACROS_DEFINED #endif // !defined(ACTION_ID_MACROS_DEFINED)