commit 4de12658cc7ba7b2c704449cb63e778b65b15529
parent 56185547fdbd48e18d2d355b2bc0a739e55d3370
Author: kyle <kyle@getaddrinfo.net>
Date: Sat, 21 Nov 2015 11:41:20 -0700
gen_msgs: add print_table helper function
- given a header, footer, and format string, create a languages enumerations
- perl doesn't have enumerations, so use hashes and arrays
- currently for perl theres the following mappings (tables):
- message number to message string, useful for logging messages
- message string to message number, useful in the testsuite
- message number to function, useful when receiving messages
Diffstat:
M | gen_msgs.sh | | | 55 | +++++++++++++++++++++++-------------------------------- |
1 file changed, 23 insertions(+), 32 deletions(-)
diff --git a/gen_msgs.sh b/gen_msgs.sh
@@ -18,20 +18,30 @@ SHELL_PATH="tests/msgs.sh"
GENERATED_AT="generated `date`"
+# enumerate messages and make a table
+print_table() {
+ # print header
+ echo "${2}" >> ${1}
+
+ i=0
+ for msg in $MSG_TYPES; do
+ eval "echo \"$3\"" >> ${1}
+ i=$((i + 1))
+ done
+
+ # print footer
+ echo "${4}" >> ${1}
+}
+
# ios
gen_objc() {
cat << EOF > $OBJC_PATH
/* ${GENERATED_AT} */"
int protocol_version = $PROTOCOL_VERSION;
-enum MSG_TYPES {
EOF
- i=0
- for msg in $MSG_TYPES; do
- echo -e "\t$msg = $i," >> $OBJC_PATH
- i=$((i + 1))
- done
- echo "};" >> $OBJC_PATH
+
+ print_table $OBJC_PATH "enum MSG_TYPES {" "\t\$msg = \$i," "};"
}
# android
@@ -40,14 +50,9 @@ gen_java() {
/* ${GENERATED_AT} */
int protocol_version = $PROTOCOL_VERSION;
-public enum MsgTypes {
EOF
- i=0
- for msg in $MSG_TYPES; do
- echo -e "\t$msg\t(${i})," >> $JAVA_PATH
- i=$((i + 1))
- done
- echo "};" >> $JAVA_PATH
+
+ print_table $JAVA_PATH "public enum MsgTypes {" "\t\$msg\t(\$i)," "};"
}
# server and test suite
@@ -59,27 +64,13 @@ use strict;
use warnings;
use Exporter qw(import);
-our @EXPORT = qw(%msgs \$protocol_version);
+our @EXPORT = qw(%msg_num @msg_str @msg_func \$protocol_version);
our \$protocol_version = $PROTOCOL_VERSION;
-our %msgs = (
EOF
- i=0
- for msg in $MSG_TYPES; do
- echo "\t$msg => $i," >> $PERL_PATH
- echo "\t$i => \"$msg\"," >> $PERL_PATH
- i=$((i + 1))
- done
- echo ");" >> $PERL_PATH
-
- # echo "my @msg_handlers = (" >> $PERL_PATH
- # i=0
- # for msg in $MSG_TYPES; do
- # echo "\t\&msg_$msg," >> $PERL_PATH
-
- # i=$((i + 1))
- # done
- # echo ");" >> $PERL_PATH
+ print_table $PERL_PATH "our %msg_num = (" "\t\$msg => \$i," ");"
+ print_table $PERL_PATH "our @msg_str = (" "\t'\$msg'," ");"
+ print_table $PERL_PATH "our @msg_func = (" "\t\\&msg_\$msg," ");"
}
gen_objc