Lines Matching defs:kind
62 def is_type_decl(cls, kind):
63 if kind in cls.TYPES:
65 if not isinstance(kind, cls):
66 raise TypeError(f'expected KIND, got {kind!r}')
70 def is_decl(cls, kind):
71 if kind in cls.DECLS:
73 if not isinstance(kind, cls):
74 raise TypeError(f'expected KIND, got {kind!r}')
78 def get_group(cls, kind, *, groups=None):
79 if not isinstance(kind, cls):
80 raise TypeError(f'expected KIND, got {kind!r}')
95 if kind in cls._GROUPS[group]:
98 return kind.value
146 return KIND.get_group(item.kind)
186 class SourceLine(namedtuple('Line', 'file kind data conditions')):
254 class ParsedItem(namedtuple('ParsedItem', 'file kind parent name data')):
268 colnames = 'filename funcname name kind data'.split()
282 elif column == 'kind':
283 kwargs['kind'] = KIND(value)
295 if self.kind is KIND.STATEMENT:
335 elif column == 'kind':
336 value = self.kind.value
367 kind = getattr(decl, 'kind', None)
374 kind = decl.get('kind')
396 return kind, storage, typequal, typespec, abstract
400 if decl.kind not in (KIND.VARIABLE, KIND.FUNCTION):
425 kind = None
431 if parsed.kind is not cls.kind:
432 raise TypeError(f'kind mismatch ({parsed.kind.value} != {cls.kind.value})')
491 if colname == 'kind':
509 # XXX It could be something like "<kind> <name>".
513 # XXX It could be something like (kind, name).
537 elif colname in cls.FIELDS or colname == 'kind':
622 self.kind,
647 if column == 'kind':
652 value = f'({self.parent.kind.value} {self.parent.name})'
697 f'<{parsed.kind.value}>',
703 if parent.kind is KIND.FUNCTION:
723 if parsed.kind is KIND.VARIABLE and parsed.parent:
729 yield f'{prefix}{parsed.kind.value} {parsed.name!r}{suffix}'
731 if column == 'kind':
735 if column == 'parent' and parsed.kind is not KIND.VARIABLE:
738 if parsed.kind in (KIND.STRUCT, KIND.UNION):
740 elif parsed.kind is KIND.ENUM:
742 elif parsed.kind is KIND.STATEMENT:
777 _, _, _, kind, _ = fixed
778 sub = KIND_CLASSES.get(KIND(kind))
780 raise TypeError(f'unsupported kind, got {row!r}')
787 filename, funcname, name, kind, data = row
788 kind = KIND._from_raw(kind)
789 if kind is not cls.kind:
790 raise TypeError(f'expected kind {cls.kind.value!r}, got {row!r}')
802 raise TypeError(f'{cls.kind.value} declarations do not have parents ({parsed})')
887 kind = KIND.VARIABLE
1017 kind = KIND.FUNCTION
1076 _shortkey = f'{self.kind.value} {name}'
1103 kind = KIND.TYPEDEF
1239 kind = KIND.STRUCT
1243 kind = KIND.UNION
1247 kind = KIND.ENUM
1297 kind = KIND.STATEMENT
1336 KIND_CLASSES = {cls.kind: cls for cls in [
1351 cls = KIND_CLASSES[parsed.kind]
1353 raise ValueError(f'unsupported kind in {parsed!r}')
1377 if item.kind is not KIND.STATEMENT)
1388 raw.parent if raw.kind is KIND.VARIABLE else None,
1464 if decl.kind is KIND.STATEMENT:
1503 return self._find(kind=KIND.TYPES)
1535 kind = None
1537 kind, = extra
1548 if kind:
1549 implicit['kind'] = kind
1552 def _find(self, filename=None, funcname=None, name=None, kind=None):
1557 if decl.kind is not KIND.VARIABLE:
1563 if kind:
1564 kinds = KIND.resolve_group(kind)
1565 if decl.kind not in kinds: