Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 491496 | Differences between
and this patch

Collapse All | Expand All

(-)file_not_specified_in_diff (-5 / +15 lines)
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)]

Return to bug 491496