User:Bugman/subsystems: Difference between revisions
Jump to navigation
Jump to search
(→All subsystems: Sorted output.) |
(→Tracking down subsystems: Update for the grep output.) |
||
(32 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
{{collapsible script | {{collapsible script | ||
| type = Python script | | type = Python script | ||
| title = | | title = The ''find_subsystems.py'' script for finding all subsystems within the flightgear and simgear C++ code bases. | ||
| intro = This script requires the ''grep'' Unix command, which can be installed on any OS. And it must be run with Python3. | | intro = This script requires the ''grep'' Unix command, which can be installed on any OS. And it must be run with Python3. | ||
| lang = python | | lang = python | ||
Line 36: | Line 36: | ||
"""Class for finding all subsystems and subsystem groups.""" | """Class for finding all subsystems and subsystem groups.""" | ||
def __init__(self): | def __init__(self, output=True): | ||
"""Find all subsystems and subsystem groups.""" | """Find all subsystems and subsystem groups. | ||
@keyword output: A flag which if False will suppress all output to STDOUT. | |||
@type output: bool | |||
""" | |||
# Command line options. | # Command line options. | ||
Line 57: | Line 61: | ||
# Add some problematic non-parsable classes. | # Add some problematic non-parsable classes. | ||
if self.category_subsystems: | if self.category_subsystems: | ||
self.subsystems[1].append(Subsystem("FGAISim", base_class=Subsystem("FGInterface", base_class=Subsystem("SGSubsystem")), declaration_file="src/FDM/SP/AISim.hpp", xml=self.output_xml)) | self.subsystems[1].append(Subsystem("FGAISim", base_class=Subsystem("FGInterface", base_class=Subsystem("SGSubsystem")), static_id="aisim", declaration_file="src/FDM/SP/AISim.hpp", root_path=self.root_path("src/FDM/SP/AISim.hpp"), full_path=self.output_full_path, xml=self.output_xml)) | ||
# Find all SGSubsystem and SGSubsystemGroup derived classes. | # Find all SGSubsystem and SGSubsystemGroup derived classes. | ||
Line 86: | Line 90: | ||
# Find the subsystem and subsystem group implementation files. | # Find the subsystem and subsystem group implementation files. | ||
self.find_implementations() | self.find_implementations() | ||
# Text search. | |||
if self.search_flag: | |||
self.search() | |||
# Final summary. | # Final summary. | ||
self.summarise() | if output: | ||
self.summarise() | |||
Line 119: | Line 128: | ||
for subsystem in self.subsystems[0] + self.subsystems[1] + self.subsystems[2] + self.subsystems[3] + self.groups[0] + self.groups[1] + self.groups[2] + self.groups[3]: | for subsystem in self.subsystems[0] + self.subsystems[1] + self.subsystems[2] + self.subsystems[3] + self.groups[0] + self.groups[1] + self.groups[2] + self.groups[3]: | ||
# The repository location. | # The repository location. | ||
if subsystem.declaration_file | if self.is_simgear(subsystem.declaration_file): | ||
path = SIMGEAR_PATH | path = SIMGEAR_PATH | ||
else: | else: | ||
Line 149: | Line 158: | ||
lines = pipe.stdout.readlines() | lines = pipe.stdout.readlines() | ||
if len(lines): | if len(lines): | ||
subsystem. | subsystem.add_implementation_file(file_name) | ||
break | break | ||
Line 182: | Line 191: | ||
# Store the implementation file. | # Store the implementation file. | ||
elif len(files): | elif len(files): | ||
subsystem. | subsystem.add_implementation_file(files[0]) | ||
break | break | ||
Line 207: | Line 216: | ||
# Find all subsystems or groups. | # Find all subsystems or groups. | ||
for file_name, class_name in self.grep(path=path, base_name=base_name): | for file_name, class_name in self.grep(path=path, base_name=base_name, simgear=True): | ||
if class_name in skip: | if class_name in skip: | ||
continue | continue | ||
primary.append(Subsystem(class_name, base_class=base, declaration_file=file_name, xml=self.output_xml)) | primary.append(Subsystem(class_name, base_class=base, declaration_file=file_name, root_path=self.root_path(file_name), full_path=self.output_full_path, xml=self.output_xml)) | ||
# Sort the subsystems by name. | # Sort the subsystems by name. | ||
Line 234: | Line 243: | ||
# Loop over all primary subsystems. | # Loop over all primary subsystems. | ||
for subsystem in primary: | for subsystem in primary: | ||
for file_name, derived_class in self.grep(path=path, base_name=subsystem.name): | for file_name, derived_class in self.grep(path=path, base_name=subsystem.name, simgear=self.is_simgear(subsystem.declaration_file)): | ||
secondary.append(Subsystem(derived_class, base_class=subsystem, declaration_file=file_name, xml=self.output_xml)) | secondary.append(Subsystem(derived_class, base_class=subsystem, declaration_file=file_name, root_path=self.root_path(file_name), full_path=self.output_full_path, xml=self.output_xml)) | ||
# Sort the subsystems by name. | # Sort the subsystems by name. | ||
Line 259: | Line 268: | ||
# Loop over all secondary subsystems. | # Loop over all secondary subsystems. | ||
for subsystem in secondary: | for subsystem in secondary: | ||
for file_name, derived_class in self.grep(path=path, base_name=subsystem.name): | for file_name, derived_class in self.grep(path=path, base_name=subsystem.name, simgear=self.is_simgear(subsystem.declaration_file)): | ||
tertiary.append(Subsystem(derived_class, base_class=subsystem, declaration_file=file_name, xml=self.output_xml)) | tertiary.append(Subsystem(derived_class, base_class=subsystem, declaration_file=file_name, root_path=self.root_path(file_name), full_path=self.output_full_path, xml=self.output_xml)) | ||
# Sort all subsystems by name. | # Sort all subsystems by name. | ||
Line 284: | Line 293: | ||
# Loop over all tertiary subsystems. | # Loop over all tertiary subsystems. | ||
for subsystem in tertiary: | for subsystem in tertiary: | ||
for file_name, derived_class in self.grep(path=path, base_name=subsystem.name): | for file_name, derived_class in self.grep(path=path, base_name=subsystem.name, simgear=self.is_simgear(subsystem.declaration_file)): | ||
quaternary.append(Subsystem(derived_class, base_class=subsystem, declaration_file=file_name, xml=self.output_xml)) | quaternary.append(Subsystem(derived_class, base_class=subsystem, declaration_file=file_name, root_path=self.root_path(file_name), full_path=self.output_full_path, xml=self.output_xml)) | ||
# Sort all subsystems by name. | # Sort all subsystems by name. | ||
Line 291: | Line 300: | ||
def grep(self, path=None, base_name=None): | def grep(self, path=None, base_name=None, simgear=False): | ||
"""Generator method for finding all classes derived from the given base name and repository. | """Generator method for finding all classes derived from the given base name and repository. | ||
Line 298: | Line 307: | ||
@keyword base_name: The name of the base class. | @keyword base_name: The name of the base class. | ||
@type base_name: str | @type base_name: str | ||
@keyword simgear: A flag specifying if the base class belongs to Simgear or not. | |||
@type simgear: bool | |||
@return: The source file and the name of the derived class. | @return: The source file and the name of the derived class. | ||
@rtype: str, str | @rtype: str, str | ||
Line 303: | Line 314: | ||
# The Unix grep command to run. | # The Unix grep command to run. | ||
cmd = 'cd %s; grep -rI %s "public \<%s\>" {{!}} grep -v "%s::"' % (path, self.grep_exclude_dir, base_name, base_name) | if simgear: | ||
cmd = 'cd %s; grep -rI %s "public \<%s\>\{{!}}public simgear.*::\<%s\>" {{!}} grep -v "%s::"' % (path, self.grep_exclude_dir, base_name, base_name, base_name) | |||
else: | |||
cmd = 'cd %s; grep -rI %s "public \<%s\>" {{!}} grep -v "%s::"' % (path, self.grep_exclude_dir, base_name, base_name) | |||
pipe = Popen(cmd, shell=True, stdout=PIPE) | pipe = Popen(cmd, shell=True, stdout=PIPE) | ||
Line 331: | Line 345: | ||
# Generator method. | # Generator method. | ||
yield file_name, class_name | yield file_name, class_name | ||
def is_simgear(self, file_name): | |||
"""Determine if the file is from simgear. | |||
@param file_name: The name of the file. | |||
@type file_name: str | |||
@return: True if the file is from simgear, False otherwise. | |||
@rtype: bool | |||
""" | |||
# Basic path check. | |||
if file_name[:7] == "simgear": | |||
return True | |||
return False | |||
Line 340: | Line 369: | ||
# The output arguments. | # The output arguments. | ||
group = parser. | group = parser.add_argument_group("output arguments", "Change the output format.") | ||
group.add_argument("-t", "--text", default=False, action="store_true", help="Output in plain text format (the default).") | group.add_argument("-t", "--text", default=False, action="store_true", help="Output in plain text format (the default).") | ||
group.add_argument("-x", "--xml", default=False, action="store_true", help="Output in XML format.") | group.add_argument("-x", "--xml", default=False, action="store_true", help="Output in XML format.") | ||
Line 346: | Line 375: | ||
group.add_argument("-d", "--declaration-files", default=False, action="store_true", help="List the files where subsystems and subsystem groups are declared.") | group.add_argument("-d", "--declaration-files", default=False, action="store_true", help="List the files where subsystems and subsystem groups are declared.") | ||
group.add_argument("-i", "--implementation-files", default=False, action="store_true", help="List the files where subsystems and subsystem groups are implemented.") | group.add_argument("-i", "--implementation-files", default=False, action="store_true", help="List the files where subsystems and subsystem groups are implemented.") | ||
group.add_argument("--classes", default=False, action="store_true", help="List all class names.") | |||
group.add_argument("-p", "--full-path", default=False, action="store_true", help="For file listings, include the SIMGEAR or FLIGHTGEAR absolute path.") | |||
# The text search arguments. | |||
group = parser.add_argument_group("text search arguments", "Search for certain text in the files.") | |||
group.add_argument("--search", metavar="TEXT", help="Search for the given text in the declaration and implementation files.") | |||
group.add_argument("--get-subsystem", default=False, action="store_true", help="Search for all get_subsystems() function calls.") | |||
group.add_argument("-c", "--includes", default=False, action="store_true", help="Extend the search to include included files.") | |||
# Code base selection. | # Code base selection. | ||
Line 369: | Line 406: | ||
elif args.files: | elif args.files: | ||
self.output_format = "files" | self.output_format = "files" | ||
elif args.classes: | |||
self.output_format = "classes" | |||
elif args.declaration_files: | elif args.declaration_files: | ||
self.output_format = "declaration files" | self.output_format = "declaration files" | ||
elif args.implementation_files: | elif args.implementation_files: | ||
self.output_format = "implementation files" | self.output_format = "implementation files" | ||
self.output_full_path = args.full_path | |||
# The text search arguments. | |||
self.search_flag = False | |||
if args.search or args.get_subsystem: | |||
self.search_flag = True | |||
self.search_text = args.search | |||
self.search_get_subsystem = args.get_subsystem | |||
self.search_includes = args.includes | |||
# The code base arguments. | # The code base arguments. | ||
Line 391: | Line 439: | ||
def | def root_path(self, file_name): | ||
""" | """Determine the root for the given file. | ||
@param file_name: The name of the file. | |||
@type file_name: str | |||
@return: The root path. | |||
@rtype: str | |||
""" | |||
# The relative or absolute path. | |||
if self.is_simgear(file_name): | |||
return SIMGEAR_PATH | |||
else: | |||
return FLIGHTGEAR_PATH | |||
def search(self): | |||
"""Search for certain text in the declaration and implementation files (and includes).""" | |||
# | # The search text. | ||
if self. | search_text = self.search_text | ||
if self.search_get_subsystem: | |||
search_text = "get_subsystem" | |||
# | # Loop over all subsystems and groups. | ||
for subsystem in self.subsystems[0] + self.subsystems[1] + self.subsystems[2] + self.subsystems[3] + self.groups[0] + self.groups[1] + self.groups[2] + self.groups[3]: | |||
# The repository location. | |||
if self.is_simgear(subsystem.declaration_file): | |||
path = SIMGEAR_PATH | |||
else: | |||
path = FLIGHTGEAR_PATH | |||
# The files to search through. | |||
if | root = "" | ||
if not subsystem.root_path: | |||
root = path + sep | |||
files = [root+subsystem.declaration_file] | |||
if subsystem.implementation_file: | |||
files.append(root+subsystem.implementation_file) | |||
# | # Loop over each file. | ||
for file_name in files: | |||
# Extract the contents. | |||
file = open(file_name) | |||
lines = file.readlines() | |||
file.close() | |||
# | # Search. | ||
for line in lines: | |||
if search(search_text, line): | |||
print("%s: %s" % (file_name, line)) | |||
def summarise(self): | |||
"""Print out a summary of all found subsystems and subsystem groups.""" | |||
# | # Basic file or class listings. | ||
if self.output_format in ["files", "declaration files", "implementation files", "classes"]: | |||
# Concatenate the lists. | |||
subsystem_list = [] | |||
if self.category_subsystems: | |||
subsystem_list += self.subsystems[0] + self.subsystems[1] + self.subsystems[2] + self.subsystems[3] | |||
if self.category_groups: | |||
subsystem_list += self.groups[0] + self.groups[1] + self.groups[2] + self.groups[3] | |||
# Loop over each subsystem, printing out the source files. | |||
for subsystem in subsystem_list: | |||
# Code base selections. | |||
if self.is_simgear(subsystem.declaration_file) and not self.output_simgear: | |||
continue | |||
if not self.is_simgear(subsystem.declaration_file) and not self.output_flightgear: | |||
continue | |||
# Output the source files. | |||
if self.output_format in ["files", "declaration files"]: | |||
if subsystem.full_path: | |||
print("%s%s%s" % (subsystem.root_path, sep, subsystem.declaration_file)) | |||
else: | |||
print("%s" % subsystem.declaration_file) | |||
if self.output_format in ["files", "implementation files"]: | |||
if subsystem.implementation_file: | |||
if subsystem.full_path: | |||
print("%s%s%s" % (subsystem.root_path, sep, subsystem.implementation_file)) | |||
else: | |||
print("%s" % subsystem.implementation_file) | |||
# Output the class name. | |||
if self.output_format == "classes": | |||
print("%s" % subsystem.name) | |||
# Skip the rest of the function. | |||
return | |||
# | # XML start. | ||
if self.output_xml: | if self.output_xml: | ||
print(" | print("<?xml version=\"1.0\"?>") | ||
print(" | print("<subsystems>") | ||
# Subsystem and group printouts. | |||
labels = ["primary", "secondary", "tertiary", "quaternary"] | |||
labels2 = ["Primary", "Secondary", "Tertiary", "Quaternary"] | |||
classes = ["subsystems", "groups"] | |||
for i in range(len(self.subsystems)): | |||
for j in range(len(classes)): | |||
if classes[j] == "subsystems": | |||
subsystem_list = self.subsystems[i] | |||
else: | |||
subsystem_list = self.groups[i] | |||
# Nothing in the list. | |||
if not len(subsystem_list): | |||
continue | |||
# Count all. | |||
counts = self.count(subsystem_list) | |||
# Start. | |||
if self.output_xml: | |||
print(" <%s_%s count=\"%i\">" % (labels[i], classes[j], counts[j])) | |||
else: | |||
print("\n%s %s (%i):" % (labels2[i], classes[j], counts[j])) | |||
# Subsystems. | |||
for subsystem in subsystem_list: | |||
for line in repr(subsystem).split("\n"): | |||
print(" %s" % (line)) | |||
# End. | |||
if self.output_xml: | |||
print(" </%s_%s>" % (labels[i], classes[j])) | |||
# Counts. | |||
subsystem_classes = len(self.subsystems[0] + self.subsystems[1] + self.subsystems[2] + self.subsystems[3]) | |||
subsystem_groups = len(self.groups[0] + self.groups[1] + self.groups[2] + self.groups[3]) | |||
subsystem_total = subsystem_classes + subsystem_groups | |||
# Separate simgear and flightgear subsystems. | |||
subsystem_classes_simgear = 0 | |||
subsystem_classes_flightgear = 0 | |||
subsystem_groups_simgear = 0 | |||
subsystem_groups_flightgear = 0 | |||
for subsystem in self.subsystems[0] + self.subsystems[1] + self.subsystems[2] + self.subsystems[3]: | |||
if self.is_simgear(subsystem.declaration_file): | |||
subsystem_classes_simgear += 1 | |||
else: | |||
subsystem_classes_flightgear += 1 | |||
for group in self.groups[0] + self.groups[1] + self.groups[2] + self.groups[3]: | |||
if self.is_simgear(group.declaration_file): | |||
subsystem_groups_simgear += 1 | |||
else: | |||
subsystem_groups_flightgear += 1 | |||
# | # Sums. | ||
simgear_total = subsystem_classes_simgear + subsystem_groups_simgear | |||
flightgear_total = subsystem_classes_flightgear + subsystem_groups_flightgear | |||
self. | if self.output_xml: | ||
print(" <counts>") | |||
print(" <simgear>") | |||
if self.category_subsystems: | |||
print(" <subsystem_classes>%i</subsystem_classes>" % subsystem_classes_simgear) | |||
if self.category_groups: | |||
print(" <subsystem_groups>%i</subsystem_groups>" % subsystem_groups_simgear) | |||
if self.category_subsystems and self.category_groups: | |||
print(" <total>%i</total>" % simgear_total) | |||
print(" </simgear>") | |||
print(" <flightgear>") | |||
if self.category_subsystems: | |||
print(" <subsystem_classes>%i</subsystem_classes>" % subsystem_classes_flightgear) | |||
if self.category_groups: | |||
print(" <subsystem_groups>%i</subsystem_groups>" % subsystem_groups_flightgear) | |||
if self.category_subsystems and self.category_groups: | |||
if self. | print(" <total>%i</total>" % flightgear_total) | ||
print(" </flightgear>") | |||
print(" <combined>") | |||
if self.category_subsystems: | |||
print(" <subsystem_classes>%i</subsystem_classes>" % subsystem_classes) | |||
if self.category_groups: | |||
print(" <subsystem_groups>%i</subsystem_groups>" % subsystem_groups) | |||
if self.category_subsystems and self.category_groups: | |||
print(" <total>%i</total>" % subsystem_total) | |||
print(" </combined>") | |||
print(" </counts>") | |||
else: | |||
print("\nCounts: %i subsystem classes (%i flightgear, %i simgear)." % (subsystem_classes, subsystem_classes_flightgear, subsystem_classes_simgear)) | |||
print("Counts: %i subsystem groups (%i flightgear, %i simgear)." % (subsystem_groups, subsystem_groups_flightgear, subsystem_groups_simgear)) | |||
print("Counts: %i subsystem classes and groups (%i flightgear, %i simgear)." % (subsystem_total, flightgear_total, simgear_total)) | |||
# | # XML end. | ||
if self.output_xml: | |||
print("</subsystems>") | |||
class Subsystem: | |||
"""Object for storing the information for a specific subsystem.""" | |||
def __init__(self, name, base_class=None, static_id=None, declaration_file=None, implementation_file=None, root_path=None, full_path=False, xml=False): | |||
"""Set up the object. | |||
def | |||
""" | |||
@keyword | @param name: The name of the subsystem. | ||
@type | @type name: str | ||
@ | @keyword base_class: The name of the base class. | ||
@ | @type base_class: str | ||
@keyword static_id: The value returned by staticSubsystemClassId(). | |||
@type static_id: str | |||
@keyword declaration_file: The name of the file containing the subsystem declaration. | |||
@type declaration_file: str | |||
@keyword implementation_file: The name of the file containing the subsystem implementation. | |||
@type implementation_file: str or None | |||
@keyword root_path: The root path to the files. | |||
@type root_path: str | |||
@keyword full_path: A flag which if True will cause the full paths to be shown. | |||
@type full_path: bool | |||
@keyword xml: Produce a valid XML representation of the object. | |||
@type xml: bool | |||
""" | """ | ||
# | # Store the data. | ||
self.name = name | |||
self.base_class = base_class | |||
self.staticSubsystemClassId = static_id | |||
self.implementation_file = implementation_file | |||
self.declaration_file = declaration_file | |||
self.root_path = root_path | |||
self.full_path = full_path | |||
self.xml = xml | |||
# | # Data extraction. | ||
self.info_extraction() | |||
def __repr__(self): | |||
"""Overwrite the string representation of the object. | |||
@return: The string representation. | |||
@rtype: str | |||
@return: | |||
@rtype: | |||
""" | """ | ||
# | # The inheritance chain. | ||
inheritance = "" | |||
if self.base_class: | |||
if self.base_class | inheritance += "%s" % self.base_class.name | ||
if self.base_class.base_class: | |||
inheritance += " : %s" % self.base_class.base_class.name | |||
if self.base_class.base_class.base_class: | |||
inheritance += " : %s" % self.base_class.base_class.base_class.name | |||
if self.base_class.base_class.base_class.base_class: | |||
inheritance += " : %s" % self.base_class.base_class.base_class.base_class.name | |||
if self.base_class.base_class.base_class.base_class.base_class: | |||
inheritance += " : %s" % self.base_class.base_class.base_class.base_class.base_class.name | |||
# | # XML representation. | ||
if self.xml: | |||
return self.__repr_xml__(inheritance) | |||
# The subsystem name and inheritance chain. | |||
string = "<%s : %s" % (self.name, inheritance) | |||
# Add the static class ID. | |||
if self.staticSubsystemClassId: | |||
string += " staticSubsystemClassId is \"%s\"" % self.staticSubsystemClassId | |||
# Add the declaration file name. | |||
file = self.declaration_file | |||
if self.full_path: | |||
file = self.root_path + sep + self.declaration_file | |||
string += " declared in \"%s\"" % file | |||
# | # Add the implementation file name. | ||
if | if self.implementation_file: | ||
file = self.implementation_file | |||
if self.full_path: | |||
file = self.root_path + sep + self.implementation_file | |||
string += ", implemented in \"%s\"" % file | |||
# Closure. | |||
string += ">" | |||
# Return the representation. | |||
return string | |||
def __repr_xml__(self, inheritance=""): | |||
"""Create a XML representation of the object. | |||
@keyword inheritance: The string representation of the inheritance chain. | |||
@type inheritance: str | |||
@return: The XML representation. | |||
@rtype: str | |||
""" | |||
# Start. | |||
string = "<%s>\n" % self.name | |||
# The inheritance chain. | |||
string += " <inheritance>%s</inheritance>\n" % inheritance | |||
# Add the static class ID. | |||
if self.staticSubsystemClassId: | |||
string += " <staticSubsystemClassId>%s</staticSubsystemClassId>\n" % self.staticSubsystemClassId | |||
# Add the declaration file name. | |||
file = self.declaration_file | |||
if self.full_path: | |||
file = self.root_path + sep + self.declaration_file | |||
string += " <declaration>%s</declaration>\n" % file | |||
# Add the implementation file name. | |||
if self.implementation_file: | |||
file = self.implementation_file | |||
if self.full_path: | |||
file = self.root_path + sep + self.implementation_file | |||
string += " <implementation>%s</implementation>\n" % file | |||
# End. | |||
string += "</%s>" % self.name | |||
# Return the string. | |||
return string | |||
def add_implementation_file(self, implementation_file=None): | |||
"""Set up the object. | |||
@keyword implementation_file: The path of the file containing the subsystem implementation. | |||
@type implementation_file: str or None | |||
""" | |||
# Store the file. | |||
self.implementation_file = implementation_file | |||
def info_extraction(self): | |||
"""Extract subsystem information from the source files.""" | |||
# No declaration. | |||
if not self.declaration_file: | |||
return | |||
# Open the declaration file. | |||
file = open(self.root_path + sep + self.declaration_file) | |||
lines = file.readlines() | |||
file.close() | |||
# Loop over the file contents. | |||
in_decl = False | |||
for i in range(len(lines)): | |||
# The start of the declaration. | |||
if search("^class %s : " % self.name, lines[i]): | |||
in_decl = True | |||
continue | |||
# Skip the line. | |||
if not in_decl: | |||
continue | |||
# Out of the declaration. | |||
if search("^};", lines[i]): | |||
in_decl = False | |||
continue | |||
# The static subsystem class ID. | |||
if search("static const char\* staticSubsystemClassId()", lines[i]): | |||
id = lines[i].split("return \"")[1] | |||
id = id.split("\"")[0] | |||
self.staticSubsystemClassId = id | |||
< | |||
def is_group(self): | |||
"""Determine this is a subsystem or subsystem group. | |||
@return: True if this is a subsystem group. | |||
< | @rtype: bool | ||
""" | |||
# Chase the base name as far as possible. | |||
</ | if self.name == "SGSubsystemGroup": | ||
< | return True | ||
if self.base_class.name == "SGSubsystemGroup": | |||
return True | |||
if self.base_class.base_class: | |||
< | if self.base_class.base_class.name == "SGSubsystemGroup": | ||
return True | |||
if self.base_class.base_class.base_class: | |||
if self.base_class.base_class.base_class.name == "SGSubsystemGroup": | |||
return True | |||
< | if self.base_class.base_class.base_class.base_class: | ||
if self.base_class.base_class.base_class.base_class.name == "SGSubsystemGroup": | |||
return True | |||
if self.base_class.base_class.base_class.base_class.base_class: | |||
if self.base_class.base_class.base_class.base_class.name.base_class.name == "SGSubsystemGroup": | |||
return True | |||
< | |||
# A normal subsystem. | |||
return False | |||
< | |||
# Instantiate the class if run as a script. | |||
if __name__ == "__main__": | |||
FindSubsystems() | |||
}} | |||
< | |||
=== All subsystems === | |||
The result is: | |||
{{collapsible script | |||
| type = Text output | |||
| title = A listing of all flightgear and simgear subsystems and subsystem groups. | |||
| intro = Output from the Python script for finding all subsystems within the flightgear and simgear C++ code bases. The error output from the script was redirected and hence not shown below. | |||
| lang = c | |||
| script = | |||
Primary subsystems (90): | |||
<AbstractInstrument : SGSubsystem declared in "src/Instrumentation/AbstractInstrument.hxx", implemented in "src/Instrumentation/AbstractInstrument.cxx"> | |||
<AirportDynamicsManager : SGSubsystem staticSubsystemClassId is "airport-dynamics" declared in "src/Airports/airportdynamicsmanager.hxx", implemented in "src/Airports/airportdynamicsmanager.cxx"> | |||
<AirspeedIndicator : SGSubsystem staticSubsystemClassId is "airspeed-indicator" declared in "src/Instrumentation/airspeed_indicator.hxx", implemented in "src/Instrumentation/airspeed_indicator.cxx"> | |||
<Altimeter : SGSubsystem staticSubsystemClassId is "altimeter" declared in "src/Instrumentation/altimeter.hxx", implemented in "src/Instrumentation/altimeter.cxx"> | |||
<AnotherSub : SGSubsystem staticSubsystemClassId is "anothersub" declared in "simgear/structure/subsystem_test.cxx"> | |||
<AreaSampler : SGSubsystem staticSubsystemClassId is "area" declared in "src/Environment/terrainsampler.cxx", implemented in "src/Environment/terrainsampler.cxx"> | |||
<AttitudeIndicator : SGSubsystem staticSubsystemClassId is "attitude-indicator" declared in "src/Instrumentation/attitude_indicator.hxx", implemented in "src/Instrumentation/attitude_indicator.cxx"> | |||
<Clock : SGSubsystem staticSubsystemClassId is "clock" declared in "src/Instrumentation/clock.hxx", implemented in "src/Instrumentation/clock.cxx"> | |||
<Component : SGSubsystem declared in "src/Autopilot/component.hxx", implemented in "src/Autopilot/component.cxx"> | |||
<Ephemeris : SGSubsystem staticSubsystemClassId is "ephemeris" declared in "src/Environment/ephemeris.hxx", implemented in "src/Environment/ephemeris.cxx"> | |||
<FDMShell : SGSubsystem staticSubsystemClassId is "flight" declared in "src/FDM/fdm_shell.hxx", implemented in "src/FDM/fdm_shell.cxx"> | |||
<FGAIManager : SGSubsystem staticSubsystemClassId is "ai-model" declared in "src/AIModel/AIManager.hxx", implemented in "src/AIModel/AIManager.cxx"> | |||
<FGATCManager : SGSubsystem staticSubsystemClassId is "ATC" declared in "src/ATC/atc_mgr.hxx", implemented in "src/ATC/atc_mgr.cxx"> | |||
<FGAircraftModel : SGSubsystem staticSubsystemClassId is "aircraft-model" declared in "src/Model/acmodel.hxx", implemented in "src/Model/acmodel.cxx"> | |||
<FGCom : SGSubsystem staticSubsystemClassId is "fgcom" declared in "src/Network/fgcom.hxx", implemented in "src/Network/fgcom.cxx"> | |||
<FGControls : SGSubsystem staticSubsystemClassId is "controls" declared in "src/Aircraft/controls.hxx", implemented in "src/Aircraft/controls.cxx"> | |||
<FGDNSClient : SGSubsystem staticSubsystemClassId is "dns" declared in "src/Network/DNSClient.hxx", implemented in "src/Network/DNSClient.cxx"> | |||
<FGElectricalSystem : SGSubsystem staticSubsystemClassId is "electrical" declared in "src/Systems/electrical.hxx", implemented in "src/Systems/electrical.cxx"> | |||
<FGEventInput : SGSubsystem declared in "src/Input/FGEventInput.hxx", implemented in "src/Input/FGEventInput.cxx"> | |||
<FGFlightHistory : SGSubsystem staticSubsystemClassId is "history" declared in "src/Aircraft/FlightHistory.hxx", implemented in "src/Aircraft/FlightHistory.cxx"> | |||
<FGHTTPClient : SGSubsystem staticSubsystemClassId is "http" declared in "src/Network/HTTPClient.hxx", implemented in "src/Network/HTTPClient.cxx"> | |||
<FGHttpd : SGSubsystem staticSubsystemClassId is "httpd" declared in "src/Network/http/httpd.hxx"> | |||
<FGIO : SGSubsystem staticSubsystemClassId is "io" declared in "src/Main/fg_io.hxx", implemented in "src/Main/fg_io.cxx"> | |||
<FGInstrumentMgr : SGSubsystem staticSubsystemClassId is "instrumentation" declared in "src/Instrumentation/instrument_mgr.hxx", implemented in "src/Instrumentation/instrument_mgr.cxx"> | |||
<FGInterface : SGSubsystem declared in "src/FDM/flight.hxx", implemented in "src/FDM/flight.cxx"> | |||
<FGJoystickInput : SGSubsystem staticSubsystemClassId is "input-joystick" declared in "src/Input/FGJoystickInput.hxx", implemented in "src/Input/FGJoystickInput.cxx"> | |||
<FGKR_87 : SGSubsystem staticSubsystemClassId is "KR-87" declared in "src/Instrumentation/kr_87.hxx", implemented in "src/Instrumentation/kr_87.cxx"> | |||
<FGKeyboardInput : SGSubsystem staticSubsystemClassId is "input-keyboard" declared in "src/Input/FGKeyboardInput.hxx", implemented in "src/Input/FGKeyboardInput.cxx"> | |||
<FGLight : SGSubsystem staticSubsystemClassId is "lighting" declared in "src/Time/light.hxx", implemented in "src/Time/light.cxx"> | |||
<FGLogger : SGSubsystem staticSubsystemClassId is "logger" declared in "src/Main/logger.hxx", implemented in "src/Main/logger.cxx"> | |||
<FGMagVarManager : SGSubsystem staticSubsystemClassId is "magvar" declared in "src/Environment/magvarmanager.hxx", implemented in "src/Environment/magvarmanager.cxx"> | |||
<FGModelMgr : SGSubsystem staticSubsystemClassId is "model-manager" declared in "src/Model/modelmgr.hxx", implemented in "src/Model/modelmgr.cxx"> | |||
<FGMouseInput : SGSubsystem staticSubsystemClassId is "input-mouse" declared in "src/Input/FGMouseInput.hxx", implemented in "src/Input/FGMouseInput.cxx"> | |||
<FGMultiplayMgr : SGSubsystem staticSubsystemClassId is "mp" declared in "src/MultiPlayer/multiplaymgr.hxx", implemented in "src/MultiPlayer/multiplaymgr.cxx"> | |||
<FGNasalSys : SGSubsystem staticSubsystemClassId is "nasal" declared in "src/Scripting/NasalSys.hxx", implemented in "src/Scripting/NasalSys.cxx"> | |||
<FGPanel : SGSubsystem staticSubsystemClassId is "panel" declared in "utils/fgpanel/FGPanel.hxx", implemented in "utils/fgpanel/FGPanel.cxx"> | |||
<FGPanelProtocol : SGSubsystem staticSubsystemClassId is "panel-protocol" declared in "utils/fgpanel/FGPanelProtocol.hxx", implemented in "utils/fgpanel/FGPanelProtocol.cxx"> | |||
<FGPrecipitationMgr : SGSubsystem staticSubsystemClassId is "precipitation" declared in "src/Environment/precipitation_mgr.hxx", implemented in "src/Environment/precipitation_mgr.cxx"> | |||
<FGProperties : SGSubsystem staticSubsystemClassId is "properties" declared in "src/Main/fg_props.hxx", implemented in "src/Main/fg_props.cxx"> | |||
<FGReplay : SGSubsystem staticSubsystemClassId is "replay" declared in "src/Aircraft/replay.hxx", implemented in "src/Aircraft/replay.cxx"> | |||
<FGRidgeLift : SGSubsystem staticSubsystemClassId is "ridgelift" declared in "src/Environment/ridge_lift.hxx", implemented in "src/Environment/ridge_lift.cxx"> | |||
<FGRouteMgr : SGSubsystem staticSubsystemClassId is "route-manager" declared in "src/Autopilot/route_mgr.hxx", implemented in "src/Autopilot/route_mgr.cxx"> | |||
<FGScenery : SGSubsystem staticSubsystemClassId is "scenery" declared in "src/Scenery/scenery.hxx", implemented in "src/Scenery/scenery.cxx"> | |||
<FGSoundManager : SGSubsystem staticSubsystemClassId is "sound" declared in "src/Sound/soundmanager.hxx", implemented in "src/Sound/soundmanager.cxx"> | |||
<FGSubmodelMgr : SGSubsystem staticSubsystemClassId is "submodel-mgr" declared in "src/AIModel/submodel.hxx", implemented in "src/AIModel/submodel.cxx"> | |||
<FGSubsystemExample : SGSubsystem declared in "docs-mini/README.introduction"> | |||
<FGTrafficManager : SGSubsystem staticSubsystemClassId is "traffic-manager" declared in "src/Traffic/TrafficMgr.hxx", implemented in "src/Traffic/TrafficMgr.cxx"> | |||
<FGViewMgr : SGSubsystem staticSubsystemClassId is "view-manager" declared in "src/Viewer/viewmgr.hxx", implemented in "src/Viewer/viewmgr.cxx"> | |||
<FGVoiceMgr : SGSubsystem staticSubsystemClassId is "voice" declared in "src/Sound/voice.hxx", implemented in "src/Sound/voice.cxx"> | |||
<FakeRadioSub : SGSubsystem staticSubsystemClassId is "fake-radio" declared in "simgear/structure/subsystem_test.cxx"> | |||
<GPS : SGSubsystem staticSubsystemClassId is "gps" declared in "src/Instrumentation/gps.hxx", implemented in "src/Instrumentation/gps.cxx"> | |||
<GSDI : SGSubsystem staticSubsystemClassId is "gsdi" declared in "src/Instrumentation/gsdi.hxx", implemented in "src/Instrumentation/gsdi.cxx"> | |||
<GUIMgr : SGSubsystem staticSubsystemClassId is "CanvasGUI" declared in "src/Canvas/gui_mgr.hxx", implemented in "src/Canvas/gui_mgr.cxx"> | |||
<GroundRadar : SGSubsystem staticSubsystemClassId is "groundradar" declared in "src/Cockpit/groundradar.hxx", implemented in "src/Cockpit/groundradar.cxx"> | |||
<HUD : SGSubsystem staticSubsystemClassId is "hud" declared in "src/Instrumentation/HUD/HUD.hxx", implemented in "src/Instrumentation/HUD/HUD.cxx"> | |||
<HeadingIndicator : SGSubsystem staticSubsystemClassId is "heading-indicator" declared in "src/Instrumentation/heading_indicator.hxx", implemented in "src/Instrumentation/heading_indicator.cxx"> | |||
<HeadingIndicatorDG : SGSubsystem staticSubsystemClassId is "heading-indicator-dg" declared in "src/Instrumentation/heading_indicator_dg.hxx", implemented in "src/Instrumentation/heading_indicator_dg.cxx"> | |||
<HeadingIndicatorFG : SGSubsystem staticSubsystemClassId is "heading-indicator-fg" declared in "src/Instrumentation/heading_indicator_fg.hxx", implemented in "src/Instrumentation/heading_indicator_fg.cxx"> | |||
<InstVerticalSpeedIndicator : SGSubsystem staticSubsystemClassId is "inst-vertical-speed-indicator" declared in "src/Instrumentation/inst_vertical_speed_indicator.hxx", implemented in "src/Instrumentation/inst_vertical_speed_indicator.cxx"> | |||
<LayerInterpolateController : SGSubsystem declared in "src/Environment/environment_ctrl.hxx"> | |||
<MK_VIII : SGSubsystem staticSubsystemClassId is "mk-viii" declared in "src/Instrumentation/mk_viii.hxx", implemented in "src/Instrumentation/mk_viii.cxx"> | |||
<MagCompass : SGSubsystem staticSubsystemClassId is "magnetic-compass" declared in "src/Instrumentation/mag_compass.hxx", implemented in "src/Instrumentation/mag_compass.cxx"> | |||
<MasterReferenceGyro : SGSubsystem staticSubsystemClassId is "master-reference-gyro" declared in "src/Instrumentation/mrg.hxx", implemented in "src/Instrumentation/mrg.cxx"> | |||
<MySub1 : SGSubsystem staticSubsystemClassId is "mysub" declared in "simgear/structure/subsystem_test.cxx"> | |||
<NavDisplay : SGSubsystem staticSubsystemClassId is "navigation-display" declared in "src/Cockpit/NavDisplay.hxx", implemented in "src/Cockpit/NavDisplay.cxx"> | |||
<NavRadio : SGSubsystem staticSubsystemClassId is "nav-radio" declared in "src/Instrumentation/newnavradio.hxx", implemented in "src/Instrumentation/newnavradio.cxx"> | |||
<NewGUI : SGSubsystem staticSubsystemClassId is "gui" declared in "src/GUI/new_gui.hxx", implemented in "src/GUI/new_gui.cxx"> | |||
<PerformanceDB : SGSubsystem staticSubsystemClassId is "aircraft-performance-db" declared in "src/AIModel/performancedb.hxx", implemented in "src/AIModel/performancedb.cxx"> | |||
<PitotSystem : SGSubsystem staticSubsystemClassId is "pitot" declared in "src/Systems/pitot.hxx", implemented in "src/Systems/pitot.cxx"> | |||
<PropertyBasedMgr : SGSubsystem declared in "simgear/props/PropertyBasedMgr.hxx", implemented in "simgear/props/PropertyBasedMgr.cxx"> | |||
<PropertyInterpolationMgr : SGSubsystem declared in "simgear/props/PropertyInterpolationMgr.hxx", implemented in "simgear/props/PropertyInterpolationMgr.cxx"> | |||
<RadarAltimeter : SGSubsystem staticSubsystemClassId is "radar-altimeter" declared in "src/Instrumentation/rad_alt.hxx", implemented in "src/Instrumentation/rad_alt.cxx"> | |||
<RealWxController : SGSubsystem declared in "src/Environment/realwx_ctrl.hxx", implemented in "src/Environment/realwx_ctrl.cxx"> | |||
<SGEventMgr : SGSubsystem staticSubsystemClassId is "events" declared in "simgear/structure/event_mgr.hxx", implemented in "simgear/structure/event_mgr.cxx"> | |||
<SGInterpolator : SGSubsystem staticSubsystemClassId is "interpolator" declared in "simgear/misc/interpolator.hxx", implemented in "simgear/misc/interpolator.cxx"> | |||
<SGPerformanceMonitor : SGSubsystem staticSubsystemClassId is "performance-mon" declared in "simgear/structure/SGPerfMon.hxx", implemented in "simgear/structure/SGPerfMon.cxx"> | |||
<SGSoundMgr : SGSubsystem staticSubsystemClassId is "sound" declared in "simgear/sound/soundmgr.hxx"> | |||
<SGSubsystemMgr : SGSubsystem staticSubsystemClassId is "subsystem-mgr" declared in "simgear/structure/subsystem_mgr.hxx", implemented in "simgear/structure/subsystem_mgr.cxx"> | |||
<SGTerraSync : SGSubsystem staticSubsystemClassId is "terrasync" declared in "simgear/scene/tsync/terrasync.hxx", implemented in "simgear/scene/tsync/terrasync.cxx"> | |||
<SlipSkidBall : SGSubsystem staticSubsystemClassId is "slip-skid-ball" declared in "src/Instrumentation/slip_skid_ball.hxx", implemented in "src/Instrumentation/slip_skid_ball.cxx"> | |||
<StaticSystem : SGSubsystem staticSubsystemClassId is "static" declared in "src/Systems/static.hxx", implemented in "src/Systems/static.cxx"> | |||
<SwiftConnection : SGSubsystem staticSubsystemClassId is "swift" declared in "src/Network/Swift/swift_connection.hxx", implemented in "src/Network/Swift/swift_connection.cxx"> | |||
<TACAN : SGSubsystem staticSubsystemClassId is "tacan" declared in "src/Instrumentation/tacan.hxx", implemented in "src/Instrumentation/tacan.cxx"> | |||
<TCAS : SGSubsystem staticSubsystemClassId is "tcas" declared in "src/Instrumentation/tcas.hxx", implemented in "src/Instrumentation/tcas.cxx"> | |||
<TimeManager : SGSubsystem staticSubsystemClassId is "time" declared in "src/Time/TimeManager.hxx", implemented in "src/Time/TimeManager.cxx"> | |||
<TurnIndicator : SGSubsystem staticSubsystemClassId is "turn-indicator" declared in "src/Instrumentation/turn_indicator.hxx", implemented in "src/Instrumentation/turn_indicator.cxx"> | |||
<VacuumSystem : SGSubsystem staticSubsystemClassId is "vacuum" declared in "src/Systems/vacuum.hxx", implemented in "src/Systems/vacuum.cxx"> | |||
<VerticalSpeedIndicator : SGSubsystem staticSubsystemClassId is "vertical-speed-indicator" declared in "src/Instrumentation/vertical_speed_indicator.hxx", implemented in "src/Instrumentation/vertical_speed_indicator.cxx"> | |||
<View : SGSubsystem staticSubsystemClassId is "view" declared in "src/Viewer/view.hxx", implemented in "src/Viewer/view.cxx"> | |||
<wxRadarBg : SGSubsystem staticSubsystemClassId is "radar" declared in "src/Cockpit/wxradar.hxx", implemented in "src/Cockpit/wxradar.cxx"> | |||
Primary groups (8): | |||
<Autopilot : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "autopilot" declared in "src/Autopilot/autopilot.hxx", implemented in "src/Autopilot/autopilot.cxx"> | |||
<CockpitDisplayManager : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "cockpit-displays" declared in "src/Cockpit/cockpitDisplayManager.hxx", implemented in "src/Cockpit/cockpitDisplayManager.cxx"> | |||
<FGEnvironmentMgr : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "environment" declared in "src/Environment/environment_mgr.hxx", implemented in "src/Environment/environment_mgr.cxx"> | |||
<FGInput : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "input" declared in "src/Input/input.hxx", implemented in "src/Input/input.cxx"> | |||
<FGSystemMgr : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "systems" declared in "src/Systems/system_mgr.hxx", implemented in "src/Systems/system_mgr.cxx"> | |||
<FGXMLAutopilotGroup : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "xml-rules" declared in "src/Autopilot/autopilotgroup.hxx", implemented in "src/Autopilot/autopilotgroup.cxx"> | |||
<InstrumentGroup : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "instruments" declared in "simgear/structure/subsystem_test.cxx"> | |||
<TerrainSampler : SGSubsystemGroup : SGSubsystem declared in "src/Environment/terrainsampler.hxx"> | |||
Secondary subsystems (32): | |||
<ADF : AbstractInstrument : SGSubsystem staticSubsystemClassId is "adf" declared in "src/Instrumentation/adf.hxx", implemented in "src/Instrumentation/adf.cxx"> | |||
<AnalogComponent : Component : SGSubsystem declared in "src/Autopilot/analogcomponent.hxx", implemented in "src/Autopilot/analogcomponent.cxx"> | |||
<BasicRealWxController : RealWxController : SGSubsystem declared in "src/Environment/realwx_ctrl.cxx", implemented in "src/Environment/realwx_ctrl.cxx"> | |||
<CanvasMgr : PropertyBasedMgr : SGSubsystem declared in "simgear/canvas/CanvasMgr.hxx", implemented in "simgear/canvas/CanvasMgr.cxx"> | |||
<CommRadio : AbstractInstrument : SGSubsystem staticSubsystemClassId is "comm-radio" declared in "src/Instrumentation/commradio.hxx", implemented in "src/Instrumentation/commradio.cxx"> | |||
<DME : AbstractInstrument : SGSubsystem staticSubsystemClassId is "dme" declared in "src/Instrumentation/dme.hxx", implemented in "src/Instrumentation/dme.cxx"> | |||
<DigitalComponent : Component : SGSubsystem declared in "src/Autopilot/digitalcomponent.hxx", implemented in "src/Autopilot/digitalcomponent.cxx"> | |||
<FGACMS : FGInterface : SGSubsystem staticSubsystemClassId is "acms" declared in "src/FDM/SP/ACMS.hxx", implemented in "src/FDM/SP/ACMS.cxx"> | |||
<FGADA : FGInterface : SGSubsystem staticSubsystemClassId is "ada" declared in "src/FDM/SP/ADA.hxx", implemented in "src/FDM/SP/ADA.cxx"> | |||
<FGAISim : FGInterface : SGSubsystem staticSubsystemClassId is "aisim" declared in "src/FDM/SP/AISim.hpp", implemented in "src/FDM/SP/AISim.cpp"> | |||
<FGBalloonSim : FGInterface : SGSubsystem staticSubsystemClassId is "balloon" declared in "src/FDM/SP/Balloon.h", implemented in "src/FDM/SP/Balloon.cxx"> | |||
<FGExternalNet : FGInterface : SGSubsystem staticSubsystemClassId is "network" declared in "src/FDM/ExternalNet/ExternalNet.hxx", implemented in "src/FDM/ExternalNet/ExternalNet.cxx"> | |||
<FGExternalPipe : FGInterface : SGSubsystem staticSubsystemClassId is "pipe" declared in "src/FDM/ExternalPipe/ExternalPipe.hxx", implemented in "src/FDM/ExternalPipe/ExternalPipe.cxx"> | |||
<FGHIDEventInput : FGEventInput : SGSubsystem staticSubsystemClassId is "input-event-hid" declared in "src/Input/FGHIDEventInput.hxx", implemented in "src/Input/FGHIDEventInput.cxx"> | |||
<FGInterpolator : PropertyInterpolationMgr : SGSubsystem staticSubsystemClassId is "prop-interpolator" declared in "src/Main/FGInterpolator.hxx", implemented in "src/Main/FGInterpolator.cxx"> | |||
<FGJSBsim : FGInterface : SGSubsystem staticSubsystemClassId is "jsb" declared in "src/FDM/JSBSim/JSBSim.hxx", implemented in "src/FDM/JSBSim/JSBSim.cxx"> | |||
<FGLaRCsim : FGInterface : SGSubsystem staticSubsystemClassId is "larcsim" declared in "src/FDM/LaRCsim/LaRCsim.hxx", implemented in "src/FDM/LaRCsim/LaRCsim.cxx"> | |||
<FGLinuxEventInput : FGEventInput : SGSubsystem staticSubsystemClassId is "input-event" declared in "src/Input/FGLinuxEventInput.hxx", implemented in "src/Input/FGLinuxEventInput.cxx"> | |||
<FGMacOSXEventInput : FGEventInput : SGSubsystem staticSubsystemClassId is "input-event" declared in "src/Input/FGMacOSXEventInput.hxx", implemented in "src/Input/FGMacOSXEventInput.cxx"> | |||
<FGMagicCarpet : FGInterface : SGSubsystem staticSubsystemClassId is "magic" declared in "src/FDM/SP/MagicCarpet.hxx", implemented in "src/FDM/SP/MagicCarpet.cxx"> | |||
<FGMarkerBeacon : AbstractInstrument : SGSubsystem staticSubsystemClassId is "marker-beacon" declared in "src/Instrumentation/marker_beacon.hxx", implemented in "src/Instrumentation/marker_beacon.cxx"> | |||
<FGNavRadio : AbstractInstrument : SGSubsystem staticSubsystemClassId is "old-navradio" declared in "src/Instrumentation/navradio.hxx", implemented in "src/Instrumentation/navradio.cxx"> | |||
<FGNullFDM : FGInterface : SGSubsystem staticSubsystemClassId is "null" declared in "src/FDM/NullFDM.hxx", implemented in "src/FDM/NullFDM.cxx"> | |||
<FGReadablePanel : FGPanel : SGSubsystem staticSubsystemClassId is "readable-panel" declared in "utils/fgpanel/panel_io.hxx", implemented in "utils/fgpanel/panel_io.cxx"> | |||
<FGSoundManager : SGSoundMgr : SGSubsystem staticSubsystemClassId is "sound" declared in "src/Sound/soundmanager.hxx", implemented in "src/Sound/soundmanager.cxx"> | |||
<FGUFO : FGInterface : SGSubsystem staticSubsystemClassId is "ufo" declared in "src/FDM/UFO.hxx", implemented in "src/FDM/UFO.cxx"> | |||
<LayerInterpolateControllerImplementation : LayerInterpolateController : SGSubsystem staticSubsystemClassId is "layer-interpolate-controller" declared in "src/Environment/environment_ctrl.cxx", implemented in "src/Environment/environment_ctrl.cxx"> | |||
<MongooseHttpd : FGHttpd : SGSubsystem staticSubsystemClassId is "mongoose-httpd" declared in "src/Network/http/httpd.cxx", implemented in "src/Network/http/httpd.cxx"> | |||
<StateMachineComponent : Component : SGSubsystem staticSubsystemClassId is "state-machine" declared in "src/Autopilot/autopilot.cxx"> | |||
<Transponder : AbstractInstrument : SGSubsystem staticSubsystemClassId is "transponder" declared in "src/Instrumentation/transponder.hxx", implemented in "src/Instrumentation/transponder.cxx"> | |||
<YASim : FGInterface : SGSubsystem staticSubsystemClassId is "yasim" declared in "src/FDM/YASim/YASim.hxx", implemented in "src/FDM/YASim/YASim.cxx"> | |||
<agRadar : wxRadarBg : SGSubsystem staticSubsystemClassId is "air-ground-radar" declared in "src/Cockpit/agradar.hxx", implemented in "src/Cockpit/agradar.cxx"> | |||
Secondary groups (2): | |||
<FGXMLAutopilotGroupImplementation : FGXMLAutopilotGroup : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "xml-autopilot-group" declared in "src/Autopilot/autopilotgroup.cxx", implemented in "src/Autopilot/autopilotgroup.cxx"> | |||
<TerrainSamplerImplementation : TerrainSampler : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "terrain-sampler" declared in "src/Environment/terrainsampler.cxx", implemented in "src/Environment/terrainsampler.cxx"> | |||
Tertiary subsystems (7): | |||
<CanvasMgr : CanvasMgr : PropertyBasedMgr : SGSubsystem staticSubsystemClassId is "Canvas" declared in "src/Canvas/canvas_mgr.hxx", implemented in "src/Canvas/canvas_mgr.cxx"> | |||
<DigitalFilter : AnalogComponent : Component : SGSubsystem staticSubsystemClassId is "filter" declared in "src/Autopilot/digitalfilter.hxx", implemented in "src/Autopilot/digitalfilter.cxx"> | |||
<Logic : DigitalComponent : Component : SGSubsystem staticSubsystemClassId is "logic" declared in "src/Autopilot/logic.hxx", implemented in "src/Autopilot/logic.cxx"> | |||
<NoaaMetarRealWxController : BasicRealWxController : RealWxController : SGSubsystem staticSubsystemClassId is "noaa-metar-real-wx-controller" declared in "src/Environment/realwx_ctrl.cxx", implemented in "src/Environment/realwx_ctrl.cxx"> | |||
<PIDController : AnalogComponent : Component : SGSubsystem staticSubsystemClassId is "pid-controller" declared in "src/Autopilot/pidcontroller.hxx", implemented in "src/Autopilot/pidcontroller.cxx"> | |||
<PISimpleController : AnalogComponent : Component : SGSubsystem staticSubsystemClassId is "pi-simple-controller" declared in "src/Autopilot/pisimplecontroller.hxx", implemented in "src/Autopilot/pisimplecontroller.cxx"> | |||
<Predictor : AnalogComponent : Component : SGSubsystem staticSubsystemClassId is "predict-simple" declared in "src/Autopilot/predictor.hxx", implemented in "src/Autopilot/predictor.cxx"> | |||
Quaternary subsystems (1): | |||
<FlipFlop : Logic : DigitalComponent : Component : SGSubsystem staticSubsystemClassId is "flipflop" declared in "src/Autopilot/flipflop.hxx", implemented in "src/Autopilot/flipflop.cxx"> | |||
Counts: 130 subsystem classes (118 flightgear, 12 simgear). | |||
Counts: 10 subsystem groups (9 flightgear, 1 simgear). | |||
Counts: 140 subsystem classes and groups (127 flightgear, 13 simgear). | |||
}} | |||
{{collapsible script | |||
| type = XML output | |||
| title = A listing of all flightgear and simgear subsystems and subsystem groups. | |||
| intro = XML output from the Python script for finding all subsystems within the flightgear and simgear C++ code bases. The error output from the script was redirected and hence not shown below. | |||
| lang = xml | |||
| script = | |||
<?xml version="1.0"?> | |||
<subsystems> | |||
<primary_subsystems count="90"> | |||
<AbstractInstrument> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <declaration>src/Instrumentation/AbstractInstrument.hxx</declaration> | ||
<implementation>src/ | <implementation>src/Instrumentation/AbstractInstrument.cxx</implementation> | ||
</ | </AbstractInstrument> | ||
< | <AirportDynamicsManager> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>airport-dynamics</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Airports/airportdynamicsmanager.hxx</declaration> | ||
</ | <implementation>src/Airports/airportdynamicsmanager.cxx</implementation> | ||
< | </AirportDynamicsManager> | ||
<AirspeedIndicator> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>airspeed-indicator</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/airspeed_indicator.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/airspeed_indicator.cxx</implementation> | ||
< | </AirspeedIndicator> | ||
<Altimeter> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>altimeter</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/altimeter.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/altimeter.cxx</implementation> | ||
< | </Altimeter> | ||
<AnotherSub> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>anothersub</staticSubsystemClassId> | ||
< | <declaration>simgear/structure/subsystem_test.cxx</declaration> | ||
</ | </AnotherSub> | ||
< | <AreaSampler> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>area</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Environment/terrainsampler.cxx</declaration> | ||
</ | <implementation>src/Environment/terrainsampler.cxx</implementation> | ||
< | </AreaSampler> | ||
<AttitudeIndicator> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>attitude-indicator</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/attitude_indicator.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/attitude_indicator.cxx</implementation> | ||
< | </AttitudeIndicator> | ||
<Clock> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>clock</staticSubsystemClassId> | ||
</ | <declaration>src/Instrumentation/clock.hxx</declaration> | ||
< | <implementation>src/Instrumentation/clock.cxx</implementation> | ||
</Clock> | |||
<Component> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <declaration>src/Autopilot/component.hxx</declaration> | ||
<implementation>src/ | <implementation>src/Autopilot/component.cxx</implementation> | ||
</ | </Component> | ||
< | <Ephemeris> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>ephemeris</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Environment/ephemeris.hxx</declaration> | ||
</ | <implementation>src/Environment/ephemeris.cxx</implementation> | ||
< | </Ephemeris> | ||
<FDMShell> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>flight</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/FDM/fdm_shell.hxx</declaration> | ||
</ | <implementation>src/FDM/fdm_shell.cxx</implementation> | ||
< | </FDMShell> | ||
<FGAIManager> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>ai-model</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/AIModel/AIManager.hxx</declaration> | ||
</ | <implementation>src/AIModel/AIManager.cxx</implementation> | ||
< | </FGAIManager> | ||
<FGATCManager> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>ATC</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/ATC/atc_mgr.hxx</declaration> | ||
</ | <implementation>src/ATC/atc_mgr.cxx</implementation> | ||
< | </FGATCManager> | ||
<FGAircraftModel> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>aircraft-model</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Model/acmodel.hxx</declaration> | ||
</ | <implementation>src/Model/acmodel.cxx</implementation> | ||
< | </FGAircraftModel> | ||
<FGCom> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>fgcom</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Network/fgcom.hxx</declaration> | ||
</ | <implementation>src/Network/fgcom.cxx</implementation> | ||
< | </FGCom> | ||
<FGControls> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>controls</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Aircraft/controls.hxx</declaration> | ||
</ | <implementation>src/Aircraft/controls.cxx</implementation> | ||
< | </FGControls> | ||
<FGDNSClient> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>dns</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Network/DNSClient.hxx</declaration> | ||
</ | <implementation>src/Network/DNSClient.cxx</implementation> | ||
< | </FGDNSClient> | ||
<FGElectricalSystem> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>electrical</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Systems/electrical.hxx</declaration> | ||
</ | <implementation>src/Systems/electrical.cxx</implementation> | ||
< | </FGElectricalSystem> | ||
<FGEventInput> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/Input/ | <declaration>src/Input/FGEventInput.hxx</declaration> | ||
<implementation>src/Input/ | <implementation>src/Input/FGEventInput.cxx</implementation> | ||
</ | </FGEventInput> | ||
< | <FGFlightHistory> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>history</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Aircraft/FlightHistory.hxx</declaration> | ||
</ | <implementation>src/Aircraft/FlightHistory.cxx</implementation> | ||
< | </FGFlightHistory> | ||
<FGHTTPClient> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>http</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Network/HTTPClient.hxx</declaration> | ||
</ | <implementation>src/Network/HTTPClient.cxx</implementation> | ||
< | </FGHTTPClient> | ||
<FGHttpd> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>httpd</staticSubsystemClassId> | ||
< | <declaration>src/Network/http/httpd.hxx</declaration> | ||
</ | </FGHttpd> | ||
< | <FGIO> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>io</staticSubsystemClassId> | ||
<implementation> | <declaration>src/Main/fg_io.hxx</declaration> | ||
</ | <implementation>src/Main/fg_io.cxx</implementation> | ||
< | </FGIO> | ||
<FGInstrumentMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>instrumentation</staticSubsystemClassId> | ||
<implementation> | <declaration>src/Instrumentation/instrument_mgr.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/instrument_mgr.cxx</implementation> | ||
< | </FGInstrumentMgr> | ||
<FGInterface> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <declaration>src/FDM/flight.hxx</declaration> | ||
<implementation>src/ | <implementation>src/FDM/flight.cxx</implementation> | ||
</ | </FGInterface> | ||
< | <FGJoystickInput> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>input-joystick</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Input/FGJoystickInput.hxx</declaration> | ||
</ | <implementation>src/Input/FGJoystickInput.cxx</implementation> | ||
< | </FGJoystickInput> | ||
<FGKR_87> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>KR-87</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/kr_87.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/kr_87.cxx</implementation> | ||
< | </FGKR_87> | ||
<FGKeyboardInput> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>input-keyboard</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Input/FGKeyboardInput.hxx</declaration> | ||
</ | <implementation>src/Input/FGKeyboardInput.cxx</implementation> | ||
< | </FGKeyboardInput> | ||
<FGLight> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>lighting</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Time/light.hxx</declaration> | ||
</ | <implementation>src/Time/light.cxx</implementation> | ||
< | </FGLight> | ||
<FGLogger> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>logger</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Main/logger.hxx</declaration> | ||
</ | <implementation>src/Main/logger.cxx</implementation> | ||
< | </FGLogger> | ||
<FGMagVarManager> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>magvar</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Environment/magvarmanager.hxx</declaration> | ||
</ | <implementation>src/Environment/magvarmanager.cxx</implementation> | ||
< | </FGMagVarManager> | ||
<FGModelMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>model-manager</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Model/modelmgr.hxx</declaration> | ||
</ | <implementation>src/Model/modelmgr.cxx</implementation> | ||
< | </FGModelMgr> | ||
<FGMouseInput> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>input-mouse</staticSubsystemClassId> | ||
<implementation> | <declaration>src/Input/FGMouseInput.hxx</declaration> | ||
</ | <implementation>src/Input/FGMouseInput.cxx</implementation> | ||
< | </FGMouseInput> | ||
<FGMultiplayMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>mp</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/MultiPlayer/multiplaymgr.hxx</declaration> | ||
</ | <implementation>src/MultiPlayer/multiplaymgr.cxx</implementation> | ||
< | </FGMultiplayMgr> | ||
<FGNasalSys> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>nasal</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Scripting/NasalSys.hxx</declaration> | ||
</ | <implementation>src/Scripting/NasalSys.cxx</implementation> | ||
< | </FGNasalSys> | ||
<FGPanel> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>panel</staticSubsystemClassId> | ||
<implementation> | <declaration>utils/fgpanel/FGPanel.hxx</declaration> | ||
</ | <implementation>utils/fgpanel/FGPanel.cxx</implementation> | ||
< | </FGPanel> | ||
<FGPanelProtocol> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>panel-protocol</staticSubsystemClassId> | ||
<implementation> | <declaration>utils/fgpanel/FGPanelProtocol.hxx</declaration> | ||
</ | <implementation>utils/fgpanel/FGPanelProtocol.cxx</implementation> | ||
< | </FGPanelProtocol> | ||
<FGPrecipitationMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>precipitation</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Environment/precipitation_mgr.hxx</declaration> | ||
</ | <implementation>src/Environment/precipitation_mgr.cxx</implementation> | ||
< | </FGPrecipitationMgr> | ||
<FGProperties> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>properties</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Main/fg_props.hxx</declaration> | ||
</ | <implementation>src/Main/fg_props.cxx</implementation> | ||
< | </FGProperties> | ||
<FGReplay> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>replay</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Aircraft/replay.hxx</declaration> | ||
</ | <implementation>src/Aircraft/replay.cxx</implementation> | ||
< | </FGReplay> | ||
<FGRidgeLift> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>ridgelift</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Environment/ridge_lift.hxx</declaration> | ||
</ | <implementation>src/Environment/ridge_lift.cxx</implementation> | ||
< | </FGRidgeLift> | ||
<FGRouteMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>route-manager</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Autopilot/route_mgr.hxx</declaration> | ||
</ | <implementation>src/Autopilot/route_mgr.cxx</implementation> | ||
< | </FGRouteMgr> | ||
<FGScenery> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>scenery</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Scenery/scenery.hxx</declaration> | ||
</ | <implementation>src/Scenery/scenery.cxx</implementation> | ||
< | </FGScenery> | ||
<FGSoundManager> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>sound</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Sound/soundmanager.hxx</declaration> | ||
</ | <implementation>src/Sound/soundmanager.cxx</implementation> | ||
< | </FGSoundManager> | ||
<FGSubmodelMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>submodel-mgr</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/AIModel/submodel.hxx</declaration> | ||
</ | <implementation>src/AIModel/submodel.cxx</implementation> | ||
< | </FGSubmodelMgr> | ||
<FGSubsystemExample> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <declaration>docs-mini/README.introduction</declaration> | ||
</ | </FGSubsystemExample> | ||
< | <FGTrafficManager> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>traffic-manager</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Traffic/TrafficMgr.hxx</declaration> | ||
</ | <implementation>src/Traffic/TrafficMgr.cxx</implementation> | ||
< | </FGTrafficManager> | ||
<FGViewMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>view-manager</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Viewer/viewmgr.hxx</declaration> | ||
</ | <implementation>src/Viewer/viewmgr.cxx</implementation> | ||
< | </FGViewMgr> | ||
<FGVoiceMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>voice</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Sound/voice.hxx</declaration> | ||
</ | <implementation>src/Sound/voice.cxx</implementation> | ||
< | </FGVoiceMgr> | ||
<FakeRadioSub> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>fake-radio</staticSubsystemClassId> | ||
< | <declaration>simgear/structure/subsystem_test.cxx</declaration> | ||
</ | </FakeRadioSub> | ||
< | <GPS> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/Instrumentation/ | <staticSubsystemClassId>gps</staticSubsystemClassId> | ||
</ | <declaration>src/Instrumentation/gps.hxx</declaration> | ||
< | <implementation>src/Instrumentation/gps.cxx</implementation> | ||
</GPS> | |||
<GSDI> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>gsdi</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/gsdi.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/gsdi.cxx</implementation> | ||
< | </GSDI> | ||
<GUIMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>CanvasGUI</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Canvas/gui_mgr.hxx</declaration> | ||
</ | <implementation>src/Canvas/gui_mgr.cxx</implementation> | ||
< | </GUIMgr> | ||
<GroundRadar> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>groundradar</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Cockpit/groundradar.hxx</declaration> | ||
</ | <implementation>src/Cockpit/groundradar.cxx</implementation> | ||
< | </GroundRadar> | ||
<HUD> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>hud</staticSubsystemClassId> | ||
<implementation> | <declaration>src/Instrumentation/HUD/HUD.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/HUD/HUD.cxx</implementation> | ||
< | </HUD> | ||
<HeadingIndicator> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>heading-indicator</staticSubsystemClassId> | ||
<implementation> | <declaration>src/Instrumentation/heading_indicator.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/heading_indicator.cxx</implementation> | ||
< | </HeadingIndicator> | ||
<HeadingIndicatorDG> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/Instrumentation/ | <staticSubsystemClassId>heading-indicator-dg</staticSubsystemClassId> | ||
<implementation>src/Instrumentation/ | <declaration>src/Instrumentation/heading_indicator_dg.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/heading_indicator_dg.cxx</implementation> | ||
< | </HeadingIndicatorDG> | ||
<HeadingIndicatorFG> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>heading-indicator-fg</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/heading_indicator_fg.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/heading_indicator_fg.cxx</implementation> | ||
< | </HeadingIndicatorFG> | ||
<InstVerticalSpeedIndicator> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>inst-vertical-speed-indicator</staticSubsystemClassId> | ||
<implementation> | <declaration>src/Instrumentation/inst_vertical_speed_indicator.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/inst_vertical_speed_indicator.cxx</implementation> | ||
< | </InstVerticalSpeedIndicator> | ||
<LayerInterpolateController> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <declaration>src/Environment/environment_ctrl.hxx</declaration> | ||
</LayerInterpolateController> | |||
</ | <MK_VIII> | ||
< | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>mk-viii</staticSubsystemClassId> | ||
<implementation> | <declaration>src/Instrumentation/mk_viii.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/mk_viii.cxx</implementation> | ||
< | </MK_VIII> | ||
<MagCompass> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>magnetic-compass</staticSubsystemClassId> | ||
</ | <declaration>src/Instrumentation/mag_compass.hxx</declaration> | ||
< | <implementation>src/Instrumentation/mag_compass.cxx</implementation> | ||
</MagCompass> | |||
<MasterReferenceGyro> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>master-reference-gyro</staticSubsystemClassId> | ||
<implementation> | <declaration>src/Instrumentation/mrg.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/mrg.cxx</implementation> | ||
< | </MasterReferenceGyro> | ||
<MySub1> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>mysub</staticSubsystemClassId> | ||
< | <declaration>simgear/structure/subsystem_test.cxx</declaration> | ||
</ | </MySub1> | ||
< | <NavDisplay> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>navigation-display</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Cockpit/NavDisplay.hxx</declaration> | ||
</ | <implementation>src/Cockpit/NavDisplay.cxx</implementation> | ||
< | </NavDisplay> | ||
<NavRadio> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>nav-radio</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/newnavradio.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/newnavradio.cxx</implementation> | ||
< | </NavRadio> | ||
<NewGUI> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>gui</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/GUI/new_gui.hxx</declaration> | ||
</ | <implementation>src/GUI/new_gui.cxx</implementation> | ||
< | </NewGUI> | ||
<PerformanceDB> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>aircraft-performance-db</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/AIModel/performancedb.hxx</declaration> | ||
</ | <implementation>src/AIModel/performancedb.cxx</implementation> | ||
< | </PerformanceDB> | ||
<PitotSystem> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>pitot</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Systems/pitot.hxx</declaration> | ||
</ | <implementation>src/Systems/pitot.cxx</implementation> | ||
< | </PitotSystem> | ||
<PropertyBasedMgr> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <declaration>simgear/props/PropertyBasedMgr.hxx</declaration> | ||
<implementation> | <implementation>simgear/props/PropertyBasedMgr.cxx</implementation> | ||
</ | </PropertyBasedMgr> | ||
< | <PropertyInterpolationMgr> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <declaration>simgear/props/PropertyInterpolationMgr.hxx</declaration> | ||
<implementation> | <implementation>simgear/props/PropertyInterpolationMgr.cxx</implementation> | ||
</ | </PropertyInterpolationMgr> | ||
< | <RadarAltimeter> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>radar-altimeter</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/rad_alt.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/rad_alt.cxx</implementation> | ||
< | </RadarAltimeter> | ||
<RealWxController> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration>src/ | <declaration>src/Environment/realwx_ctrl.hxx</declaration> | ||
<implementation>src/ | <implementation>src/Environment/realwx_ctrl.cxx</implementation> | ||
</ | </RealWxController> | ||
< | <SGEventMgr> | ||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>events</staticSubsystemClassId> | ||
<implementation> | <declaration>simgear/structure/event_mgr.hxx</declaration> | ||
</ | <implementation>simgear/structure/event_mgr.cxx</implementation> | ||
< | </SGEventMgr> | ||
<SGInterpolator> | |||
<inheritance>SGSubsystem</inheritance> | <inheritance>SGSubsystem</inheritance> | ||
<declaration> | <staticSubsystemClassId>interpolator</staticSubsystemClassId> | ||
<implementation> | <declaration>simgear/misc/interpolator.hxx</declaration> | ||
</ | <implementation>simgear/misc/interpolator.cxx</implementation> | ||
</SGInterpolator> | |||
<SGPerformanceMonitor> | |||
<inheritance>SGSubsystem</inheritance> | |||
< | <staticSubsystemClassId>performance-mon</staticSubsystemClassId> | ||
<declaration> | <declaration>simgear/structure/SGPerfMon.hxx</declaration> | ||
<implementation> | <implementation>simgear/structure/SGPerfMon.cxx</implementation> | ||
</ | </SGPerformanceMonitor> | ||
< | <SGSoundMgr> | ||
<inheritance> | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>sound</staticSubsystemClassId> | ||
< | <declaration>simgear/sound/soundmgr.hxx</declaration> | ||
</ | </SGSoundMgr> | ||
< | <SGSubsystemMgr> | ||
<inheritance> | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>subsystem-mgr</staticSubsystemClassId> | ||
<implementation> | <declaration>simgear/structure/subsystem_mgr.hxx</declaration> | ||
</ | <implementation>simgear/structure/subsystem_mgr.cxx</implementation> | ||
< | </SGSubsystemMgr> | ||
<inheritance> | <SGTerraSync> | ||
< | <inheritance>SGSubsystem</inheritance> | ||
<implementation> | <staticSubsystemClassId>terrasync</staticSubsystemClassId> | ||
</ | <declaration>simgear/scene/tsync/terrasync.hxx</declaration> | ||
< | <implementation>simgear/scene/tsync/terrasync.cxx</implementation> | ||
<inheritance> | </SGTerraSync> | ||
< | <SlipSkidBall> | ||
<implementation>src/Instrumentation/ | <inheritance>SGSubsystem</inheritance> | ||
</ | <staticSubsystemClassId>slip-skid-ball</staticSubsystemClassId> | ||
< | <declaration>src/Instrumentation/slip_skid_ball.hxx</declaration> | ||
<inheritance> | <implementation>src/Instrumentation/slip_skid_ball.cxx</implementation> | ||
<declaration>src/Systems/ | </SlipSkidBall> | ||
<implementation>src/Systems/ | <StaticSystem> | ||
</ | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>static</staticSubsystemClassId> | ||
<inheritance> | <declaration>src/Systems/static.hxx</declaration> | ||
< | <implementation>src/Systems/static.cxx</implementation> | ||
<implementation>src/ | </StaticSystem> | ||
</ | <SwiftConnection> | ||
< | <inheritance>SGSubsystem</inheritance> | ||
<inheritance> | <staticSubsystemClassId>swift</staticSubsystemClassId> | ||
<declaration>src/ | <declaration>src/Network/Swift/swift_connection.hxx</declaration> | ||
<implementation>src/Network/Swift/swift_connection.cxx</implementation> | |||
</SwiftConnection> | |||
<TACAN> | |||
< | <inheritance>SGSubsystem</inheritance> | ||
<inheritance> | <staticSubsystemClassId>tacan</staticSubsystemClassId> | ||
<declaration>src/ | <declaration>src/Instrumentation/tacan.hxx</declaration> | ||
<implementation>src/ | <implementation>src/Instrumentation/tacan.cxx</implementation> | ||
</ | </TACAN> | ||
< | <TCAS> | ||
<inheritance> | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>tcas</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Instrumentation/tcas.hxx</declaration> | ||
</ | <implementation>src/Instrumentation/tcas.cxx</implementation> | ||
< | </TCAS> | ||
<inheritance> | <TimeManager> | ||
< | <inheritance>SGSubsystem</inheritance> | ||
<implementation> | <staticSubsystemClassId>time</staticSubsystemClassId> | ||
</ | <declaration>src/Time/TimeManager.hxx</declaration> | ||
< | <implementation>src/Time/TimeManager.cxx</implementation> | ||
<inheritance> | </TimeManager> | ||
< | <TurnIndicator> | ||
<implementation>src/ | <inheritance>SGSubsystem</inheritance> | ||
</ | <staticSubsystemClassId>turn-indicator</staticSubsystemClassId> | ||
< | <declaration>src/Instrumentation/turn_indicator.hxx</declaration> | ||
<inheritance> | <implementation>src/Instrumentation/turn_indicator.cxx</implementation> | ||
<declaration>src/ | </TurnIndicator> | ||
<implementation>src/ | <VacuumSystem> | ||
</ | <inheritance>SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>vacuum</staticSubsystemClassId> | ||
<inheritance> | <declaration>src/Systems/vacuum.hxx</declaration> | ||
<declaration>src/ | <implementation>src/Systems/vacuum.cxx</implementation> | ||
<implementation>src/ | </VacuumSystem> | ||
</ | <VerticalSpeedIndicator> | ||
< | <inheritance>SGSubsystem</inheritance> | ||
<inheritance> | <staticSubsystemClassId>vertical-speed-indicator</staticSubsystemClassId> | ||
< | <declaration>src/Instrumentation/vertical_speed_indicator.hxx</declaration> | ||
<implementation>src/ | <implementation>src/Instrumentation/vertical_speed_indicator.cxx</implementation> | ||
</ | </VerticalSpeedIndicator> | ||
<View> | |||
<inheritance>SGSubsystem</inheritance> | |||
< | <staticSubsystemClassId>view</staticSubsystemClassId> | ||
< | <declaration>src/Viewer/view.hxx</declaration> | ||
</ | <implementation>src/Viewer/view.cxx</implementation> | ||
< | </View> | ||
<inheritance> | <wxRadarBg> | ||
< | <inheritance>SGSubsystem</inheritance> | ||
<implementation>src/ | <staticSubsystemClassId>radar</staticSubsystemClassId> | ||
</ | <declaration>src/Cockpit/wxradar.hxx</declaration> | ||
< | <implementation>src/Cockpit/wxradar.cxx</implementation> | ||
<inheritance> | </wxRadarBg> | ||
< | </primary_subsystems> | ||
<implementation>src/ | <primary_groups count="8"> | ||
</ | <Autopilot> | ||
< | <inheritance>SGSubsystemGroup : SGSubsystem</inheritance> | ||
<inheritance> | <staticSubsystemClassId>autopilot</staticSubsystemClassId> | ||
<declaration>src/ | <declaration>src/Autopilot/autopilot.hxx</declaration> | ||
<implementation>src/ | <implementation>src/Autopilot/autopilot.cxx</implementation> | ||
</ | </Autopilot> | ||
< | <CockpitDisplayManager> | ||
<inheritance> | <inheritance>SGSubsystemGroup : SGSubsystem</inheritance> | ||
<declaration>src/ | <staticSubsystemClassId>cockpit-displays</staticSubsystemClassId> | ||
<implementation>src/ | <declaration>src/Cockpit/cockpitDisplayManager.hxx</declaration> | ||
</ | <implementation>src/Cockpit/cockpitDisplayManager.cxx</implementation> | ||
< | </CockpitDisplayManager> | ||
<inheritance> | <FGEnvironmentMgr> | ||
< | <inheritance>SGSubsystemGroup : SGSubsystem</inheritance> | ||
<implementation>src/ | <staticSubsystemClassId>environment</staticSubsystemClassId> | ||
</ | <declaration>src/Environment/environment_mgr.hxx</declaration> | ||
< | <implementation>src/Environment/environment_mgr.cxx</implementation> | ||
<inheritance> | </FGEnvironmentMgr> | ||
< | <FGInput> | ||
< | <inheritance>SGSubsystemGroup : SGSubsystem</inheritance> | ||
</ | <staticSubsystemClassId>input</staticSubsystemClassId> | ||
< | <declaration>src/Input/input.hxx</declaration> | ||
<inheritance> | <implementation>src/Input/input.cxx</implementation> | ||
<declaration>src/ | </FGInput> | ||
<FGSystemMgr> | |||
<inheritance>SGSubsystemGroup : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>systems</staticSubsystemClassId> | |||
<inheritance> | <declaration>src/Systems/system_mgr.hxx</declaration> | ||
<declaration>src/ | <implementation>src/Systems/system_mgr.cxx</implementation> | ||
<implementation>src/ | </FGSystemMgr> | ||
</ | <FGXMLAutopilotGroup> | ||
< | <inheritance>SGSubsystemGroup : SGSubsystem</inheritance> | ||
<inheritance> | <staticSubsystemClassId>xml-rules</staticSubsystemClassId> | ||
<declaration>src/ | <declaration>src/Autopilot/autopilotgroup.hxx</declaration> | ||
<implementation>src/ | <implementation>src/Autopilot/autopilotgroup.cxx</implementation> | ||
</ | </FGXMLAutopilotGroup> | ||
< | <InstrumentGroup> | ||
<inheritance>SGSubsystemGroup : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>instruments</staticSubsystemClassId> | |||
<declaration>simgear/structure/subsystem_test.cxx</declaration> | |||
</InstrumentGroup> | |||
<TerrainSampler> | |||
<inheritance>SGSubsystemGroup : SGSubsystem</inheritance> | |||
<declaration>src/Environment/terrainsampler.hxx</declaration> | |||
</TerrainSampler> | |||
</primary_groups> | |||
<secondary_subsystems count="32"> | |||
<ADF> | |||
<inheritance>AbstractInstrument : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>adf</staticSubsystemClassId> | |||
<declaration>src/Instrumentation/adf.hxx</declaration> | |||
<implementation>src/Instrumentation/adf.cxx</implementation> | |||
</ADF> | |||
<AnalogComponent> | |||
<inheritance>Component : SGSubsystem</inheritance> | |||
<declaration>src/Autopilot/analogcomponent.hxx</declaration> | |||
<implementation>src/Autopilot/analogcomponent.cxx</implementation> | |||
</AnalogComponent> | |||
<BasicRealWxController> | |||
<inheritance>RealWxController : SGSubsystem</inheritance> | |||
<declaration>src/Environment/realwx_ctrl.cxx</declaration> | |||
<implementation>src/Environment/realwx_ctrl.cxx</implementation> | |||
</BasicRealWxController> | |||
<CanvasMgr> | |||
<inheritance>PropertyBasedMgr : SGSubsystem</inheritance> | |||
<declaration>simgear/canvas/CanvasMgr.hxx</declaration> | |||
<implementation>simgear/canvas/CanvasMgr.cxx</implementation> | |||
</CanvasMgr> | |||
<CommRadio> | |||
<inheritance>AbstractInstrument : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>comm-radio</staticSubsystemClassId> | |||
<declaration>src/Instrumentation/commradio.hxx</declaration> | |||
<implementation>src/Instrumentation/commradio.cxx</implementation> | |||
</CommRadio> | |||
<DME> | |||
<inheritance>AbstractInstrument : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>dme</staticSubsystemClassId> | |||
<declaration>src/Instrumentation/dme.hxx</declaration> | |||
<implementation>src/Instrumentation/dme.cxx</implementation> | |||
</DME> | |||
<DigitalComponent> | |||
<inheritance>Component : SGSubsystem</inheritance> | |||
<declaration>src/Autopilot/digitalcomponent.hxx</declaration> | |||
<implementation>src/Autopilot/digitalcomponent.cxx</implementation> | |||
</DigitalComponent> | |||
<FGACMS> | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | <inheritance>FGInterface : SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>acms</staticSubsystemClassId> | ||
< | <declaration>src/FDM/SP/ACMS.hxx</declaration> | ||
<implementation>src/FDM/SP/ACMS.cxx</implementation> | |||
</FGACMS> | |||
<FGADA> | |||
<implementation | |||
</ | |||
< | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | <inheritance>FGInterface : SGSubsystem</inheritance> | ||
< | <staticSubsystemClassId>ada</staticSubsystemClassId> | ||
< | <declaration>src/FDM/SP/ADA.hxx</declaration> | ||
<implementation>src/FDM/SP/ADA.cxx</implementation> | |||
</FGADA> | |||
<FGAISim> | |||
<implementation>src/ | |||
</ | |||
< | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | <inheritance>FGInterface : SGSubsystem</inheritance> | ||
<staticSubsystemClassId>aisim</staticSubsystemClassId> | |||
<declaration>src/FDM/SP/AISim.hpp</declaration> | |||
<implementation>src/FDM/SP/AISim.cpp</implementation> | |||
</FGAISim> | |||
<FGBalloonSim> | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>balloon</staticSubsystemClassId> | |||
<declaration>src/FDM/SP/Balloon.h</declaration> | |||
<implementation>src/FDM/SP/Balloon.cxx</implementation> | |||
</FGBalloonSim> | |||
<FGExternalNet> | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>network</staticSubsystemClassId> | |||
<declaration>src/FDM/ExternalNet/ExternalNet.hxx</declaration> | |||
<implementation>src/FDM/ExternalNet/ExternalNet.cxx</implementation> | |||
</FGExternalNet> | |||
<FGExternalPipe> | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>pipe</staticSubsystemClassId> | |||
<declaration>src/FDM/ExternalPipe/ExternalPipe.hxx</declaration> | |||
<implementation>src/FDM/ExternalPipe/ExternalPipe.cxx</implementation> | |||
</FGExternalPipe> | |||
<FGHIDEventInput> | |||
<inheritance>FGEventInput : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>input-event-hid</staticSubsystemClassId> | |||
<declaration>src/Input/FGHIDEventInput.hxx</declaration> | |||
<implementation>src/Input/FGHIDEventInput.cxx</implementation> | |||
</FGHIDEventInput> | |||
<FGInterpolator> | |||
<inheritance>PropertyInterpolationMgr : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>prop-interpolator</staticSubsystemClassId> | |||
<declaration>src/Main/FGInterpolator.hxx</declaration> | |||
<implementation>src/Main/FGInterpolator.cxx</implementation> | |||
</FGInterpolator> | |||
<FGJSBsim> | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>jsb</staticSubsystemClassId> | |||
<declaration>src/FDM/JSBSim/JSBSim.hxx</declaration> | |||
<implementation>src/FDM/JSBSim/JSBSim.cxx</implementation> | |||
</FGJSBsim> | |||
<FGLaRCsim> | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>larcsim</staticSubsystemClassId> | |||
<declaration>src/FDM/LaRCsim/LaRCsim.hxx</declaration> | |||
<implementation>src/FDM/LaRCsim/LaRCsim.cxx</implementation> | |||
</FGLaRCsim> | |||
<FGLinuxEventInput> | |||
<inheritance>FGEventInput : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>input-event</staticSubsystemClassId> | |||
<declaration>src/Input/FGLinuxEventInput.hxx</declaration> | |||
<implementation>src/Input/FGLinuxEventInput.cxx</implementation> | |||
</FGLinuxEventInput> | |||
<FGMacOSXEventInput> | |||
<inheritance>FGEventInput : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>input-event</staticSubsystemClassId> | |||
<declaration>src/Input/FGMacOSXEventInput.hxx</declaration> | |||
<implementation>src/Input/FGMacOSXEventInput.cxx</implementation> | |||
</FGMacOSXEventInput> | |||
<FGMagicCarpet> | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>magic</staticSubsystemClassId> | |||
<declaration>src/FDM/SP/MagicCarpet.hxx</declaration> | |||
<implementation>src/FDM/SP/MagicCarpet.cxx</implementation> | |||
</FGMagicCarpet> | |||
<FGMarkerBeacon> | |||
<inheritance>AbstractInstrument : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>marker-beacon</staticSubsystemClassId> | |||
<declaration>src/Instrumentation/marker_beacon.hxx</declaration> | |||
<implementation>src/Instrumentation/marker_beacon.cxx</implementation> | |||
</FGMarkerBeacon> | |||
<FGNavRadio> | |||
<inheritance>AbstractInstrument : SGSubsystem</inheritance> | |||
<staticSubsystemClassId>old-navradio</staticSubsystemClassId> | |||
<declaration>src/Instrumentation/navradio.hxx</declaration> | |||
<implementation>src/Instrumentation/navradio.cxx</implementation> | |||
</FGNavRadio> | |||
<FGNullFDM> | |||
<inheritance>FGInterface : SGSubsystem</inheritance> | |||
# First find all subsystems. | |||
sub = FindSubsystems() | |||
# Generate a list of files to skip. | |||
cmd = "cd %s;" % SIMGEAR_PATH | |||
cmd += "git diff --name-only ..next;" | |||
cmd += "cd %s;" % FLIGHTGEAR_PATH | |||
cmd += "git diff --name-only ..next" | |||
pipe = Popen(cmd, shell=True, stdout=PIPE) | |||
blacklist = [] | |||
for line in pipe.stdout.readlines(): | |||
file_name = line.decode() | |||
file_name = file_name.strip() | |||
blacklist.append(file_name) | |||
# Loop over all derived class declarations. | |||
print("\nYet to be updated:") | |||
for subsystem in sub.subsystems[0] + sub.subsystems[1] + sub.subsystems[2] + sub.subsystems[3] + sub.groups[0] + sub.groups[1] + sub.groups[2] + sub.groups[3]: | |||
if subsystem.declaration_file not in blacklist: | |||
print(" %s: %s" % (subsystem.declaration_file, subsystem)) | |||
# Instantiate the class if run as a script. | |||
if __name__ == "__main__": | |||
ToUpdate() | |||
}} | |||
== Automated test suite test creation == | |||
This script was used to generate the instanced and non-instanced subsystem system tests: | |||
{{collapsible script | |||
| type = Python script | |||
| title = Python script for generating the code for the system tests | |||
| lang = python | |||
| script = | |||
#! /usr/bin/env python3 | |||
# Other module imports. | |||
from find_subsystems import FindSubsystems | |||
class TestSuite: | |||
"""Class for generating the code for the system tests.""" | |||
def __init__(self): | |||
"""Auto-generate the C++ code.""" | |||
# First find all subsystems. | |||
sub = FindSubsystems(output=False) | |||
== | # The test name and test code. | ||
name = [] | |||
code = [] | |||
# Loop over all derived class declarations. | |||
max_width = 0 | |||
for subsystem in sub.subsystems[0] + sub.subsystems[1] + sub.subsystems[2] + sub.subsystems[3] + sub.groups[0] + sub.groups[1] + sub.groups[2] + sub.groups[3]: | |||
# Skip non-instantiated base classes. | |||
if not subsystem.staticSubsystemClassId: | |||
continue | |||
# | |||
# | # Add the test suite text. | ||
name.append("test%s" % (subsystem.name)) | |||
code.append("{ create(\"%s\"); }" % (subsystem.staticSubsystemClassId)) | |||
# Formatting. | |||
max_width = max(len(name[-1]), max_width) | |||
# | # Test setup printout. | ||
print("\n") | |||
print(" CPPUNIT_TEST_SUITE(NonInstancedSubsystemTests);") | |||
for i in range(len(name)): | |||
print(" CPPUNIT_TEST(%s);" % name[i]) | |||
print(" CPPUNIT_TEST_SUITE_END();") | |||
# Test declaration printout. | |||
print("\n") | |||
print(" // The subsystem tests.") | |||
for i in range(len(name)): | |||
print(" void %s();" % name[i]) | |||
# Test implementation printout. | |||
print("\n") | |||
format_str = "void NonInstancedSubsystemTests::%%-%is() %%-s" % max_width | |||
for i in range(len(name)): | |||
print(format_str % (name[i], code[i])) | |||
# | |||
for | |||
Line 2,107: | Line 2,624: | ||
# Instantiate the class if run as a script. | # Instantiate the class if run as a script. | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
TestSuite() | |||
}} | }} |
Revision as of 13:44, 1 July 2019
Tracking down subsystems
Script
The following script is for finding all FlightGear dependencies:
Python script: The find_subsystems.py script for finding all subsystems within the flightgear and simgear C++ code bases.
All subsystems
The result is:
Text output: A listing of all flightgear and simgear subsystems and subsystem groups.
XML output: A listing of all flightgear and simgear subsystems and subsystem groups.
File listing output: The declaration and implementation files for all flightgear and simgear subsystems and subsystem groups.
Flightgear subsystem declaration file listing output: The declaration files for all flightgear subsystems (excluding simgear sources and excluding subsystem groups).
Flightgear subsystem implementation file listing output: The implementation files for all flightgear subsystems (excluding simgear sources and excluding subsystem groups).
Grep output: Searching for SGSky dependencies for all subsystems.
Grep output: Searching for all direct subsystem instantiations.
Refactoring
To check that all subsystems on a branch have been updated or refactored:
Python script: Python script verifying if all subsystems have been updated.
Automated test suite test creation
This script was used to generate the instanced and non-instanced subsystem system tests:
Python script: Python script for generating the code for the system tests