def collect_class(self, tok): if tok.type == 'OPEN_BRACE': self.current_brace_level += 1 self.mode = Mode.INSIDE_CLASS_OR_ENUM if self.namespace_stack: self.namespace_stack[-1].had_class = True info('HAD CLASS') else: warning('WARNING: Class at ROOT namespace found: ', self.path) elif tok.type == 'SEMI_COLON': self.switch_to_normal() # do not consider forward declarations in global scope # (they do not add anything to namespace) if not self.namespace_stack: # no need to clear_name_stack() cause it is empty return self.namespace_stack[-1].had_forward = True name = '::'.join(map(lambda c: c.current, self.namespace_stack)) obj_name = ' '.join(map(lambda c: c.value, self.name_stack)) info('HAD FORWARD', name, obj_name) self.clear_name_stack() else: self.name_stack.append(tok)
def _checkFuncOrVar(self): if has('OPEN_BRACE', self.nameStack) and has('CLOSE_BRACE', self.nameStack): if self.namespaceStack: self.namespaceStack[-1].hadFuncOrVar = True info('HAD FUNC or VAR') else: functionName = ' '.join(map(lambda e: e.value, self.nameStack)) info('WARNING: Probably function at ROOT namespace found: ', self.path, functionName) if has('OPEN_SQUARE_BRACKET', self.nameStack) and has( 'CLOSE_SQUARE_BRACKET', self.nameStack): if self.namespaceStack: self.namespaceStack[-1].hadFuncOrVar = True info('HAD FUNC or VAR') else: warning('WARNING: Unknown case: ', self.path, ' '.join(map(lambda e: e.value, self.nameStack)))
def collectClass(self, tok): if tok.type == 'OPEN_BRACE': self.currentBraceLevel += 1 self.mode = Mode.InsideClassOrEnum if self.namespaceStack: self.namespaceStack[-1].hadClass = True info('HAD CLASS') else: warning('WARNING: Class at ROOT namespace found: ', self.path) elif tok.type == 'SEMI_COLON': self.switchToNormal() self.namespaceStack[-1].hadForward = True name = '::'.join(map(lambda c: c.current, self.namespaceStack)) objName = ' '.join(map(lambda c: c.value, self.nameStack)) info('HAD FORWARD', name, objName) self.clearNameStack() else: self.nameStack.append(tok)
def collect_enum(self, tok): if tok.type == 'OPEN_BRACE': self.current_brace_level += 1 self.mode = Mode.INSIDE_CLASS_OR_ENUM if self.namespace_stack: self.namespace_stack[-1].had_enum = True info('HAD ENUM') else: warning('WARNING: Enum at ROOT namespace found: ', self.path) elif tok.type == 'SEMI_COLON': self.switch_to_normal() self.namespace_stack[-1].had_forward = True name = '::'.join(map(lambda c: c.current, self.namespace_stack)) obj_name = ' '.join(map(lambda c: c.value, self.name_stack)) info('HAD FORWARD', name, obj_name) self.clear_name_stack() else: self.name_stack.append(tok)