Lines Matching refs:decl
53 elif group == 'decl':
140 'decl': KIND.DECLS,
366 def get_parsed_vartype(decl):
367 kind = getattr(decl, 'kind', None)
368 if isinstance(decl, ParsedItem):
369 storage, vartype = _get_vartype(decl.data)
373 elif isinstance(decl, dict):
374 kind = decl.get('kind')
375 storage, vartype = _get_vartype(decl)
379 elif isinstance(decl, VarType):
381 typequal, typespec, abstract = decl
382 elif isinstance(decl, TypeDef):
384 typequal, typespec, abstract = decl.vartype
385 elif isinstance(decl, Variable):
386 storage = decl.storage
387 typequal, typespec, abstract = decl.vartype
388 elif isinstance(decl, Function):
389 storage = decl.storage
390 typequal, typespec, abstract = decl.signature.returntype
391 elif isinstance(decl, str):
392 vartype, storage = VarType.from_str(decl)
395 raise NotImplementedError(decl)
399 def get_default_storage(decl):
400 if decl.kind not in (KIND.VARIABLE, KIND.FUNCTION):
402 return 'extern' if decl.parent is None else 'auto'
405 def get_effective_storage(decl, *, default=None):
410 default = get_default_storage(decl)
414 storage = decl.storage
416 storage, _ = _get_vartype(decl.data)
1430 def _is_public(cls, decl):
1437 # (file, func, name) -> decl
1453 for key, decl in self._decls.items():
1455 raise ValueError(f'expected 3-tuple key, got {key!r} (for decl {decl!r})')
1458 raise ValueError(f'expected name in key, got {key!r} (for decl {decl!r})')
1460 raise ValueError(f'expected name in key to be str, got {key!r} (for decl {decl!r})')
1464 if decl.kind is KIND.STATEMENT:
1465 raise ValueError(f'expected a declaration, got {decl!r}')
1522 #def add_decl(self, decl, key=None):
1523 # decl = _resolve_parsed(decl)
1524 # self._add_decl(decl, key)
1553 for decl in self._decls.values():
1554 if filename and decl.filename != filename:
1557 if decl.kind is not KIND.VARIABLE:
1559 if decl.parent.name != funcname:
1561 if name and decl.name != name:
1565 if decl.kind not in kinds:
1567 yield decl
1569 def _add_decl(self, decl, key=None):
1572 raise NotImplementedError((key, decl))
1579 # XXX Also add with the decl-derived key if not the same?
1581 key, _ = self._resolve_key(decl)
1582 self._decls[key] = decl
1587 for decl in decls:
1588 if isinstance(decl, Declaration):
1589 self._add_decl(decl)
1591 for decl in decls:
1592 self._add_decl(decl)
1593 elif isinstance(decl, HighlevelParsedItem):
1594 raise NotImplementedError(decl)
1597 key, decl = decl
1599 raise NotImplementedError(decl)
1600 if not isinstance(decl, Declaration):
1601 raise NotImplementedError(decl)
1602 self._add_decl(decl, key)
1604 for key, decl in decls:
1605 self._add_decl(decl, key)