MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / ElementDef

Class ElementDef

addons/misra_9.py:2–212  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1# Holds information about an array, struct or union's element definition.
2class ElementDef:
3 def __init__(self, elementType, name, valueType, dimensions = None):
4 self.elementType = elementType # 'array', 'record' or 'value'
5 self.name = str(name)
6 self.valueType = valueType
7 self.children = []
8 self.dimensions = dimensions
9 self.parent = None
10
11 self.isDesignated = False
12 self.isPositional = False
13 self.numInits = 0
14 self.childIndex = -1
15
16 self.flexibleToken = None
17 self.isFlexible = False
18 self.structureViolationToken = None
19
20 def __repr__(self):
21 inits = ""
22 if self.isPositional:
23 inits += 'P'
24 if self.isDesignated:
25 inits += 'D'
26 if not (self.isPositional or self.isDesignated) and self.numInits == 0:
27 inits += '_'
28 if self.numInits > 1:
29 inits += str(self.numInits)
30
31 attrs = ["childIndex", "elementType", "valueType"]
32 return "{}({}, {}, {})".format(
33 "ElementDef",
34 self.getLongName(),
35 inits,
36 ", ".join(("{}={}".format(a, repr(getattr(self, a))) for a in attrs))
37 )
38
39 @property
40 def isArray(self):
41 return self.elementType == 'array'
42
43 @property
44 def isRecord(self):
45 return self.elementType == 'record'
46
47 @property
48 def isValue(self):
49 return self.elementType == 'value'
50
51
52 def getLongName(self):
53 return self.parent.getLongName() + "." + self.name if self.parent else self.name
54
55 def getInitDump(self):
56 t = []
57 if self.isPositional:
58 t.append('P')
59 if self.isDesignated:
60 t.append('D')

Callers 4

parseInitializerMethod · 0.85
getElementDefFunction · 0.85
createChildFunction · 0.85
createRecordChildrenDefsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected