Line
Link Here
|
0 |
-- src/c_client.py |
0 |
++ src/c_client.py |
Lines 687-696
def _c_serialize_helper_switch(context, self, complex_name,
Link Here
|
687 |
switch_expr = _c_accessor_get_expr(self.expr, None) |
687 |
switch_expr = _c_accessor_get_expr(self.expr, None) |
688 |
|
688 |
|
689 |
for b in self.bitcases: |
689 |
for b in self.bitcases: |
690 |
bitcase_expr = _c_accessor_get_expr(b.type.expr, None) |
690 |
len_expr = len(b.type.expr) |
691 |
code_lines.append(' if(%s & %s) {' % (switch_expr, bitcase_expr)) |
691 |
for n, expr in enumerate(b.type.expr): |
692 |
# code_lines.append(' printf("switch %s: entering bitcase section %s (mask=%%%%d)...\\n", %s);' % |
692 |
bitcase_expr = _c_accessor_get_expr(expr, None) |
693 |
# (self.name[-1], b.type.name[-1], bitcase_expr)) |
693 |
# only one <enumref> in the <bitcase> |
|
|
694 |
if len_expr == 1: |
695 |
code_lines.append(' if(%s & %s) {' % (switch_expr, bitcase_expr)) |
696 |
# multiple <enumref> in the <bitcase> |
697 |
elif n == 0: # first |
698 |
code_lines.append(' if((%s & %s) ||' % (switch_expr, bitcase_expr)) |
699 |
elif len_expr == (n + 1): # last |
700 |
code_lines.append(' (%s & %s)) {' % (switch_expr, bitcase_expr)) |
701 |
else: # between first and last |
702 |
code_lines.append(' (%s & %s) ||' % (switch_expr, bitcase_expr)) |
703 |
|
694 |
b_prefix = prefix |
704 |
b_prefix = prefix |
695 |
if b.type.has_name: |
705 |
if b.type.has_name: |
696 |
b_prefix = prefix + [(b.c_field_name, '.', b.type)] |
706 |
b_prefix = prefix + [(b.c_field_name, '.', b.type)] |