Esempio n. 1
0
    def __init__(self, elt, member, *parent):
        Type.__init__(self, member.name)
        self.is_list = True
        self.member = member
        self.parents = list(parent)

        if elt.tag == 'list':
            elts = list(elt)
            self.expr = Expression(elts[0] if len(elts) else elt, self)
        elif elt.tag == 'valueparam':
            self.expr = Expression(elt, self)

        self.size = member.size if member.fixed_size() else None
        self.nmemb = self.expr.nmemb if self.expr.fixed_size() else None
Esempio n. 2
0
    def __init__(self, elt, member, *parents):
        PrimitiveType.__init__(self, member.name, member.size)
        self.is_expr = True
        self.member = member
        self.parents = parents

        self.expr = Expression(list(elt)[0], self)
Esempio n. 3
0
 def __init__(self, index, name, elt, *parent):
     elts = list(elt)
     self.expr = Expression(elts[0] if len(elts) else elt, self)
     ComplexType.__init__(self, name, elts[1:])        
     self.has_name = True
     self.index = 1
     self.lenfield_parent = list(parent) + [self]
     self.parents = list(parent)
     self.is_bitcase = True
Esempio n. 4
0
    def __init__(self, elt, member, *parent):
        Type.__init__(self, member.name)
        self.is_expr = True
        self.member = member
        self.parent = parent

        self.expr = Expression(list(elt)[0], self)

        self.size = member.size
        self.nmemb = 1
Esempio n. 5
0
    def __init__(self, name, elt, *parents):
        ComplexType.__init__(self, name, elt)
        self.parents = parents
        # FIXME: switch cannot store lenfields, so it should just delegate the parents
        self.lenfield_parent = list(parents) + [self]
        # self.fields contains all possible fields collected from the Bitcase objects, 
        # whereas self.items contains the Bitcase objects themselves
        self.bitcases = []

        self.is_switch = True
        elts = list(elt)
        self.expr = Expression(elts[0] if len(elts) else elt, self)
Esempio n. 6
0
    def __init__(self, elt, member, *parent):
        Type.__init__(self, member.name)
        self.is_list = True
        self.member = member
        self.parents = list(parent)
        lenfield_name = False

        if elt.tag == 'list':
            elts = list(elt)
            self.expr = Expression(elts[0] if len(elts) else elt, self)
            is_list_in_parent = self.parents[0].elt.tag in ('request', 'event',
                                                            'reply', 'error')
            if not len(elts) and is_list_in_parent:
                self.expr = Expression(elt, self)
                self.expr.op = 'calculate_len'
            else:
                self.expr = Expression(elts[0] if len(elts) else elt, self)

        self.size = member.size if member.fixed_size() else None
        self.nmemb = self.expr.nmemb if self.expr.fixed_size() else None

        self.required_start_align = self.member.required_start_align
Esempio n. 7
0
 def __init__(self, index, name, elt, *parent):
     elts = list(elt)
     self.expr = []
     for sub_elt in elts:
         if sub_elt.tag == 'enumref':
             self.expr.append(Expression(sub_elt, self))
             elt.remove(sub_elt)
     ComplexType.__init__(self, name, elt)
     self.has_name = True
     self.index = 1
     self.lenfield_parent = list(parent) + [self]
     self.parents = list(parent)
     self.is_case_or_bitcase = True
Esempio n. 8
0
 def __init__(self, index, name, elt, *parent):
     elts = list(elt)
     self.expr = []
     fields = []
     for elt in elts:
         if elt.tag == 'enumref':
             self.expr.append(Expression(elt, self))
         else:
             fields.append(elt)
     ComplexType.__init__(self, name, fields)
     self.has_name = True
     self.index = 1
     self.lenfield_parent = list(parent) + [self]
     self.parents = list(parent)
     self.is_bitcase = True