File: action_id_macros.inc

package info (click to toggle)
chromium 120.0.6099.224-1~deb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,112,112 kB
  • sloc: cpp: 32,907,025; ansic: 8,148,123; javascript: 3,679,536; python: 2,031,248; asm: 959,718; java: 804,675; xml: 617,256; sh: 111,417; objc: 100,835; perl: 88,443; cs: 53,032; makefile: 29,579; fortran: 24,137; php: 21,162; tcl: 21,147; sql: 20,809; ruby: 17,735; pascal: 12,864; yacc: 8,045; lisp: 3,388; lex: 1,323; ada: 727; awk: 329; jsp: 267; csh: 117; exp: 43; sed: 37
file content (60 lines) | stat: -rw-r--r-- 2,453 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// 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(enum_name) #enum_name
#define D2(enum_name, enum_scope) #enum_name
#define D3(enum_name, enum_value, enum_scope) #enum_name
#elif defined(MAP_ACTION_IDS_TO_STRINGS)
// Map first token from enum to string, throw away the rest.
#define D1(enum_name) \
  { enum_name, #enum_name }
#define D2(enum_name, enum_scope) \
  { enum_scope::enum_name, #enum_name }
#define D3(enum_name, enum_value, enum_scope) \
  { enum_scope::enum_name, #enum_name }
#elif defined(MAP_STRING_TO_ACTION_IDS)
// Map first token from string to enum, throw away the rest.
#define D1(enum_name) \
  { #enum_name, enum_name }
#define D2(enum_name, enum_scope) \
  { #enum_name, enum_scope::enum_name }
#define D3(enum_name, enum_value, enum_scope) \
  { #enum_name, enum_scope::enum_name }
#else  // defined(STRINGIZE_ACTION_IDS)
// Declare enum with optional assigned value.
#define D1(enum_name) enum_name
#define D2(enum_name, enum_scope) enum_name
#define D3(enum_name, enum_value, enum_scope) enum_name = enum_value
#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(enum_name) D1(enum_name)
#define E2(enum_name, old_enum_name) D1(enum_name)
#define E3(enum_name, old_enum_name, enum_scope) D2(enum_name, enum_scope)
#define E4(enum_name, old_enum_name, enum_value, enum_scope) \
  D3(enum_name, enum_value, enum_scope)
#define GET_E(_1, _2, _3, _4, macro_name, ...) macro_name
#define E(...) GET_E(__VA_ARGS__, E4, E3, E2, E1)(__VA_ARGS__),
#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)