| 19 | |
| 20 | |
| 21 | class ProtocolHeader: |
| 22 | def __init__(self, node): |
| 23 | self.fields = [] |
| 24 | self.attributes = [] |
| 25 | self.fieldDict = {} |
| 26 | self.attributeDict = {} |
| 27 | self.Buffer = [] |
| 28 | self.Mask = [] |
| 29 | |
| 30 | self.node = node |
| 31 | for field in self.node.fields: |
| 32 | phf = ProtocolHeaderField(field.Size, field.DefaultValue, None, field) |
| 33 | self.fields.append(phf) |
| 34 | if field.Name != "reserved": |
| 35 | self.fieldDict[field.Name] = phf |
| 36 | |
| 37 | for attr in self.node.attributes: |
| 38 | pha = ProtocolHeaderAttribute(attr.Size, attr.DefaultValue, attr) |
| 39 | self.attributes.append(pha) |
| 40 | self.attributeDict[attr.Name] = pha |
| 41 | |
| 42 | def Name(self): |
| 43 | return self.node.Name |
| 44 | |
| 45 | def Fields(self): |
| 46 | return self.fields |
| 47 | |
| 48 | def Attributes(self): |
| 49 | return self.attributes |
| 50 | |
| 51 | def setField(self, name, expression, auto): |
| 52 | if name == "reserved": |
| 53 | return False |
| 54 | |
| 55 | if name not in self.fieldDict: |
| 56 | return False |
| 57 | |
| 58 | field = self.fieldDict[name] |
| 59 | |
| 60 | if field.UpdateValue(expression, auto): |
| 61 | field.UpdateSize() |
| 62 | return True |
| 63 | |
| 64 | return False |
| 65 | |
| 66 | def SetField(self, name, expression): |
| 67 | return self.setField(name, expression, False) |
| 68 | |
| 69 | def SetFieldAuto(self, name, expression): |
| 70 | return self.setField(name, expression, True) |
| 71 | |
| 72 | def SetAttribute(self, name, expression): |
| 73 | if name not in self.attributeDict: |
| 74 | return False |
| 75 | attr = self.attributeDict[name] |
| 76 | |
| 77 | return attr.UpdateValue(expression) |
| 78 |
no outgoing calls
no test coverage detected