1#!/usr/bin/env python
2#
3# Copyright (C) 2015 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the 'License');
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#      http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an 'AS IS' BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
17# pylint: disable=bad-indentation,bad-continuation
18
19from __future__ import print_function
20import os
21import re
22import sys
23
24input_prop_list = []
25ev_list = []
26syn_list = []
27key_list = []
28rel_list = []
29abs_list = []
30sw_list = []
31msc_list = []
32led_list = []
33rep_list = []
34snd_list = []
35mt_tool_list = []
36ff_status_list = []
37ff_list = []
38
39r = re.compile(r'#define\s+(\S+)\s+((?:0x)?\d+)')
40
41for arg in sys.argv[1:]:
42  with open(arg, 'r') as f:
43    for line in f:
44      m = r.match(line)
45      if m:
46        name = m.group(1)
47        if name.startswith("INPUT_PROP_"):
48          input_prop_list.append(name)
49        elif name.startswith("EV_"):
50          ev_list.append(name)
51        elif name.startswith("SYN_"):
52          syn_list.append(name)
53        elif name.startswith("KEY_") or name.startswith("BTN_"):
54          key_list.append(name)
55        elif name.startswith("REL_"):
56          rel_list.append(name)
57        elif name.startswith("ABS_"):
58          abs_list.append(name)
59        elif name.startswith("SW_"):
60          sw_list.append(name)
61        elif name.startswith("MSC_"):
62          msc_list.append(name)
63        elif name.startswith("LED_"):
64          led_list.append(name)
65        elif name.startswith("REP_"):
66          rep_list.append(name)
67        elif name.startswith("SND_"):
68          snd_list.append(name)
69        elif name.startswith("MT_TOOL_"):
70          mt_tool_list.append(name)
71        elif name.startswith("FF_STATUS_"):
72          ff_status_list.append(name)
73        elif name.startswith("FF_"):
74          ff_list.append(name)
75
76def Dump(struct_name, values):
77  print('static struct label %s[] = {' % (struct_name))
78  for value in values:
79    print('    LABEL(%s),' % (value))
80  print('    LABEL_END,')
81  print('};')
82
83Dump("input_prop_labels", input_prop_list)
84Dump("ev_labels", ev_list)
85Dump("syn_labels", syn_list)
86Dump("key_labels", key_list)
87Dump("rel_labels", rel_list)
88Dump("abs_labels", abs_list)
89Dump("sw_labels", sw_list)
90Dump("msc_labels", msc_list)
91Dump("led_labels", led_list)
92Dump("rep_labels", rep_list)
93Dump("snd_labels", snd_list)
94Dump("mt_tool_labels", mt_tool_list)
95Dump("ff_status_labels", ff_status_list)
96Dump("ff_labels", ff_list)
97