56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
|
|
from . import index as indexfinder
|
|
from . import compound as compoundfinder
|
|
|
|
|
|
class CreateCompoundTypeSubFinder(object):
|
|
|
|
def __init__(self, parser_factory, matcher_factory):
|
|
|
|
self.parser_factory = parser_factory
|
|
self.matcher_factory = matcher_factory
|
|
|
|
def __call__(self, project_info, *args):
|
|
|
|
compound_parser = self.parser_factory.create_compound_parser(project_info)
|
|
return indexfinder.CompoundTypeSubItemFinder(self.matcher_factory, compound_parser,
|
|
project_info, *args)
|
|
|
|
|
|
class DoxygenItemFinderFactory(object):
|
|
|
|
def __init__(self, finders, project_info):
|
|
|
|
self.finders = finders
|
|
self.project_info = project_info
|
|
|
|
def create_finder(self, data_object):
|
|
|
|
return self.finders[data_object.node_type](self.project_info, data_object, self)
|
|
|
|
|
|
class DoxygenItemFinderFactoryCreator(object):
|
|
|
|
def __init__(self, parser_factory, filter_factory):
|
|
|
|
self.parser_factory = parser_factory
|
|
self.filter_factory = filter_factory
|
|
|
|
def create_factory(self, project_info):
|
|
|
|
finders = {
|
|
"doxygen": indexfinder.DoxygenTypeSubItemFinder,
|
|
"compound": CreateCompoundTypeSubFinder(self.parser_factory, self.filter_factory),
|
|
"member": indexfinder.MemberTypeSubItemFinder,
|
|
"doxygendef": compoundfinder.DoxygenTypeSubItemFinder,
|
|
"compounddef": compoundfinder.CompoundDefTypeSubItemFinder,
|
|
"sectiondef": compoundfinder.SectionDefTypeSubItemFinder,
|
|
"memberdef": compoundfinder.MemberDefTypeSubItemFinder,
|
|
"ref": compoundfinder.RefTypeSubItemFinder,
|
|
}
|
|
|
|
return DoxygenItemFinderFactory(finders, project_info)
|
|
|
|
|
|
|