hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/bash -e
 
handle_size() {
   [ $# -eq 2 -o $# -eq 1 ] || exit 1
 
   # Should be int
   for arg in $@; do
       echo $arg |grep -Eq "^[0-9]+$" || exit 1
   done
 
   echo -n \`\`\"[$1${2:+, $2}]\"\'\'
}
 
handle_range() {
   [ $# -eq 2 ] || exit 1
 
   # Should be number
   for arg in $@; do
       echo $arg |grep -Eq "^-?[0-9]+(\.[0-9]+)?$" || exit 1
   done
 
   # Max should >= min
   echo "$2 >= $1" |bc |grep -wq 1 || exit 1
 
   echo -n \`\`\"[$1, $2]\"\'\'
}
 
handle_struct() {
   [ $# -eq 3 -o $# -eq 2 ] || exit 1
 
   echo -n @desc: alias=\"$1\", type=\"struct_list\", size=\"$2\", ui_module=\"${3:-normal_ui_style}\"
}
 
handle_number() {
   [ $# -eq 5 ] || exit 1
 
   case $2 in
       bool)
           case $5 in
               0|1|true|false) ;;
               *) exit 1
           esac
           ;;
       u8|u16|u32|u64)
           echo $5 |grep -Eq "^[0-9]+$" || exit 1
           ;;
       s8|s16|s32|s64)
           echo $5 |grep -Eq "^-?[0-9]+$" || exit 1
           ;;
       f32|f64)
           echo $5 |grep -Eq "^-?[0-9]+(\.[0-9]+)?$" || exit 1
           ;;
       *)
           exit 1
   esac
 
   echo -n @desc: alias=\"$1\", type=\"$2\", size=\"$3\", range=\"$4\", default=\"$5\"
}
 
handle_string() {
   [ $# -eq 4 ] || exit 1
 
   echo -n @desc: alias=\"$1\", type=\"string\", size=\"$2\", range=\"$3\", default=\"$4\"
}
 
handle_enum() {
   [ $# -eq 3 ] || exit 1
 
   echo -n @desc: type=\"enum\", alias=\"$1\", enum_def=\"$2\", default=\"$3\"
}
 
MACRO=$1
shift
case $MACRO in
   M4_SIZE)
       handle_size "$@"
       ;;
   M4_RANGE)
       handle_range "$@"
       ;;
   M4_STRUCT_DESC)
       handle_struct "$@"
       ;;
   M4_NUMBER_DESC)
       handle_number "$@"
       ;;
   M4_STRING_DESC)
       handle_string "$@"
       ;;
   M4_ENUM_DESC)
       handle_enum "$@"
       ;;
   *)
       exit 1
       ;;
esac