from collections import namedtuple import enum import os.path import re from c_common import fsutil from c_common.clsutil import classonly import c_common.misc as _misc import c_common.strutil as _strutil import c_common.tables as _tables from .parser._regexes import SIMPLE_TYPE, _STORAGE FIXED_TYPE = _misc.Labeled('FIXED_TYPE') STORAGE = frozenset(_STORAGE) ############################# # kinds @enum.unique class KIND(enum.Enum): # XXX Use these in the raw parser code. TYPEDEF = 'typedef' STRUCT = 'struct' UNION = 'union' ENUM = 'enum' FUNCTION = 'function' VARIABLE = 'variable'
from c_common import fsutil from c_common.clsutil import classonly import c_common.misc as _misc from c_parser.info import ( KIND, HighlevelParsedItem, Declaration, TypeDeclaration, ) from c_parser.match import ( is_type_decl, ) from .match import ( is_process_global, ) IGNORED = _misc.Labeled('IGNORED') UNKNOWN = _misc.Labeled('UNKNOWN') class SystemType(TypeDeclaration): def __init__(self, name): super().__init__(None, name, None, None, _shortkey=name) class Analyzed: _locked = False @classonly def is_target(cls, raw): if isinstance(raw, HighlevelParsedItem): return True