class ClassUsageDictionaryBuilder(NamespaceUsageDictionaryBuilder): def __init__(self, namespaceFileName): self.namespaceFileName = namespaceFileName self.namespaceDict = ClassUsageDictionary() ## # Create a ClassUsageEntity for the # self.currentLine. ## def buildCurrentEntity(self): added = False self.currentEntity = None if isValidClassUsageLine(self.currentLine): self.currentEntity = ClassUsageEntity(self.currentLine) added = self.namespaceDict.add(self.currentEntity) return added ## # Mark for each class usage reference whether it is surrounded by a namespace # or not. By calculating this information beforehand, verifications of # transitively included class usages can be made less expensive. ## def refineDictWithNamespaceInfo(self, namespaceContainmentChecker): for classUsageRef in self.namespaceDict.getAllReferences(): srcLoc = classUsageRef.getSourceLocation() parentNamespaceName = namespaceContainmentChecker.getSurroundingNamespaceName( srcLoc) classUsageRef.setParentNamespaceName(parentNamespaceName)
class ClassUsageDictionaryBuilder(NamespaceUsageDictionaryBuilder): def __init__(self, namespaceFileName): self.namespaceFileName = namespaceFileName self.namespaceDict = ClassUsageDictionary() ## # Create a ClassUsageEntity for the # self.currentLine. ## def buildCurrentEntity(self): added = False self.currentEntity = None if isValidClassUsageLine(self.currentLine): self.currentEntity = ClassUsageEntity(self.currentLine) added = self.namespaceDict.add(self.currentEntity) return added ## # Mark for each class usage reference whether it is surrounded by a namespace # or not. By calculating this information beforehand, verifications of # transitively included class usages can be made less expensive. ## def refineDictWithNamespaceInfo(self, namespaceContainmentChecker): for classUsageRef in self.namespaceDict.getAllReferences(): srcLoc = classUsageRef.getSourceLocation() parentNamespaceName = namespaceContainmentChecker.getSurroundingNamespaceName(srcLoc) classUsageRef.setParentNamespaceName(parentNamespaceName)
def __init__(self, includeDict, namespaceContainmentChecker, \ namespaceUsageChecker,\ classUsageChecker=ClassUsageChecker(ClassUsageDictionary())): self.transIncludeDict = TransitiveIncludeDictionary(includeDict) self.namespaceContainmentChecker = namespaceContainmentChecker self.namespaceUsageChecker = namespaceUsageChecker self.classUsageChecker = classUsageChecker self.transInhDict = TransitiveInheritanceDictionary( InheritanceDictionary())
def __init__(self, namespaceFileName): self.namespaceFileName = namespaceFileName self.namespaceDict = ClassUsageDictionary()
log.info("Entering famix Level 1") namespaceDbLoc = dbLoc + ".namespaces" clDbLoc = dbLoc + ".classes" miDbLoc = dbLoc + ".methods" mdDbLoc = dbLoc + ".methoddefs" inDbLoc = dbLoc + ".inheritance" fuDbLoc = dbLoc + ".functions" fdDbLoc = dbLoc + ".functiondefs" DataReqs.checkfamixL1Reqs(sys.argv[1] + "/" + sys.argv[2]) # default initialization namespaceContainmentChecker = NamespaceContainmentChecker( NamespaceDictionary()) namespaceUsageContainmentChecker = NamespaceContainmentChecker( NamespaceUsageDictionary()) classUsageContainmentChecker = ClassUsageChecker(ClassUsageDictionary()) if os.path.exists(namespaceDbLoc): log.info(" Parsing namespaces...") namespaceDict = snavTableReader.parseNamespaces(namespaceDbLoc) namespaceContainmentChecker = NamespaceContainmentChecker(namespaceDict) log.info("Parsed " + ` namespaceDict.getNumberOfEntities() ` + " namespaces") log.info(" Parsing namespace usages...") namespaceUsageDict = snavTableReader.parseNamespaceUsages(namespaceDbLoc) namespaceUsageContainmentChecker = NamespaceContainmentChecker( namespaceUsageDict) log.info("Parsed " + ` namespaceUsageDict.getNumberOfEntities() ` + " namespace usages")