User:Bugman/subsystems: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
(→‎Script: Newest version of the script.)
(→‎Tracking down subsystems: Update for the grep output.)
(23 intermediate revisions by the same user not shown)
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", root_path=self.root_path("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 92: Line 96:


         # Final summary.
         # Final summary.
         self.summarise()
         if output:
            self.summarise()




Line 123: 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 self.is_simgear(subsystem.declaration_file_rel):
             if self.is_simgear(subsystem.declaration_file):
                 path = SIMGEAR_PATH
                 path = SIMGEAR_PATH
             else:
             else:
Line 140: Line 145:
                 # The probable implementation file name.
                 # The probable implementation file name.
                 file_name = subsystem.declaration_file[:-3] + "cxx"
                 file_name = subsystem.declaration_file[:-3] + "cxx"
                 full_path = file_name
                 full_path = path + sep + file_name
                if not subsystem.root_path:
                    full_path = path + sep + file_name
                 if access(full_path, F_OK):
                 if access(full_path, F_OK):
                     # The Unix grep commands to run.
                     # The Unix grep commands to run.
Line 155: Line 158:
                         lines = pipe.stdout.readlines()
                         lines = pipe.stdout.readlines()
                         if len(lines):
                         if len(lines):
                             if self.output_full_path:
                             subsystem.add_implementation_file(file_name)
                                subsystem.add_implementation_file(full_path)
                            else:
                                subsystem.add_implementation_file(file_name)
                             break
                             break


Line 191: Line 191:
                     # Store the implementation file.
                     # Store the implementation file.
                     elif len(files):
                     elif len(files):
                         file_name = files[0]
                         subsystem.add_implementation_file(files[0])
                        if subsystem.root_path:
                            file_name = subsystem.root_path + sep + file_name
                        subsystem.add_implementation_file(file_name)
                         break
                         break


Line 222: Line 219:
             if class_name in skip:
             if class_name in skip:
                 continue
                 continue
             primary.append(Subsystem(class_name, base_class=base, declaration_file=file_name, root_path=self.root_path(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 246: 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, simgear=self.is_simgear(subsystem.declaration_file_rel)):
             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, root_path=self.root_path(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 271: 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, simgear=self.is_simgear(subsystem.declaration_file_rel)):
             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, root_path=self.root_path(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 296: 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, simgear=self.is_simgear(subsystem.declaration_file_rel)):
             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, root_path=self.root_path(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 378: 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.")
         group.add_argument("-p", "--full-path", default=False, action="store_true", help="For file listings, include the SIMGEAR or FLIGHTGEAR absolute path.")


Line 408: 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"
Line 445: Line 445:
         @type file_name:    str
         @type file_name:    str
         @return:            The root path.
         @return:            The root path.
         @rtype:            None or str
         @rtype:            str
         """
         """


         # The relative or absolute path.
         # The relative or absolute path.
        root_path = None
         if self.is_simgear(file_name):
         if self.output_full_path:
            return SIMGEAR_PATH
            if self.is_simgear(file_name):
        else:
                root_path = SIMGEAR_PATH
            return FLIGHTGEAR_PATH
            else:
                root_path = FLIGHTGEAR_PATH
 
        # Return the root.
        return root_path




Line 471: Line 466:
         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 self.is_simgear(subsystem.declaration_file_rel):
             if self.is_simgear(subsystem.declaration_file):
                 path = SIMGEAR_PATH
                 path = SIMGEAR_PATH
             else:
             else:
Line 485: Line 480:


             # Loop over each file.
             # Loop over each file.
            print(files)
             for file_name in files:
             for file_name in files:
                 # Extract the contents.
                 # Extract the contents.
Line 501: Line 495:
         """Print out a summary of all found subsystems and subsystem groups."""
         """Print out a summary of all found subsystems and subsystem groups."""


         # Basic file listings.
         # Basic file or class listings.
         if self.output_format in ["files", "declaration files", "implementation files"]:
         if self.output_format in ["files", "declaration files", "implementation files", "classes"]:
             # Concatenate the lists.
             # Concatenate the lists.
             subsystem_list = []
             subsystem_list = []
Line 513: Line 507:
             for subsystem in subsystem_list:
             for subsystem in subsystem_list:
                 # Code base selections.
                 # Code base selections.
                 if self.is_simgear(subsystem.declaration_file_rel) and not self.output_simgear:
                 if self.is_simgear(subsystem.declaration_file) and not self.output_simgear:
                     continue
                     continue
                 if not self.is_simgear(subsystem.declaration_file_rel) and not self.output_flightgear:
                 if not self.is_simgear(subsystem.declaration_file) and not self.output_flightgear:
                     continue
                     continue


                 # Output the source files.
                 # Output the source files.
                 if self.output_format in ["files", "declaration files"]:
                 if self.output_format in ["files", "declaration files"]:
                     print("%s" % subsystem.declaration_file)
                     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 self.output_format in ["files", "implementation files"]:
                     if subsystem.implementation_file:
                     if subsystem.implementation_file:
                         print("%s" % 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.
             # Skip the rest of the function.
Line 577: Line 581:
         subsystem_groups_flightgear = 0
         subsystem_groups_flightgear = 0
         for subsystem in self.subsystems[0] + self.subsystems[1] + self.subsystems[2] + self.subsystems[3]:
         for subsystem in self.subsystems[0] + self.subsystems[1] + self.subsystems[2] + self.subsystems[3]:
             if self.is_simgear(subsystem.declaration_file_rel):
             if self.is_simgear(subsystem.declaration_file):
                 subsystem_classes_simgear += 1
                 subsystem_classes_simgear += 1
             else:
             else:
                 subsystem_classes_flightgear += 1
                 subsystem_classes_flightgear += 1
         for group in self.groups[0] + self.groups[1] + self.groups[2] + self.groups[3]:
         for group in self.groups[0] + self.groups[1] + self.groups[2] + self.groups[3]:
             if self.is_simgear(group.declaration_file_rel):
             if self.is_simgear(group.declaration_file):
                 subsystem_groups_simgear += 1
                 subsystem_groups_simgear += 1
             else:
             else:
Line 631: Line 635:
     """Object for storing the information for a specific subsystem."""
     """Object for storing the information for a specific subsystem."""


     def __init__(self, name, base_class=None, declaration_file=None, implementation_file=None, root_path=None, xml=False):
     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.
         """Set up the object.


Line 638: Line 642:
         @keyword base_class:            The name of the base class.
         @keyword base_class:            The name of the base class.
         @type base_class:              str
         @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.
         @keyword declaration_file:      The name of the file containing the subsystem declaration.
         @type declaration_file:        str
         @type declaration_file:        str
Line 644: Line 650:
         @keyword root_path:            The root path to the files.
         @keyword root_path:            The root path to the files.
         @type root_path:                str
         @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.
         @keyword xml:                  Produce a valid XML representation of the object.
         @type xml:                      bool
         @type xml:                      bool
Line 651: Line 659:
         self.name = name
         self.name = name
         self.base_class = base_class
         self.base_class = base_class
         self.declaration_file_rel = declaration_file
         self.staticSubsystemClassId = static_id
         self.implementation_file = implementation_file
         self.implementation_file = implementation_file
         if root_path:
         self.declaration_file = declaration_file
            self.declaration_file = root_path + sep + declaration_file
            if implementation_file:
                self.implementation_file = root_path + sep + implementation_file
        else:
            self.declaration_file = declaration_file
         self.root_path = root_path
         self.root_path = root_path
        self.full_path = full_path
         self.xml = xml
         self.xml = xml
        # Data extraction.
        self.info_extraction()




Line 689: Line 696:
         # The subsystem name and inheritance chain.
         # The subsystem name and inheritance chain.
         string = "<%s : %s" % (self.name, inheritance)
         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.
         # Add the declaration file name.
         string += " declared in \"%s\"" % self.declaration_file
        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.
         # Add the implementation file name.
         if self.implementation_file:
         if self.implementation_file:
             string += ", implemented in \"%s\"" % 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.
         # Closure.
Line 718: Line 735:
         # The inheritance chain.
         # The inheritance chain.
         string += "  <inheritance>%s</inheritance>\n" % inheritance
         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.
         # Add the declaration file name.
         string += "  <declaration>%s</declaration>\n" % self.declaration_file
        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.
         # Add the implementation file name.
         if self.implementation_file:
         if self.implementation_file:
             string += "  <implementation>%s</implementation>\n" % 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.
         # End.
Line 742: Line 769:
         # Store the file.
         # Store the file.
         self.implementation_file = implementation_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




Line 789: Line 852:
| lang  = c
| lang  = c
| script =  
| script =  
Primary subsystems (91):
Primary subsystems (90):
     <ADF : SGSubsystem declared in "src/Instrumentation/adf.hxx", implemented in "src/Instrumentation/adf.cxx">
     <AbstractInstrument : SGSubsystem declared in "src/Instrumentation/AbstractInstrument.hxx", implemented in "src/Instrumentation/AbstractInstrument.cxx">
     <AirportDynamicsManager : SGSubsystem declared in "src/Airports/airportdynamicsmanager.hxx", implemented in "src/Airports/airportdynamicsmanager.cxx">
     <AirportDynamicsManager : SGSubsystem staticSubsystemClassId is "airport-dynamics" declared in "src/Airports/airportdynamicsmanager.hxx", implemented in "src/Airports/airportdynamicsmanager.cxx">
     <AirspeedIndicator : SGSubsystem declared in "src/Instrumentation/airspeed_indicator.hxx", implemented in "src/Instrumentation/airspeed_indicator.cxx">
     <AirspeedIndicator : SGSubsystem staticSubsystemClassId is "airspeed-indicator" declared in "src/Instrumentation/airspeed_indicator.hxx", implemented in "src/Instrumentation/airspeed_indicator.cxx">
     <Altimeter : SGSubsystem declared in "src/Instrumentation/altimeter.hxx", implemented in "src/Instrumentation/altimeter.cxx">
     <Altimeter : SGSubsystem staticSubsystemClassId is "altimeter" declared in "src/Instrumentation/altimeter.hxx", implemented in "src/Instrumentation/altimeter.cxx">
     <AreaSampler : SGSubsystem declared in "src/Environment/terrainsampler.cxx", implemented in "src/Environment/terrainsampler.cxx">
    <AnotherSub : SGSubsystem staticSubsystemClassId is "anothersub" declared in "simgear/structure/subsystem_test.cxx">
     <AttitudeIndicator : SGSubsystem declared in "src/Instrumentation/attitude_indicator.hxx", implemented in "src/Instrumentation/attitude_indicator.cxx">
     <AreaSampler : SGSubsystem staticSubsystemClassId is "area" declared in "src/Environment/terrainsampler.cxx", implemented in "src/Environment/terrainsampler.cxx">
     <Clock : SGSubsystem declared in "src/Instrumentation/clock.hxx", implemented in "src/Instrumentation/clock.cxx">
     <AttitudeIndicator : SGSubsystem staticSubsystemClassId is "attitude-indicator" declared in "src/Instrumentation/attitude_indicator.hxx", implemented in "src/Instrumentation/attitude_indicator.cxx">
    <CommRadio : SGSubsystem declared in "src/Instrumentation/commradio.hxx">
     <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">
     <Component : SGSubsystem declared in "src/Autopilot/component.hxx", implemented in "src/Autopilot/component.cxx">
     <DCLGPS : SGSubsystem declared in "src/Instrumentation/dclgps.hxx", implemented in "src/Instrumentation/dclgps.cxx">
     <Ephemeris : SGSubsystem staticSubsystemClassId is "ephemeris" declared in "src/Environment/ephemeris.hxx", implemented in "src/Environment/ephemeris.cxx">
    <DME : SGSubsystem declared in "src/Instrumentation/dme.hxx", implemented in "src/Instrumentation/dme.cxx">
     <FDMShell : SGSubsystem staticSubsystemClassId is "flight" declared in "src/FDM/fdm_shell.hxx", implemented in "src/FDM/fdm_shell.cxx">
    <Ephemeris : SGSubsystem declared in "src/Environment/ephemeris.hxx", implemented in "src/Environment/ephemeris.cxx">
     <FGAIManager : SGSubsystem staticSubsystemClassId is "ai-model" declared in "src/AIModel/AIManager.hxx", implemented in "src/AIModel/AIManager.cxx">
     <FDMShell : SGSubsystem declared in "src/FDM/fdm_shell.hxx", implemented in "src/FDM/fdm_shell.cxx">
     <FGATCManager : SGSubsystem staticSubsystemClassId is "ATC" declared in "src/ATC/atc_mgr.hxx", implemented in "src/ATC/atc_mgr.cxx">
     <FGAIManager : SGSubsystem declared in "src/AIModel/AIManager.hxx", implemented in "src/AIModel/AIManager.cxx">
     <FGAircraftModel : SGSubsystem staticSubsystemClassId is "aircraft-model" declared in "src/Model/acmodel.hxx", implemented in "src/Model/acmodel.cxx">
     <FGATCManager : SGSubsystem declared in "src/ATC/atc_mgr.hxx", implemented in "src/ATC/atc_mgr.cxx">
     <FGCom : SGSubsystem staticSubsystemClassId is "fgcom" declared in "src/Network/fgcom.hxx", implemented in "src/Network/fgcom.cxx">
     <FGAircraftModel : SGSubsystem declared in "src/Model/acmodel.hxx", implemented in "src/Model/acmodel.cxx">
     <FGControls : SGSubsystem staticSubsystemClassId is "controls" declared in "src/Aircraft/controls.hxx", implemented in "src/Aircraft/controls.cxx">
     <FGCom : SGSubsystem declared in "src/Network/fgcom.hxx", implemented in "src/Network/fgcom.cxx">
     <FGDNSClient : SGSubsystem staticSubsystemClassId is "dns" declared in "src/Network/DNSClient.hxx", implemented in "src/Network/DNSClient.cxx">
     <FGControls : SGSubsystem declared in "src/Aircraft/controls.hxx", implemented in "src/Aircraft/controls.cxx">
     <FGElectricalSystem : SGSubsystem staticSubsystemClassId is "electrical" declared in "src/Systems/electrical.hxx", implemented in "src/Systems/electrical.cxx">
     <FGDNSClient : SGSubsystem declared in "src/Network/DNSClient.hxx", implemented in "src/Network/DNSClient.cxx">
     <FGElectricalSystem : SGSubsystem 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">
     <FGEventInput : SGSubsystem declared in "src/Input/FGEventInput.hxx", implemented in "src/Input/FGEventInput.cxx">
     <FGFlightHistory : SGSubsystem declared in "src/Aircraft/FlightHistory.hxx", implemented in "src/Aircraft/FlightHistory.cxx">
     <FGFlightHistory : SGSubsystem staticSubsystemClassId is "history" declared in "src/Aircraft/FlightHistory.hxx", implemented in "src/Aircraft/FlightHistory.cxx">
     <FGHTTPClient : SGSubsystem declared in "src/Network/HTTPClient.hxx", implemented in "src/Network/HTTPClient.cxx">
     <FGHTTPClient : SGSubsystem staticSubsystemClassId is "http" declared in "src/Network/HTTPClient.hxx", implemented in "src/Network/HTTPClient.cxx">
     <FGHttpd : SGSubsystem declared in "src/Network/http/httpd.hxx">
     <FGHttpd : SGSubsystem staticSubsystemClassId is "httpd" declared in "src/Network/http/httpd.hxx">
     <FGIO : SGSubsystem declared in "src/Main/fg_io.hxx", implemented in "src/Main/fg_io.cxx">
     <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">
     <FGInterface : SGSubsystem declared in "src/FDM/flight.hxx", implemented in "src/FDM/flight.cxx">
     <FGJoystickInput : SGSubsystem declared in "src/Input/FGJoystickInput.hxx", implemented in "src/Input/FGJoystickInput.cxx">
     <FGJoystickInput : SGSubsystem staticSubsystemClassId is "input-joystick" declared in "src/Input/FGJoystickInput.hxx", implemented in "src/Input/FGJoystickInput.cxx">
     <FGKR_87 : SGSubsystem declared in "src/Instrumentation/kr_87.hxx", implemented in "src/Instrumentation/kr_87.cxx">
     <FGKR_87 : SGSubsystem staticSubsystemClassId is "KR-87" declared in "src/Instrumentation/kr_87.hxx", implemented in "src/Instrumentation/kr_87.cxx">
     <FGKeyboardInput : SGSubsystem declared in "src/Input/FGKeyboardInput.hxx", implemented in "src/Input/FGKeyboardInput.cxx">
     <FGKeyboardInput : SGSubsystem staticSubsystemClassId is "input-keyboard" declared in "src/Input/FGKeyboardInput.hxx", implemented in "src/Input/FGKeyboardInput.cxx">
     <FGLight : SGSubsystem declared in "src/Time/light.hxx", implemented in "src/Time/light.cxx">
     <FGLight : SGSubsystem staticSubsystemClassId is "lighting" declared in "src/Time/light.hxx", implemented in "src/Time/light.cxx">
     <FGLogger : SGSubsystem declared in "src/Main/logger.hxx", implemented in "src/Main/logger.cxx">
     <FGLogger : SGSubsystem staticSubsystemClassId is "logger" declared in "src/Main/logger.hxx", implemented in "src/Main/logger.cxx">
     <FGMagVarManager : SGSubsystem declared in "src/Environment/magvarmanager.hxx", implemented in "src/Environment/magvarmanager.cxx">
     <FGMagVarManager : SGSubsystem staticSubsystemClassId is "magvar" declared in "src/Environment/magvarmanager.hxx", implemented in "src/Environment/magvarmanager.cxx">
     <FGMarkerBeacon : SGSubsystem declared in "src/Instrumentation/marker_beacon.hxx", implemented in "src/Instrumentation/marker_beacon.cxx">
     <FGModelMgr : SGSubsystem staticSubsystemClassId is "model-manager" declared in "src/Model/modelmgr.hxx", implemented in "src/Model/modelmgr.cxx">
    <FGModelMgr : SGSubsystem 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">
     <FGMouseInput : SGSubsystem 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">
     <FGMultiplayMgr : SGSubsystem 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">
     <FGNasalSys : SGSubsystem 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">
     <FGNavRadio : SGSubsystem declared in "src/Instrumentation/navradio.hxx", implemented in "src/Instrumentation/navradio.cxx">
     <FGPanelProtocol : SGSubsystem staticSubsystemClassId is "panel-protocol" declared in "utils/fgpanel/FGPanelProtocol.hxx", implemented in "utils/fgpanel/FGPanelProtocol.cxx">
    <FGPanel : SGSubsystem declared in "utils/fgpanel/FGPanel.hxx", implemented in "utils/fgpanel/FGPanel.cxx">
     <FGPrecipitationMgr : SGSubsystem staticSubsystemClassId is "precipitation" declared in "src/Environment/precipitation_mgr.hxx", implemented in "src/Environment/precipitation_mgr.cxx">
     <FGPanelProtocol : SGSubsystem declared in "utils/fgpanel/FGPanelProtocol.hxx", implemented in "utils/fgpanel/FGPanelProtocol.cxx">
     <FGProperties : SGSubsystem staticSubsystemClassId is "properties" declared in "src/Main/fg_props.hxx", implemented in "src/Main/fg_props.cxx">
     <FGPrecipitationMgr : SGSubsystem declared in "src/Environment/precipitation_mgr.hxx", implemented in "src/Environment/precipitation_mgr.cxx">
     <FGReplay : SGSubsystem staticSubsystemClassId is "replay" declared in "src/Aircraft/replay.hxx", implemented in "src/Aircraft/replay.cxx">
     <FGProperties : SGSubsystem declared in "src/Main/fg_props.hxx", implemented in "src/Main/fg_props.cxx">
     <FGRidgeLift : SGSubsystem staticSubsystemClassId is "ridgelift" declared in "src/Environment/ridge_lift.hxx", implemented in "src/Environment/ridge_lift.cxx">
     <FGReplay : SGSubsystem declared in "src/Aircraft/replay.hxx", implemented in "src/Aircraft/replay.cxx">
     <FGRouteMgr : SGSubsystem staticSubsystemClassId is "route-manager" declared in "src/Autopilot/route_mgr.hxx", implemented in "src/Autopilot/route_mgr.cxx">
     <FGRidgeLift : SGSubsystem declared in "src/Environment/ridge_lift.hxx", implemented in "src/Environment/ridge_lift.cxx">
     <FGScenery : SGSubsystem staticSubsystemClassId is "scenery" declared in "src/Scenery/scenery.hxx", implemented in "src/Scenery/scenery.cxx">
     <FGRouteMgr : SGSubsystem declared in "src/Autopilot/route_mgr.hxx", implemented in "src/Autopilot/route_mgr.cxx">
     <FGSoundManager : SGSubsystem staticSubsystemClassId is "sound" declared in "src/Sound/soundmanager.hxx", implemented in "src/Sound/soundmanager.cxx">
     <FGScenery : SGSubsystem declared in "src/Scenery/scenery.hxx", implemented in "src/Scenery/scenery.cxx">
     <FGSubmodelMgr : SGSubsystem staticSubsystemClassId is "submodel-mgr" declared in "src/AIModel/submodel.hxx", implemented in "src/AIModel/submodel.cxx">
     <FGSoundManager : SGSubsystem declared in "src/Sound/soundmanager.hxx", implemented in "src/Sound/soundmanager.cxx">
     <FGSubsystemExample : SGSubsystem declared in "docs-mini/README.introduction">
     <FGSubmodelMgr : SGSubsystem declared in "src/AIModel/submodel.hxx", implemented in "src/AIModel/submodel.cxx">
     <FGTrafficManager : SGSubsystem staticSubsystemClassId is "traffic-manager" declared in "src/Traffic/TrafficMgr.hxx", implemented in "src/Traffic/TrafficMgr.cxx">
     <FGSubsystemExample : SGSubsystem declared in "docs-mini/README.introduction", implemented in "docs-mini/README.introduction">
     <FGViewMgr : SGSubsystem staticSubsystemClassId is "view-manager" declared in "src/Viewer/viewmgr.hxx", implemented in "src/Viewer/viewmgr.cxx">
     <FGTrafficManager : SGSubsystem declared in "src/Traffic/TrafficMgr.hxx", implemented in "src/Traffic/TrafficMgr.cxx">
     <FGVoiceMgr : SGSubsystem staticSubsystemClassId is "voice" declared in "src/Sound/voice.hxx", implemented in "src/Sound/voice.cxx">
     <FGViewMgr : SGSubsystem declared in "src/Viewer/viewmgr.hxx", implemented in "src/Viewer/viewmgr.cxx">
    <FakeRadioSub : SGSubsystem staticSubsystemClassId is "fake-radio" declared in "simgear/structure/subsystem_test.cxx">
     <FGVoiceMgr : SGSubsystem declared in "src/Sound/voice.hxx", implemented in "src/Sound/voice.cxx">
     <GPS : SGSubsystem staticSubsystemClassId is "gps" declared in "src/Instrumentation/gps.hxx", implemented in "src/Instrumentation/gps.cxx">
     <GPS : SGSubsystem 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">
     <GSDI : SGSubsystem 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">
     <GUIMgr : SGSubsystem 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">
     <GroundRadar : SGSubsystem 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">
     <HUD : SGSubsystem 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">
     <HeadingIndicator : SGSubsystem 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">
     <HeadingIndicatorDG : SGSubsystem 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">
     <HeadingIndicatorFG : SGSubsystem 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">
     <InstVerticalSpeedIndicator : SGSubsystem 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">
     <LayerInterpolateController : SGSubsystem declared in "src/Environment/environment_ctrl.hxx">
     <MK_VIII : SGSubsystem declared in "src/Instrumentation/mk_viii.hxx", implemented in "src/Instrumentation/mk_viii.cxx">
     <MK_VIII : SGSubsystem staticSubsystemClassId is "mk-viii" declared in "src/Instrumentation/mk_viii.hxx", implemented in "src/Instrumentation/mk_viii.cxx">
     <MagCompass : SGSubsystem declared in "src/Instrumentation/mag_compass.hxx", implemented in "src/Instrumentation/mag_compass.cxx">
     <MagCompass : SGSubsystem staticSubsystemClassId is "magnetic-compass" declared in "src/Instrumentation/mag_compass.hxx", implemented in "src/Instrumentation/mag_compass.cxx">
     <MasterReferenceGyro : SGSubsystem declared in "src/Instrumentation/mrg.hxx", implemented in "src/Instrumentation/mrg.cxx">
     <MasterReferenceGyro : SGSubsystem staticSubsystemClassId is "master-reference-gyro" declared in "src/Instrumentation/mrg.hxx", implemented in "src/Instrumentation/mrg.cxx">
     <NavDisplay : SGSubsystem declared in "src/Cockpit/NavDisplay.hxx", implemented in "src/Cockpit/NavDisplay.cxx">
    <MySub1 : SGSubsystem staticSubsystemClassId is "mysub" declared in "simgear/structure/subsystem_test.cxx">
     <NavRadio : SGSubsystem declared in "src/Instrumentation/newnavradio.hxx">
     <NavDisplay : SGSubsystem staticSubsystemClassId is "navigation-display" declared in "src/Cockpit/NavDisplay.hxx", implemented in "src/Cockpit/NavDisplay.cxx">
     <NewGUI : SGSubsystem declared in "src/GUI/new_gui.hxx", implemented in "src/GUI/new_gui.cxx">
     <NavRadio : SGSubsystem staticSubsystemClassId is "nav-radio" declared in "src/Instrumentation/newnavradio.hxx", implemented in "src/Instrumentation/newnavradio.cxx">
     <PerformanceDB : SGSubsystem declared in "src/AIModel/performancedb.hxx", implemented in "src/AIModel/performancedb.cxx">
     <NewGUI : SGSubsystem staticSubsystemClassId is "gui" declared in "src/GUI/new_gui.hxx", implemented in "src/GUI/new_gui.cxx">
     <PitotSystem : SGSubsystem declared in "src/Systems/pitot.hxx", implemented in "src/Systems/pitot.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">
     <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">
     <PropertyInterpolationMgr : SGSubsystem declared in "simgear/props/PropertyInterpolationMgr.hxx", implemented in "simgear/props/PropertyInterpolationMgr.cxx">
     <RadarAltimeter : SGSubsystem declared in "src/Instrumentation/rad_alt.hxx", implemented in "src/Instrumentation/rad_alt.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">
     <RealWxController : SGSubsystem declared in "src/Environment/realwx_ctrl.hxx", implemented in "src/Environment/realwx_ctrl.cxx">
     <SGEventMgr : SGSubsystem declared in "simgear/structure/event_mgr.hxx", implemented in "simgear/structure/event_mgr.cxx">
     <SGEventMgr : SGSubsystem staticSubsystemClassId is "events" declared in "simgear/structure/event_mgr.hxx", implemented in "simgear/structure/event_mgr.cxx">
     <SGInterpolator : SGSubsystem declared in "simgear/misc/interpolator.hxx", implemented in "simgear/misc/interpolator.cxx">
     <SGInterpolator : SGSubsystem staticSubsystemClassId is "interpolator" declared in "simgear/misc/interpolator.hxx", implemented in "simgear/misc/interpolator.cxx">
     <SGPerformanceMonitor : SGSubsystem declared in "simgear/structure/SGPerfMon.hxx", implemented in "simgear/structure/SGPerfMon.cxx">
     <SGPerformanceMonitor : SGSubsystem staticSubsystemClassId is "performance-mon" declared in "simgear/structure/SGPerfMon.hxx", implemented in "simgear/structure/SGPerfMon.cxx">
     <SGSoundMgr : SGSubsystem declared in "simgear/sound/soundmgr.hxx">
     <SGSoundMgr : SGSubsystem staticSubsystemClassId is "sound" declared in "simgear/sound/soundmgr.hxx">
     <SGSubsystemMgr : SGSubsystem declared in "simgear/structure/subsystem_mgr.hxx", implemented in "simgear/structure/subsystem_mgr.cxx">
     <SGSubsystemMgr : SGSubsystem staticSubsystemClassId is "subsystem-mgr" declared in "simgear/structure/subsystem_mgr.hxx", implemented in "simgear/structure/subsystem_mgr.cxx">
     <SGTerraSync : SGSubsystem declared in "simgear/scene/tsync/terrasync.hxx", implemented in "simgear/scene/tsync/terrasync.cxx">
     <SGTerraSync : SGSubsystem staticSubsystemClassId is "terrasync" declared in "simgear/scene/tsync/terrasync.hxx", implemented in "simgear/scene/tsync/terrasync.cxx">
     <SlipSkidBall : SGSubsystem declared in "src/Instrumentation/slip_skid_ball.hxx", implemented in "src/Instrumentation/slip_skid_ball.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 declared in "src/Systems/static.hxx", implemented in "src/Systems/static.cxx">
     <StaticSystem : SGSubsystem staticSubsystemClassId is "static" declared in "src/Systems/static.hxx", implemented in "src/Systems/static.cxx">
     <TACAN : SGSubsystem declared in "src/Instrumentation/tacan.hxx", implemented in "src/Instrumentation/tacan.cxx">
     <SwiftConnection : SGSubsystem staticSubsystemClassId is "swift" declared in "src/Network/Swift/swift_connection.hxx", implemented in "src/Network/Swift/swift_connection.cxx">
     <TCAS : SGSubsystem declared in "src/Instrumentation/tcas.hxx", implemented in "src/Instrumentation/tcas.cxx">
     <TACAN : SGSubsystem staticSubsystemClassId is "tacan" declared in "src/Instrumentation/tacan.hxx", implemented in "src/Instrumentation/tacan.cxx">
     <TimeManager : SGSubsystem declared in "src/Time/TimeManager.hxx", implemented in "src/Time/TimeManager.cxx">
     <TCAS : SGSubsystem staticSubsystemClassId is "tcas" declared in "src/Instrumentation/tcas.hxx", implemented in "src/Instrumentation/tcas.cxx">
     <Transponder : SGSubsystem declared in "src/Instrumentation/transponder.hxx", implemented in "src/Instrumentation/transponder.cxx">
     <TimeManager : SGSubsystem staticSubsystemClassId is "time" declared in "src/Time/TimeManager.hxx", implemented in "src/Time/TimeManager.cxx">
     <TurnIndicator : SGSubsystem declared in "src/Instrumentation/turn_indicator.hxx", implemented in "src/Instrumentation/turn_indicator.cxx">
     <TurnIndicator : SGSubsystem staticSubsystemClassId is "turn-indicator" declared in "src/Instrumentation/turn_indicator.hxx", implemented in "src/Instrumentation/turn_indicator.cxx">
     <VacuumSystem : SGSubsystem declared in "src/Systems/vacuum.hxx", implemented in "src/Systems/vacuum.cxx">
     <VacuumSystem : SGSubsystem staticSubsystemClassId is "vacuum" declared in "src/Systems/vacuum.hxx", implemented in "src/Systems/vacuum.cxx">
     <VerticalSpeedIndicator : SGSubsystem declared in "src/Instrumentation/vertical_speed_indicator.hxx", implemented in "src/Instrumentation/vertical_speed_indicator.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 declared in "src/Viewer/view.hxx", implemented in "src/Viewer/view.cxx">
     <View : SGSubsystem staticSubsystemClassId is "view" declared in "src/Viewer/view.hxx", implemented in "src/Viewer/view.cxx">
     <wxRadarBg : SGSubsystem declared in "src/Cockpit/wxradar.hxx", implemented in "src/Cockpit/wxradar.cxx">
     <wxRadarBg : SGSubsystem staticSubsystemClassId is "radar" declared in "src/Cockpit/wxradar.hxx", implemented in "src/Cockpit/wxradar.cxx">


Primary groups (8):
Primary groups (8):
     <Autopilot : SGSubsystemGroup : SGSubsystem declared in "src/Autopilot/autopilot.hxx", implemented in "src/Autopilot/autopilot.cxx">
     <Autopilot : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "autopilot" declared in "src/Autopilot/autopilot.hxx", implemented in "src/Autopilot/autopilot.cxx">
     <CockpitDisplayManager : SGSubsystemGroup : SGSubsystem declared in "src/Cockpit/cockpitDisplayManager.hxx", implemented in "src/Cockpit/cockpitDisplayManager.cxx">
     <CockpitDisplayManager : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "cockpit-displays" declared in "src/Cockpit/cockpitDisplayManager.hxx", implemented in "src/Cockpit/cockpitDisplayManager.cxx">
     <FGEnvironmentMgr : SGSubsystemGroup : SGSubsystem declared in "src/Environment/environment_mgr.hxx", implemented in "src/Environment/environment_mgr.cxx">
     <FGEnvironmentMgr : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "environment" declared in "src/Environment/environment_mgr.hxx", implemented in "src/Environment/environment_mgr.cxx">
     <FGInput : SGSubsystemGroup : SGSubsystem declared in "src/Input/input.hxx", implemented in "src/Input/input.cxx">
     <FGInput : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "input" declared in "src/Input/input.hxx", implemented in "src/Input/input.cxx">
     <FGInstrumentMgr : SGSubsystemGroup : SGSubsystem declared in "src/Instrumentation/instrument_mgr.hxx", implemented in "src/Instrumentation/instrument_mgr.cxx">
     <FGSystemMgr : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "systems" declared in "src/Systems/system_mgr.hxx", implemented in "src/Systems/system_mgr.cxx">
     <FGSystemMgr : SGSubsystemGroup : SGSubsystem 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">
     <FGXMLAutopilotGroup : SGSubsystemGroup : SGSubsystem 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">
     <TerrainSampler : SGSubsystemGroup : SGSubsystem declared in "src/Environment/terrainsampler.hxx">


Secondary subsystems (28):
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">
     <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">
     <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">
     <CanvasMgr : PropertyBasedMgr : SGSubsystem declared in "simgear/canvas/CanvasMgr.hxx", implemented in "simgear/canvas/CanvasMgr.cxx">
     <CommRadioImpl : CommRadio : SGSubsystem declared in "src/Instrumentation/commradio.cxx", implemented in "src/Instrumentation/commradio.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">
     <DigitalComponent : Component : SGSubsystem declared in "src/Autopilot/digitalcomponent.hxx", implemented in "src/Autopilot/digitalcomponent.cxx">
     <FGACMS : FGInterface : SGSubsystem declared in "src/FDM/SP/ACMS.hxx", implemented in "src/FDM/SP/ACMS.cxx">
     <FGACMS : FGInterface : SGSubsystem staticSubsystemClassId is "acms" declared in "src/FDM/SP/ACMS.hxx", implemented in "src/FDM/SP/ACMS.cxx">
     <FGADA : FGInterface : SGSubsystem declared in "src/FDM/SP/ADA.hxx", implemented in "src/FDM/SP/ADA.cxx">
     <FGADA : FGInterface : SGSubsystem staticSubsystemClassId is "ada" declared in "src/FDM/SP/ADA.hxx", implemented in "src/FDM/SP/ADA.cxx">
     <FGAISim : FGInterface : SGSubsystem declared in "src/FDM/SP/AISim.hpp", implemented in "src/FDM/SP/AISim.cpp">
     <FGAISim : FGInterface : SGSubsystem staticSubsystemClassId is "aisim" declared in "src/FDM/SP/AISim.hpp", implemented in "src/FDM/SP/AISim.cpp">
     <FGBalloonSim : FGInterface : SGSubsystem declared in "src/FDM/SP/Balloon.h", implemented in "src/FDM/SP/Balloon.cxx">
     <FGBalloonSim : FGInterface : SGSubsystem staticSubsystemClassId is "balloon" declared in "src/FDM/SP/Balloon.h", implemented in "src/FDM/SP/Balloon.cxx">
     <FGExternalNet : FGInterface : SGSubsystem declared in "src/FDM/ExternalNet/ExternalNet.hxx", implemented in "src/FDM/ExternalNet/ExternalNet.cxx">
     <FGExternalNet : FGInterface : SGSubsystem staticSubsystemClassId is "network" declared in "src/FDM/ExternalNet/ExternalNet.hxx", implemented in "src/FDM/ExternalNet/ExternalNet.cxx">
     <FGExternalPipe : FGInterface : SGSubsystem declared in "src/FDM/ExternalPipe/ExternalPipe.hxx", implemented in "src/FDM/ExternalPipe/ExternalPipe.cxx">
     <FGExternalPipe : FGInterface : SGSubsystem staticSubsystemClassId is "pipe" declared in "src/FDM/ExternalPipe/ExternalPipe.hxx", implemented in "src/FDM/ExternalPipe/ExternalPipe.cxx">
     <FGHIDEventInput : FGEventInput : SGSubsystem declared in "src/Input/FGHIDEventInput.hxx", implemented in "src/Input/FGHIDEventInput.cxx">
     <FGHIDEventInput : FGEventInput : SGSubsystem staticSubsystemClassId is "input-event-hid" declared in "src/Input/FGHIDEventInput.hxx", implemented in "src/Input/FGHIDEventInput.cxx">
     <FGJSBsim : FGInterface : SGSubsystem declared in "src/FDM/JSBSim/JSBSim.hxx", implemented in "src/FDM/JSBSim/JSBSim.cxx">
    <FGInterpolator : PropertyInterpolationMgr : SGSubsystem staticSubsystemClassId is "prop-interpolator" declared in "src/Main/FGInterpolator.hxx", implemented in "src/Main/FGInterpolator.cxx">
     <FGLaRCsim : FGInterface : SGSubsystem declared in "src/FDM/LaRCsim/LaRCsim.hxx", implemented in "src/FDM/LaRCsim/LaRCsim.cxx">
     <FGJSBsim : FGInterface : SGSubsystem staticSubsystemClassId is "jsb" declared in "src/FDM/JSBSim/JSBSim.hxx", implemented in "src/FDM/JSBSim/JSBSim.cxx">
     <FGLinuxEventInput : FGEventInput : SGSubsystem declared in "src/Input/FGLinuxEventInput.hxx", implemented in "src/Input/FGLinuxEventInput.cxx">
     <FGLaRCsim : FGInterface : SGSubsystem staticSubsystemClassId is "larcsim" declared in "src/FDM/LaRCsim/LaRCsim.hxx", implemented in "src/FDM/LaRCsim/LaRCsim.cxx">
     <FGMacOSXEventInput : FGEventInput : SGSubsystem declared in "src/Input/FGMacOSXEventInput.hxx", implemented in "src/Input/FGMacOSXEventInput.cxx">
     <FGLinuxEventInput : FGEventInput : SGSubsystem staticSubsystemClassId is "input-event" declared in "src/Input/FGLinuxEventInput.hxx", implemented in "src/Input/FGLinuxEventInput.cxx">
     <FGMagicCarpet : FGInterface : SGSubsystem declared in "src/FDM/SP/MagicCarpet.hxx", implemented in "src/FDM/SP/MagicCarpet.cxx">
     <FGMacOSXEventInput : FGEventInput : SGSubsystem staticSubsystemClassId is "input-event" declared in "src/Input/FGMacOSXEventInput.hxx", implemented in "src/Input/FGMacOSXEventInput.cxx">
     <FGNullFDM : FGInterface : SGSubsystem declared in "src/FDM/NullFDM.hxx", implemented in "src/FDM/NullFDM.cxx">
     <FGMagicCarpet : FGInterface : SGSubsystem staticSubsystemClassId is "magic" declared in "src/FDM/SP/MagicCarpet.hxx", implemented in "src/FDM/SP/MagicCarpet.cxx">
     <FGReadablePanel : FGPanel : SGSubsystem declared in "utils/fgpanel/panel_io.hxx", implemented in "utils/fgpanel/panel_io.cxx">
    <FGMarkerBeacon : AbstractInstrument : SGSubsystem staticSubsystemClassId is "marker-beacon" declared in "src/Instrumentation/marker_beacon.hxx", implemented in "src/Instrumentation/marker_beacon.cxx">
     <FGSoundManager : SGSoundMgr : SGSubsystem declared in "src/Sound/soundmanager.hxx", implemented in "src/Sound/soundmanager.cxx">
    <FGNavRadio : AbstractInstrument : SGSubsystem staticSubsystemClassId is "old-navradio" declared in "src/Instrumentation/navradio.hxx", implemented in "src/Instrumentation/navradio.cxx">
     <FGUFO : FGInterface : SGSubsystem declared in "src/FDM/UFO.hxx", implemented in "src/FDM/UFO.cxx">
     <FGNullFDM : FGInterface : SGSubsystem staticSubsystemClassId is "null" declared in "src/FDM/NullFDM.hxx", implemented in "src/FDM/NullFDM.cxx">
     <KLN89 : DCLGPS : SGSubsystem declared in "src/Instrumentation/KLN89/kln89.hxx", implemented in "src/Instrumentation/KLN89/kln89.cxx">
     <FGReadablePanel : FGPanel : SGSubsystem staticSubsystemClassId is "readable-panel" declared in "utils/fgpanel/panel_io.hxx", implemented in "utils/fgpanel/panel_io.cxx">
    <LayerInterpolateControllerImplementation : LayerInterpolateController : SGSubsystem declared in "src/Environment/environment_ctrl.cxx", implemented in "src/Environment/environment_ctrl.cxx">
     <FGSoundManager : SGSoundMgr : SGSubsystem staticSubsystemClassId is "sound" declared in "src/Sound/soundmanager.hxx", implemented in "src/Sound/soundmanager.cxx">
     <MongooseHttpd : FGHttpd : SGSubsystem declared in "src/Network/http/httpd.cxx", implemented in "src/Network/http/httpd.cxx">
     <FGUFO : FGInterface : SGSubsystem staticSubsystemClassId is "ufo" declared in "src/FDM/UFO.hxx", implemented in "src/FDM/UFO.cxx">
     <NavRadioImpl : NavRadio : SGSubsystem declared in "src/Instrumentation/newnavradio.cxx", implemented in "src/Instrumentation/newnavradio.cxx">
     <LayerInterpolateControllerImplementation : LayerInterpolateController : SGSubsystem staticSubsystemClassId is "layer-interpolate-controller" declared in "src/Environment/environment_ctrl.cxx", implemented in "src/Environment/environment_ctrl.cxx">
     <StateMachineComponent : Component : SGSubsystem declared in "src/Autopilot/autopilot.cxx", implemented in "src/Autopilot/autopilot.cxx">
     <MongooseHttpd : FGHttpd : SGSubsystem staticSubsystemClassId is "mongoose-httpd" declared in "src/Network/http/httpd.cxx", implemented in "src/Network/http/httpd.cxx">
     <YASim : FGInterface : SGSubsystem declared in "src/FDM/YASim/YASim.hxx", implemented in "src/FDM/YASim/YASim.cxx">
     <StateMachineComponent : Component : SGSubsystem staticSubsystemClassId is "state-machine" declared in "src/Autopilot/autopilot.cxx">
     <agRadar : wxRadarBg : SGSubsystem declared in "src/Cockpit/agradar.hxx", implemented in "src/Cockpit/agradar.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):
Secondary groups (2):
     <FGXMLAutopilotGroupImplementation : FGXMLAutopilotGroup : SGSubsystemGroup : SGSubsystem declared in "src/Autopilot/autopilotgroup.cxx", implemented in "src/Autopilot/autopilotgroup.cxx">
     <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 declared in "src/Environment/terrainsampler.cxx", implemented in "src/Environment/terrainsampler.cxx">
     <TerrainSamplerImplementation : TerrainSampler : SGSubsystemGroup : SGSubsystem staticSubsystemClassId is "terrain-sampler" declared in "src/Environment/terrainsampler.cxx", implemented in "src/Environment/terrainsampler.cxx">


Tertiary subsystems (6):
Tertiary subsystems (7):
     <DigitalFilter : AnalogComponent : Component : SGSubsystem declared in "src/Autopilot/digitalfilter.hxx", implemented in "src/Autopilot/digitalfilter.cxx">
    <CanvasMgr : CanvasMgr : PropertyBasedMgr : SGSubsystem staticSubsystemClassId is "Canvas" declared in "src/Canvas/canvas_mgr.hxx", implemented in "src/Canvas/canvas_mgr.cxx">
     <Logic : DigitalComponent : Component : SGSubsystem declared in "src/Autopilot/logic.hxx", implemented in "src/Autopilot/logic.cxx">
     <DigitalFilter : AnalogComponent : Component : SGSubsystem staticSubsystemClassId is "filter" declared in "src/Autopilot/digitalfilter.hxx", implemented in "src/Autopilot/digitalfilter.cxx">
     <NoaaMetarRealWxController : BasicRealWxController : RealWxController : SGSubsystem declared in "src/Environment/realwx_ctrl.cxx", implemented in "src/Environment/realwx_ctrl.cxx">
     <Logic : DigitalComponent : Component : SGSubsystem staticSubsystemClassId is "logic" declared in "src/Autopilot/logic.hxx", implemented in "src/Autopilot/logic.cxx">
     <PIDController : AnalogComponent : Component : SGSubsystem declared in "src/Autopilot/pidcontroller.hxx", implemented in "src/Autopilot/pidcontroller.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">
     <PISimpleController : AnalogComponent : Component : SGSubsystem declared in "src/Autopilot/pisimplecontroller.hxx", implemented in "src/Autopilot/pisimplecontroller.cxx">
     <PIDController : AnalogComponent : Component : SGSubsystem staticSubsystemClassId is "pid-controller" declared in "src/Autopilot/pidcontroller.hxx", implemented in "src/Autopilot/pidcontroller.cxx">
     <Predictor : AnalogComponent : Component : SGSubsystem declared in "src/Autopilot/predictor.hxx", implemented in "src/Autopilot/predictor.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):
Quaternary subsystems (1):
     <FlipFlop : Logic : DigitalComponent : Component : SGSubsystem declared in "src/Autopilot/flipflop.hxx", implemented in "src/Autopilot/flipflop.cxx">
     <FlipFlop : Logic : DigitalComponent : Component : SGSubsystem staticSubsystemClassId is "flipflop" declared in "src/Autopilot/flipflop.hxx", implemented in "src/Autopilot/flipflop.cxx">


Counts: 126 subsystem classes (117 flightgear, 9 simgear).
Counts: 130 subsystem classes (118 flightgear, 12 simgear).
Counts: 10 subsystem groups (10 flightgear, 0 simgear).
Counts: 10 subsystem groups (9 flightgear, 1 simgear).
Counts: 136 subsystem classes and groups (127 flightgear, 9 simgear).
Counts: 140 subsystem classes and groups (127 flightgear, 13 simgear).
}}
}}


Line 950: Line 1,017:
<?xml version="1.0"?>
<?xml version="1.0"?>
<subsystems>
<subsystems>
   <primary_subsystems count="91">
   <primary_subsystems count="90">
     <ADF>
     <AbstractInstrument>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
       <declaration>src/Instrumentation/adf.hxx</declaration>
       <declaration>src/Instrumentation/AbstractInstrument.hxx</declaration>
       <implementation>src/Instrumentation/adf.cxx</implementation>
       <implementation>src/Instrumentation/AbstractInstrument.cxx</implementation>
     </ADF>
     </AbstractInstrument>
     <AirportDynamicsManager>
     <AirportDynamicsManager>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>airport-dynamics</staticSubsystemClassId>
       <declaration>src/Airports/airportdynamicsmanager.hxx</declaration>
       <declaration>src/Airports/airportdynamicsmanager.hxx</declaration>
       <implementation>src/Airports/airportdynamicsmanager.cxx</implementation>
       <implementation>src/Airports/airportdynamicsmanager.cxx</implementation>
Line 963: Line 1,031:
     <AirspeedIndicator>
     <AirspeedIndicator>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>airspeed-indicator</staticSubsystemClassId>
       <declaration>src/Instrumentation/airspeed_indicator.hxx</declaration>
       <declaration>src/Instrumentation/airspeed_indicator.hxx</declaration>
       <implementation>src/Instrumentation/airspeed_indicator.cxx</implementation>
       <implementation>src/Instrumentation/airspeed_indicator.cxx</implementation>
Line 968: Line 1,037:
     <Altimeter>
     <Altimeter>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>altimeter</staticSubsystemClassId>
       <declaration>src/Instrumentation/altimeter.hxx</declaration>
       <declaration>src/Instrumentation/altimeter.hxx</declaration>
       <implementation>src/Instrumentation/altimeter.cxx</implementation>
       <implementation>src/Instrumentation/altimeter.cxx</implementation>
     </Altimeter>
     </Altimeter>
    <AnotherSub>
      <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>anothersub</staticSubsystemClassId>
      <declaration>simgear/structure/subsystem_test.cxx</declaration>
    </AnotherSub>
     <AreaSampler>
     <AreaSampler>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>area</staticSubsystemClassId>
       <declaration>src/Environment/terrainsampler.cxx</declaration>
       <declaration>src/Environment/terrainsampler.cxx</declaration>
       <implementation>src/Environment/terrainsampler.cxx</implementation>
       <implementation>src/Environment/terrainsampler.cxx</implementation>
Line 978: Line 1,054:
     <AttitudeIndicator>
     <AttitudeIndicator>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>attitude-indicator</staticSubsystemClassId>
       <declaration>src/Instrumentation/attitude_indicator.hxx</declaration>
       <declaration>src/Instrumentation/attitude_indicator.hxx</declaration>
       <implementation>src/Instrumentation/attitude_indicator.cxx</implementation>
       <implementation>src/Instrumentation/attitude_indicator.cxx</implementation>
Line 983: Line 1,060:
     <Clock>
     <Clock>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>clock</staticSubsystemClassId>
       <declaration>src/Instrumentation/clock.hxx</declaration>
       <declaration>src/Instrumentation/clock.hxx</declaration>
       <implementation>src/Instrumentation/clock.cxx</implementation>
       <implementation>src/Instrumentation/clock.cxx</implementation>
     </Clock>
     </Clock>
    <CommRadio>
     <Component>
      <inheritance>SGSubsystem</inheritance>
      <declaration>src/Instrumentation/commradio.hxx</declaration>
    </CommRadio>
     <Component>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
       <declaration>src/Autopilot/component.hxx</declaration>
       <declaration>src/Autopilot/component.hxx</declaration>
       <implementation>src/Autopilot/component.cxx</implementation>
       <implementation>src/Autopilot/component.cxx</implementation>
     </Component>
     </Component>
    <DCLGPS>
      <inheritance>SGSubsystem</inheritance>
      <declaration>src/Instrumentation/dclgps.hxx</declaration>
      <implementation>src/Instrumentation/dclgps.cxx</implementation>
    </DCLGPS>
    <DME>
      <inheritance>SGSubsystem</inheritance>
      <declaration>src/Instrumentation/dme.hxx</declaration>
      <implementation>src/Instrumentation/dme.cxx</implementation>
    </DME>
     <Ephemeris>
     <Ephemeris>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>ephemeris</staticSubsystemClassId>
       <declaration>src/Environment/ephemeris.hxx</declaration>
       <declaration>src/Environment/ephemeris.hxx</declaration>
       <implementation>src/Environment/ephemeris.cxx</implementation>
       <implementation>src/Environment/ephemeris.cxx</implementation>
Line 1,012: Line 1,077:
     <FDMShell>
     <FDMShell>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>flight</staticSubsystemClassId>
       <declaration>src/FDM/fdm_shell.hxx</declaration>
       <declaration>src/FDM/fdm_shell.hxx</declaration>
       <implementation>src/FDM/fdm_shell.cxx</implementation>
       <implementation>src/FDM/fdm_shell.cxx</implementation>
Line 1,017: Line 1,083:
     <FGAIManager>
     <FGAIManager>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>ai-model</staticSubsystemClassId>
       <declaration>src/AIModel/AIManager.hxx</declaration>
       <declaration>src/AIModel/AIManager.hxx</declaration>
       <implementation>src/AIModel/AIManager.cxx</implementation>
       <implementation>src/AIModel/AIManager.cxx</implementation>
Line 1,022: Line 1,089:
     <FGATCManager>
     <FGATCManager>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>ATC</staticSubsystemClassId>
       <declaration>src/ATC/atc_mgr.hxx</declaration>
       <declaration>src/ATC/atc_mgr.hxx</declaration>
       <implementation>src/ATC/atc_mgr.cxx</implementation>
       <implementation>src/ATC/atc_mgr.cxx</implementation>
Line 1,027: Line 1,095:
     <FGAircraftModel>
     <FGAircraftModel>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>aircraft-model</staticSubsystemClassId>
       <declaration>src/Model/acmodel.hxx</declaration>
       <declaration>src/Model/acmodel.hxx</declaration>
       <implementation>src/Model/acmodel.cxx</implementation>
       <implementation>src/Model/acmodel.cxx</implementation>
Line 1,032: Line 1,101:
     <FGCom>
     <FGCom>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>fgcom</staticSubsystemClassId>
       <declaration>src/Network/fgcom.hxx</declaration>
       <declaration>src/Network/fgcom.hxx</declaration>
       <implementation>src/Network/fgcom.cxx</implementation>
       <implementation>src/Network/fgcom.cxx</implementation>
Line 1,037: Line 1,107:
     <FGControls>
     <FGControls>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>controls</staticSubsystemClassId>
       <declaration>src/Aircraft/controls.hxx</declaration>
       <declaration>src/Aircraft/controls.hxx</declaration>
       <implementation>src/Aircraft/controls.cxx</implementation>
       <implementation>src/Aircraft/controls.cxx</implementation>
Line 1,042: Line 1,113:
     <FGDNSClient>
     <FGDNSClient>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>dns</staticSubsystemClassId>
       <declaration>src/Network/DNSClient.hxx</declaration>
       <declaration>src/Network/DNSClient.hxx</declaration>
       <implementation>src/Network/DNSClient.cxx</implementation>
       <implementation>src/Network/DNSClient.cxx</implementation>
Line 1,047: Line 1,119:
     <FGElectricalSystem>
     <FGElectricalSystem>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>electrical</staticSubsystemClassId>
       <declaration>src/Systems/electrical.hxx</declaration>
       <declaration>src/Systems/electrical.hxx</declaration>
       <implementation>src/Systems/electrical.cxx</implementation>
       <implementation>src/Systems/electrical.cxx</implementation>
Line 1,057: Line 1,130:
     <FGFlightHistory>
     <FGFlightHistory>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>history</staticSubsystemClassId>
       <declaration>src/Aircraft/FlightHistory.hxx</declaration>
       <declaration>src/Aircraft/FlightHistory.hxx</declaration>
       <implementation>src/Aircraft/FlightHistory.cxx</implementation>
       <implementation>src/Aircraft/FlightHistory.cxx</implementation>
Line 1,062: Line 1,136:
     <FGHTTPClient>
     <FGHTTPClient>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>http</staticSubsystemClassId>
       <declaration>src/Network/HTTPClient.hxx</declaration>
       <declaration>src/Network/HTTPClient.hxx</declaration>
       <implementation>src/Network/HTTPClient.cxx</implementation>
       <implementation>src/Network/HTTPClient.cxx</implementation>
Line 1,067: Line 1,142:
     <FGHttpd>
     <FGHttpd>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>httpd</staticSubsystemClassId>
       <declaration>src/Network/http/httpd.hxx</declaration>
       <declaration>src/Network/http/httpd.hxx</declaration>
     </FGHttpd>
     </FGHttpd>
     <FGIO>
     <FGIO>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>io</staticSubsystemClassId>
       <declaration>src/Main/fg_io.hxx</declaration>
       <declaration>src/Main/fg_io.hxx</declaration>
       <implementation>src/Main/fg_io.cxx</implementation>
       <implementation>src/Main/fg_io.cxx</implementation>
     </FGIO>
     </FGIO>
    <FGInstrumentMgr>
      <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>instrumentation</staticSubsystemClassId>
      <declaration>src/Instrumentation/instrument_mgr.hxx</declaration>
      <implementation>src/Instrumentation/instrument_mgr.cxx</implementation>
    </FGInstrumentMgr>
     <FGInterface>
     <FGInterface>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
Line 1,081: Line 1,164:
     <FGJoystickInput>
     <FGJoystickInput>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>input-joystick</staticSubsystemClassId>
       <declaration>src/Input/FGJoystickInput.hxx</declaration>
       <declaration>src/Input/FGJoystickInput.hxx</declaration>
       <implementation>src/Input/FGJoystickInput.cxx</implementation>
       <implementation>src/Input/FGJoystickInput.cxx</implementation>
Line 1,086: Line 1,170:
     <FGKR_87>
     <FGKR_87>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>KR-87</staticSubsystemClassId>
       <declaration>src/Instrumentation/kr_87.hxx</declaration>
       <declaration>src/Instrumentation/kr_87.hxx</declaration>
       <implementation>src/Instrumentation/kr_87.cxx</implementation>
       <implementation>src/Instrumentation/kr_87.cxx</implementation>
Line 1,091: Line 1,176:
     <FGKeyboardInput>
     <FGKeyboardInput>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>input-keyboard</staticSubsystemClassId>
       <declaration>src/Input/FGKeyboardInput.hxx</declaration>
       <declaration>src/Input/FGKeyboardInput.hxx</declaration>
       <implementation>src/Input/FGKeyboardInput.cxx</implementation>
       <implementation>src/Input/FGKeyboardInput.cxx</implementation>
Line 1,096: Line 1,182:
     <FGLight>
     <FGLight>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>lighting</staticSubsystemClassId>
       <declaration>src/Time/light.hxx</declaration>
       <declaration>src/Time/light.hxx</declaration>
       <implementation>src/Time/light.cxx</implementation>
       <implementation>src/Time/light.cxx</implementation>
Line 1,101: Line 1,188:
     <FGLogger>
     <FGLogger>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>logger</staticSubsystemClassId>
       <declaration>src/Main/logger.hxx</declaration>
       <declaration>src/Main/logger.hxx</declaration>
       <implementation>src/Main/logger.cxx</implementation>
       <implementation>src/Main/logger.cxx</implementation>
Line 1,106: Line 1,194:
     <FGMagVarManager>
     <FGMagVarManager>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>magvar</staticSubsystemClassId>
       <declaration>src/Environment/magvarmanager.hxx</declaration>
       <declaration>src/Environment/magvarmanager.hxx</declaration>
       <implementation>src/Environment/magvarmanager.cxx</implementation>
       <implementation>src/Environment/magvarmanager.cxx</implementation>
     </FGMagVarManager>
     </FGMagVarManager>
    <FGMarkerBeacon>
      <inheritance>SGSubsystem</inheritance>
      <declaration>src/Instrumentation/marker_beacon.hxx</declaration>
      <implementation>src/Instrumentation/marker_beacon.cxx</implementation>
    </FGMarkerBeacon>
     <FGModelMgr>
     <FGModelMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>model-manager</staticSubsystemClassId>
       <declaration>src/Model/modelmgr.hxx</declaration>
       <declaration>src/Model/modelmgr.hxx</declaration>
       <implementation>src/Model/modelmgr.cxx</implementation>
       <implementation>src/Model/modelmgr.cxx</implementation>
Line 1,121: Line 1,206:
     <FGMouseInput>
     <FGMouseInput>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>input-mouse</staticSubsystemClassId>
       <declaration>src/Input/FGMouseInput.hxx</declaration>
       <declaration>src/Input/FGMouseInput.hxx</declaration>
       <implementation>src/Input/FGMouseInput.cxx</implementation>
       <implementation>src/Input/FGMouseInput.cxx</implementation>
Line 1,126: Line 1,212:
     <FGMultiplayMgr>
     <FGMultiplayMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>mp</staticSubsystemClassId>
       <declaration>src/MultiPlayer/multiplaymgr.hxx</declaration>
       <declaration>src/MultiPlayer/multiplaymgr.hxx</declaration>
       <implementation>src/MultiPlayer/multiplaymgr.cxx</implementation>
       <implementation>src/MultiPlayer/multiplaymgr.cxx</implementation>
Line 1,131: Line 1,218:
     <FGNasalSys>
     <FGNasalSys>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>nasal</staticSubsystemClassId>
       <declaration>src/Scripting/NasalSys.hxx</declaration>
       <declaration>src/Scripting/NasalSys.hxx</declaration>
       <implementation>src/Scripting/NasalSys.cxx</implementation>
       <implementation>src/Scripting/NasalSys.cxx</implementation>
     </FGNasalSys>
     </FGNasalSys>
    <FGNavRadio>
      <inheritance>SGSubsystem</inheritance>
      <declaration>src/Instrumentation/navradio.hxx</declaration>
      <implementation>src/Instrumentation/navradio.cxx</implementation>
    </FGNavRadio>
     <FGPanel>
     <FGPanel>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>panel</staticSubsystemClassId>
       <declaration>utils/fgpanel/FGPanel.hxx</declaration>
       <declaration>utils/fgpanel/FGPanel.hxx</declaration>
       <implementation>utils/fgpanel/FGPanel.cxx</implementation>
       <implementation>utils/fgpanel/FGPanel.cxx</implementation>
Line 1,146: Line 1,230:
     <FGPanelProtocol>
     <FGPanelProtocol>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>panel-protocol</staticSubsystemClassId>
       <declaration>utils/fgpanel/FGPanelProtocol.hxx</declaration>
       <declaration>utils/fgpanel/FGPanelProtocol.hxx</declaration>
       <implementation>utils/fgpanel/FGPanelProtocol.cxx</implementation>
       <implementation>utils/fgpanel/FGPanelProtocol.cxx</implementation>
Line 1,151: Line 1,236:
     <FGPrecipitationMgr>
     <FGPrecipitationMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>precipitation</staticSubsystemClassId>
       <declaration>src/Environment/precipitation_mgr.hxx</declaration>
       <declaration>src/Environment/precipitation_mgr.hxx</declaration>
       <implementation>src/Environment/precipitation_mgr.cxx</implementation>
       <implementation>src/Environment/precipitation_mgr.cxx</implementation>
Line 1,156: Line 1,242:
     <FGProperties>
     <FGProperties>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>properties</staticSubsystemClassId>
       <declaration>src/Main/fg_props.hxx</declaration>
       <declaration>src/Main/fg_props.hxx</declaration>
       <implementation>src/Main/fg_props.cxx</implementation>
       <implementation>src/Main/fg_props.cxx</implementation>
Line 1,161: Line 1,248:
     <FGReplay>
     <FGReplay>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>replay</staticSubsystemClassId>
       <declaration>src/Aircraft/replay.hxx</declaration>
       <declaration>src/Aircraft/replay.hxx</declaration>
       <implementation>src/Aircraft/replay.cxx</implementation>
       <implementation>src/Aircraft/replay.cxx</implementation>
Line 1,166: Line 1,254:
     <FGRidgeLift>
     <FGRidgeLift>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>ridgelift</staticSubsystemClassId>
       <declaration>src/Environment/ridge_lift.hxx</declaration>
       <declaration>src/Environment/ridge_lift.hxx</declaration>
       <implementation>src/Environment/ridge_lift.cxx</implementation>
       <implementation>src/Environment/ridge_lift.cxx</implementation>
Line 1,171: Line 1,260:
     <FGRouteMgr>
     <FGRouteMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>route-manager</staticSubsystemClassId>
       <declaration>src/Autopilot/route_mgr.hxx</declaration>
       <declaration>src/Autopilot/route_mgr.hxx</declaration>
       <implementation>src/Autopilot/route_mgr.cxx</implementation>
       <implementation>src/Autopilot/route_mgr.cxx</implementation>
Line 1,176: Line 1,266:
     <FGScenery>
     <FGScenery>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>scenery</staticSubsystemClassId>
       <declaration>src/Scenery/scenery.hxx</declaration>
       <declaration>src/Scenery/scenery.hxx</declaration>
       <implementation>src/Scenery/scenery.cxx</implementation>
       <implementation>src/Scenery/scenery.cxx</implementation>
Line 1,181: Line 1,272:
     <FGSoundManager>
     <FGSoundManager>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>sound</staticSubsystemClassId>
       <declaration>src/Sound/soundmanager.hxx</declaration>
       <declaration>src/Sound/soundmanager.hxx</declaration>
       <implementation>src/Sound/soundmanager.cxx</implementation>
       <implementation>src/Sound/soundmanager.cxx</implementation>
Line 1,186: Line 1,278:
     <FGSubmodelMgr>
     <FGSubmodelMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>submodel-mgr</staticSubsystemClassId>
       <declaration>src/AIModel/submodel.hxx</declaration>
       <declaration>src/AIModel/submodel.hxx</declaration>
       <implementation>src/AIModel/submodel.cxx</implementation>
       <implementation>src/AIModel/submodel.cxx</implementation>
Line 1,192: Line 1,285:
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
       <declaration>docs-mini/README.introduction</declaration>
       <declaration>docs-mini/README.introduction</declaration>
      <implementation>docs-mini/README.introduction</implementation>
     </FGSubsystemExample>
     </FGSubsystemExample>
     <FGTrafficManager>
     <FGTrafficManager>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>traffic-manager</staticSubsystemClassId>
       <declaration>src/Traffic/TrafficMgr.hxx</declaration>
       <declaration>src/Traffic/TrafficMgr.hxx</declaration>
       <implementation>src/Traffic/TrafficMgr.cxx</implementation>
       <implementation>src/Traffic/TrafficMgr.cxx</implementation>
Line 1,201: Line 1,294:
     <FGViewMgr>
     <FGViewMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>view-manager</staticSubsystemClassId>
       <declaration>src/Viewer/viewmgr.hxx</declaration>
       <declaration>src/Viewer/viewmgr.hxx</declaration>
       <implementation>src/Viewer/viewmgr.cxx</implementation>
       <implementation>src/Viewer/viewmgr.cxx</implementation>
Line 1,206: Line 1,300:
     <FGVoiceMgr>
     <FGVoiceMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>voice</staticSubsystemClassId>
       <declaration>src/Sound/voice.hxx</declaration>
       <declaration>src/Sound/voice.hxx</declaration>
       <implementation>src/Sound/voice.cxx</implementation>
       <implementation>src/Sound/voice.cxx</implementation>
     </FGVoiceMgr>
     </FGVoiceMgr>
    <FakeRadioSub>
      <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>fake-radio</staticSubsystemClassId>
      <declaration>simgear/structure/subsystem_test.cxx</declaration>
    </FakeRadioSub>
     <GPS>
     <GPS>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>gps</staticSubsystemClassId>
       <declaration>src/Instrumentation/gps.hxx</declaration>
       <declaration>src/Instrumentation/gps.hxx</declaration>
       <implementation>src/Instrumentation/gps.cxx</implementation>
       <implementation>src/Instrumentation/gps.cxx</implementation>
Line 1,216: Line 1,317:
     <GSDI>
     <GSDI>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>gsdi</staticSubsystemClassId>
       <declaration>src/Instrumentation/gsdi.hxx</declaration>
       <declaration>src/Instrumentation/gsdi.hxx</declaration>
       <implementation>src/Instrumentation/gsdi.cxx</implementation>
       <implementation>src/Instrumentation/gsdi.cxx</implementation>
Line 1,221: Line 1,323:
     <GUIMgr>
     <GUIMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>CanvasGUI</staticSubsystemClassId>
       <declaration>src/Canvas/gui_mgr.hxx</declaration>
       <declaration>src/Canvas/gui_mgr.hxx</declaration>
       <implementation>src/Canvas/gui_mgr.cxx</implementation>
       <implementation>src/Canvas/gui_mgr.cxx</implementation>
Line 1,226: Line 1,329:
     <GroundRadar>
     <GroundRadar>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>groundradar</staticSubsystemClassId>
       <declaration>src/Cockpit/groundradar.hxx</declaration>
       <declaration>src/Cockpit/groundradar.hxx</declaration>
       <implementation>src/Cockpit/groundradar.cxx</implementation>
       <implementation>src/Cockpit/groundradar.cxx</implementation>
Line 1,231: Line 1,335:
     <HUD>
     <HUD>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>hud</staticSubsystemClassId>
       <declaration>src/Instrumentation/HUD/HUD.hxx</declaration>
       <declaration>src/Instrumentation/HUD/HUD.hxx</declaration>
       <implementation>src/Instrumentation/HUD/HUD.cxx</implementation>
       <implementation>src/Instrumentation/HUD/HUD.cxx</implementation>
Line 1,236: Line 1,341:
     <HeadingIndicator>
     <HeadingIndicator>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>heading-indicator</staticSubsystemClassId>
       <declaration>src/Instrumentation/heading_indicator.hxx</declaration>
       <declaration>src/Instrumentation/heading_indicator.hxx</declaration>
       <implementation>src/Instrumentation/heading_indicator.cxx</implementation>
       <implementation>src/Instrumentation/heading_indicator.cxx</implementation>
Line 1,241: Line 1,347:
     <HeadingIndicatorDG>
     <HeadingIndicatorDG>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>heading-indicator-dg</staticSubsystemClassId>
       <declaration>src/Instrumentation/heading_indicator_dg.hxx</declaration>
       <declaration>src/Instrumentation/heading_indicator_dg.hxx</declaration>
       <implementation>src/Instrumentation/heading_indicator_dg.cxx</implementation>
       <implementation>src/Instrumentation/heading_indicator_dg.cxx</implementation>
Line 1,246: Line 1,353:
     <HeadingIndicatorFG>
     <HeadingIndicatorFG>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>heading-indicator-fg</staticSubsystemClassId>
       <declaration>src/Instrumentation/heading_indicator_fg.hxx</declaration>
       <declaration>src/Instrumentation/heading_indicator_fg.hxx</declaration>
       <implementation>src/Instrumentation/heading_indicator_fg.cxx</implementation>
       <implementation>src/Instrumentation/heading_indicator_fg.cxx</implementation>
Line 1,251: Line 1,359:
     <InstVerticalSpeedIndicator>
     <InstVerticalSpeedIndicator>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>inst-vertical-speed-indicator</staticSubsystemClassId>
       <declaration>src/Instrumentation/inst_vertical_speed_indicator.hxx</declaration>
       <declaration>src/Instrumentation/inst_vertical_speed_indicator.hxx</declaration>
       <implementation>src/Instrumentation/inst_vertical_speed_indicator.cxx</implementation>
       <implementation>src/Instrumentation/inst_vertical_speed_indicator.cxx</implementation>
Line 1,260: Line 1,369:
     <MK_VIII>
     <MK_VIII>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>mk-viii</staticSubsystemClassId>
       <declaration>src/Instrumentation/mk_viii.hxx</declaration>
       <declaration>src/Instrumentation/mk_viii.hxx</declaration>
       <implementation>src/Instrumentation/mk_viii.cxx</implementation>
       <implementation>src/Instrumentation/mk_viii.cxx</implementation>
Line 1,265: Line 1,375:
     <MagCompass>
     <MagCompass>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>magnetic-compass</staticSubsystemClassId>
       <declaration>src/Instrumentation/mag_compass.hxx</declaration>
       <declaration>src/Instrumentation/mag_compass.hxx</declaration>
       <implementation>src/Instrumentation/mag_compass.cxx</implementation>
       <implementation>src/Instrumentation/mag_compass.cxx</implementation>
Line 1,270: Line 1,381:
     <MasterReferenceGyro>
     <MasterReferenceGyro>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>master-reference-gyro</staticSubsystemClassId>
       <declaration>src/Instrumentation/mrg.hxx</declaration>
       <declaration>src/Instrumentation/mrg.hxx</declaration>
       <implementation>src/Instrumentation/mrg.cxx</implementation>
       <implementation>src/Instrumentation/mrg.cxx</implementation>
     </MasterReferenceGyro>
     </MasterReferenceGyro>
    <MySub1>
      <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>mysub</staticSubsystemClassId>
      <declaration>simgear/structure/subsystem_test.cxx</declaration>
    </MySub1>
     <NavDisplay>
     <NavDisplay>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>navigation-display</staticSubsystemClassId>
       <declaration>src/Cockpit/NavDisplay.hxx</declaration>
       <declaration>src/Cockpit/NavDisplay.hxx</declaration>
       <implementation>src/Cockpit/NavDisplay.cxx</implementation>
       <implementation>src/Cockpit/NavDisplay.cxx</implementation>
Line 1,280: Line 1,398:
     <NavRadio>
     <NavRadio>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>nav-radio</staticSubsystemClassId>
       <declaration>src/Instrumentation/newnavradio.hxx</declaration>
       <declaration>src/Instrumentation/newnavradio.hxx</declaration>
      <implementation>src/Instrumentation/newnavradio.cxx</implementation>
     </NavRadio>
     </NavRadio>
     <NewGUI>
     <NewGUI>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>gui</staticSubsystemClassId>
       <declaration>src/GUI/new_gui.hxx</declaration>
       <declaration>src/GUI/new_gui.hxx</declaration>
       <implementation>src/GUI/new_gui.cxx</implementation>
       <implementation>src/GUI/new_gui.cxx</implementation>
Line 1,289: Line 1,410:
     <PerformanceDB>
     <PerformanceDB>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>aircraft-performance-db</staticSubsystemClassId>
       <declaration>src/AIModel/performancedb.hxx</declaration>
       <declaration>src/AIModel/performancedb.hxx</declaration>
       <implementation>src/AIModel/performancedb.cxx</implementation>
       <implementation>src/AIModel/performancedb.cxx</implementation>
Line 1,294: Line 1,416:
     <PitotSystem>
     <PitotSystem>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>pitot</staticSubsystemClassId>
       <declaration>src/Systems/pitot.hxx</declaration>
       <declaration>src/Systems/pitot.hxx</declaration>
       <implementation>src/Systems/pitot.cxx</implementation>
       <implementation>src/Systems/pitot.cxx</implementation>
Line 1,309: Line 1,432:
     <RadarAltimeter>
     <RadarAltimeter>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>radar-altimeter</staticSubsystemClassId>
       <declaration>src/Instrumentation/rad_alt.hxx</declaration>
       <declaration>src/Instrumentation/rad_alt.hxx</declaration>
       <implementation>src/Instrumentation/rad_alt.cxx</implementation>
       <implementation>src/Instrumentation/rad_alt.cxx</implementation>
Line 1,319: Line 1,443:
     <SGEventMgr>
     <SGEventMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>events</staticSubsystemClassId>
       <declaration>simgear/structure/event_mgr.hxx</declaration>
       <declaration>simgear/structure/event_mgr.hxx</declaration>
       <implementation>simgear/structure/event_mgr.cxx</implementation>
       <implementation>simgear/structure/event_mgr.cxx</implementation>
Line 1,324: Line 1,449:
     <SGInterpolator>
     <SGInterpolator>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>interpolator</staticSubsystemClassId>
       <declaration>simgear/misc/interpolator.hxx</declaration>
       <declaration>simgear/misc/interpolator.hxx</declaration>
       <implementation>simgear/misc/interpolator.cxx</implementation>
       <implementation>simgear/misc/interpolator.cxx</implementation>
Line 1,329: Line 1,455:
     <SGPerformanceMonitor>
     <SGPerformanceMonitor>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>performance-mon</staticSubsystemClassId>
       <declaration>simgear/structure/SGPerfMon.hxx</declaration>
       <declaration>simgear/structure/SGPerfMon.hxx</declaration>
       <implementation>simgear/structure/SGPerfMon.cxx</implementation>
       <implementation>simgear/structure/SGPerfMon.cxx</implementation>
Line 1,334: Line 1,461:
     <SGSoundMgr>
     <SGSoundMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>sound</staticSubsystemClassId>
       <declaration>simgear/sound/soundmgr.hxx</declaration>
       <declaration>simgear/sound/soundmgr.hxx</declaration>
     </SGSoundMgr>
     </SGSoundMgr>
     <SGSubsystemMgr>
     <SGSubsystemMgr>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>subsystem-mgr</staticSubsystemClassId>
       <declaration>simgear/structure/subsystem_mgr.hxx</declaration>
       <declaration>simgear/structure/subsystem_mgr.hxx</declaration>
       <implementation>simgear/structure/subsystem_mgr.cxx</implementation>
       <implementation>simgear/structure/subsystem_mgr.cxx</implementation>
Line 1,343: Line 1,472:
     <SGTerraSync>
     <SGTerraSync>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>terrasync</staticSubsystemClassId>
       <declaration>simgear/scene/tsync/terrasync.hxx</declaration>
       <declaration>simgear/scene/tsync/terrasync.hxx</declaration>
       <implementation>simgear/scene/tsync/terrasync.cxx</implementation>
       <implementation>simgear/scene/tsync/terrasync.cxx</implementation>
Line 1,348: Line 1,478:
     <SlipSkidBall>
     <SlipSkidBall>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>slip-skid-ball</staticSubsystemClassId>
       <declaration>src/Instrumentation/slip_skid_ball.hxx</declaration>
       <declaration>src/Instrumentation/slip_skid_ball.hxx</declaration>
       <implementation>src/Instrumentation/slip_skid_ball.cxx</implementation>
       <implementation>src/Instrumentation/slip_skid_ball.cxx</implementation>
Line 1,353: Line 1,484:
     <StaticSystem>
     <StaticSystem>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>static</staticSubsystemClassId>
       <declaration>src/Systems/static.hxx</declaration>
       <declaration>src/Systems/static.hxx</declaration>
       <implementation>src/Systems/static.cxx</implementation>
       <implementation>src/Systems/static.cxx</implementation>
     </StaticSystem>
     </StaticSystem>
    <SwiftConnection>
      <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>swift</staticSubsystemClassId>
      <declaration>src/Network/Swift/swift_connection.hxx</declaration>
      <implementation>src/Network/Swift/swift_connection.cxx</implementation>
    </SwiftConnection>
     <TACAN>
     <TACAN>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>tacan</staticSubsystemClassId>
       <declaration>src/Instrumentation/tacan.hxx</declaration>
       <declaration>src/Instrumentation/tacan.hxx</declaration>
       <implementation>src/Instrumentation/tacan.cxx</implementation>
       <implementation>src/Instrumentation/tacan.cxx</implementation>
Line 1,363: Line 1,502:
     <TCAS>
     <TCAS>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>tcas</staticSubsystemClassId>
       <declaration>src/Instrumentation/tcas.hxx</declaration>
       <declaration>src/Instrumentation/tcas.hxx</declaration>
       <implementation>src/Instrumentation/tcas.cxx</implementation>
       <implementation>src/Instrumentation/tcas.cxx</implementation>
Line 1,368: Line 1,508:
     <TimeManager>
     <TimeManager>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>time</staticSubsystemClassId>
       <declaration>src/Time/TimeManager.hxx</declaration>
       <declaration>src/Time/TimeManager.hxx</declaration>
       <implementation>src/Time/TimeManager.cxx</implementation>
       <implementation>src/Time/TimeManager.cxx</implementation>
     </TimeManager>
     </TimeManager>
    <Transponder>
     <TurnIndicator>
      <inheritance>SGSubsystem</inheritance>
      <declaration>src/Instrumentation/transponder.hxx</declaration>
      <implementation>src/Instrumentation/transponder.cxx</implementation>
    </Transponder>
     <TurnIndicator>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>turn-indicator</staticSubsystemClassId>
       <declaration>src/Instrumentation/turn_indicator.hxx</declaration>
       <declaration>src/Instrumentation/turn_indicator.hxx</declaration>
       <implementation>src/Instrumentation/turn_indicator.cxx</implementation>
       <implementation>src/Instrumentation/turn_indicator.cxx</implementation>
Line 1,383: Line 1,520:
     <VacuumSystem>
     <VacuumSystem>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>vacuum</staticSubsystemClassId>
       <declaration>src/Systems/vacuum.hxx</declaration>
       <declaration>src/Systems/vacuum.hxx</declaration>
       <implementation>src/Systems/vacuum.cxx</implementation>
       <implementation>src/Systems/vacuum.cxx</implementation>
Line 1,388: Line 1,526:
     <VerticalSpeedIndicator>
     <VerticalSpeedIndicator>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>vertical-speed-indicator</staticSubsystemClassId>
       <declaration>src/Instrumentation/vertical_speed_indicator.hxx</declaration>
       <declaration>src/Instrumentation/vertical_speed_indicator.hxx</declaration>
       <implementation>src/Instrumentation/vertical_speed_indicator.cxx</implementation>
       <implementation>src/Instrumentation/vertical_speed_indicator.cxx</implementation>
Line 1,393: Line 1,532:
     <View>
     <View>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>view</staticSubsystemClassId>
       <declaration>src/Viewer/view.hxx</declaration>
       <declaration>src/Viewer/view.hxx</declaration>
       <implementation>src/Viewer/view.cxx</implementation>
       <implementation>src/Viewer/view.cxx</implementation>
Line 1,398: Line 1,538:
     <wxRadarBg>
     <wxRadarBg>
       <inheritance>SGSubsystem</inheritance>
       <inheritance>SGSubsystem</inheritance>
      <staticSubsystemClassId>radar</staticSubsystemClassId>
       <declaration>src/Cockpit/wxradar.hxx</declaration>
       <declaration>src/Cockpit/wxradar.hxx</declaration>
       <implementation>src/Cockpit/wxradar.cxx</implementation>
       <implementation>src/Cockpit/wxradar.cxx</implementation>
Line 1,405: Line 1,546:
     <Autopilot>
     <Autopilot>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>autopilot</staticSubsystemClassId>
       <declaration>src/Autopilot/autopilot.hxx</declaration>
       <declaration>src/Autopilot/autopilot.hxx</declaration>
       <implementation>src/Autopilot/autopilot.cxx</implementation>
       <implementation>src/Autopilot/autopilot.cxx</implementation>
Line 1,410: Line 1,552:
     <CockpitDisplayManager>
     <CockpitDisplayManager>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>cockpit-displays</staticSubsystemClassId>
       <declaration>src/Cockpit/cockpitDisplayManager.hxx</declaration>
       <declaration>src/Cockpit/cockpitDisplayManager.hxx</declaration>
       <implementation>src/Cockpit/cockpitDisplayManager.cxx</implementation>
       <implementation>src/Cockpit/cockpitDisplayManager.cxx</implementation>
Line 1,415: Line 1,558:
     <FGEnvironmentMgr>
     <FGEnvironmentMgr>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>environment</staticSubsystemClassId>
       <declaration>src/Environment/environment_mgr.hxx</declaration>
       <declaration>src/Environment/environment_mgr.hxx</declaration>
       <implementation>src/Environment/environment_mgr.cxx</implementation>
       <implementation>src/Environment/environment_mgr.cxx</implementation>
Line 1,420: Line 1,564:
     <FGInput>
     <FGInput>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>input</staticSubsystemClassId>
       <declaration>src/Input/input.hxx</declaration>
       <declaration>src/Input/input.hxx</declaration>
       <implementation>src/Input/input.cxx</implementation>
       <implementation>src/Input/input.cxx</implementation>
     </FGInput>
     </FGInput>
    <FGInstrumentMgr>
      <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
      <declaration>src/Instrumentation/instrument_mgr.hxx</declaration>
      <implementation>src/Instrumentation/instrument_mgr.cxx</implementation>
    </FGInstrumentMgr>
     <FGSystemMgr>
     <FGSystemMgr>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>systems</staticSubsystemClassId>
       <declaration>src/Systems/system_mgr.hxx</declaration>
       <declaration>src/Systems/system_mgr.hxx</declaration>
       <implementation>src/Systems/system_mgr.cxx</implementation>
       <implementation>src/Systems/system_mgr.cxx</implementation>
Line 1,435: Line 1,576:
     <FGXMLAutopilotGroup>
     <FGXMLAutopilotGroup>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>xml-rules</staticSubsystemClassId>
       <declaration>src/Autopilot/autopilotgroup.hxx</declaration>
       <declaration>src/Autopilot/autopilotgroup.hxx</declaration>
       <implementation>src/Autopilot/autopilotgroup.cxx</implementation>
       <implementation>src/Autopilot/autopilotgroup.cxx</implementation>
     </FGXMLAutopilotGroup>
     </FGXMLAutopilotGroup>
    <InstrumentGroup>
      <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>instruments</staticSubsystemClassId>
      <declaration>simgear/structure/subsystem_test.cxx</declaration>
    </InstrumentGroup>
     <TerrainSampler>
     <TerrainSampler>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>SGSubsystemGroup : SGSubsystem</inheritance>
Line 1,443: Line 1,590:
     </TerrainSampler>
     </TerrainSampler>
   </primary_groups>
   </primary_groups>
   <secondary_subsystems count="28">
   <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>
     <AnalogComponent>
       <inheritance>Component : SGSubsystem</inheritance>
       <inheritance>Component : SGSubsystem</inheritance>
Line 1,459: Line 1,612:
       <implementation>simgear/canvas/CanvasMgr.cxx</implementation>
       <implementation>simgear/canvas/CanvasMgr.cxx</implementation>
     </CanvasMgr>
     </CanvasMgr>
     <CommRadioImpl>
     <CommRadio>
       <inheritance>CommRadio : SGSubsystem</inheritance>
       <inheritance>AbstractInstrument : SGSubsystem</inheritance>
       <declaration>src/Instrumentation/commradio.cxx</declaration>
      <staticSubsystemClassId>comm-radio</staticSubsystemClassId>
       <declaration>src/Instrumentation/commradio.hxx</declaration>
       <implementation>src/Instrumentation/commradio.cxx</implementation>
       <implementation>src/Instrumentation/commradio.cxx</implementation>
     </CommRadioImpl>
     </CommRadio>
    <DME>
      <inheritance>AbstractInstrument : SGSubsystem</inheritance>
      <staticSubsystemClassId>dme</staticSubsystemClassId>
      <declaration>src/Instrumentation/dme.hxx</declaration>
      <implementation>src/Instrumentation/dme.cxx</implementation>
    </DME>
     <DigitalComponent>
     <DigitalComponent>
       <inheritance>Component : SGSubsystem</inheritance>
       <inheritance>Component : SGSubsystem</inheritance>
Line 1,471: Line 1,631:
     <FGACMS>
     <FGACMS>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>acms</staticSubsystemClassId>
       <declaration>src/FDM/SP/ACMS.hxx</declaration>
       <declaration>src/FDM/SP/ACMS.hxx</declaration>
       <implementation>src/FDM/SP/ACMS.cxx</implementation>
       <implementation>src/FDM/SP/ACMS.cxx</implementation>
Line 1,476: Line 1,637:
     <FGADA>
     <FGADA>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>ada</staticSubsystemClassId>
       <declaration>src/FDM/SP/ADA.hxx</declaration>
       <declaration>src/FDM/SP/ADA.hxx</declaration>
       <implementation>src/FDM/SP/ADA.cxx</implementation>
       <implementation>src/FDM/SP/ADA.cxx</implementation>
Line 1,481: Line 1,643:
     <FGAISim>
     <FGAISim>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>aisim</staticSubsystemClassId>
       <declaration>src/FDM/SP/AISim.hpp</declaration>
       <declaration>src/FDM/SP/AISim.hpp</declaration>
       <implementation>src/FDM/SP/AISim.cpp</implementation>
       <implementation>src/FDM/SP/AISim.cpp</implementation>
Line 1,486: Line 1,649:
     <FGBalloonSim>
     <FGBalloonSim>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>balloon</staticSubsystemClassId>
       <declaration>src/FDM/SP/Balloon.h</declaration>
       <declaration>src/FDM/SP/Balloon.h</declaration>
       <implementation>src/FDM/SP/Balloon.cxx</implementation>
       <implementation>src/FDM/SP/Balloon.cxx</implementation>
Line 1,491: Line 1,655:
     <FGExternalNet>
     <FGExternalNet>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>network</staticSubsystemClassId>
       <declaration>src/FDM/ExternalNet/ExternalNet.hxx</declaration>
       <declaration>src/FDM/ExternalNet/ExternalNet.hxx</declaration>
       <implementation>src/FDM/ExternalNet/ExternalNet.cxx</implementation>
       <implementation>src/FDM/ExternalNet/ExternalNet.cxx</implementation>
Line 1,496: Line 1,661:
     <FGExternalPipe>
     <FGExternalPipe>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>pipe</staticSubsystemClassId>
       <declaration>src/FDM/ExternalPipe/ExternalPipe.hxx</declaration>
       <declaration>src/FDM/ExternalPipe/ExternalPipe.hxx</declaration>
       <implementation>src/FDM/ExternalPipe/ExternalPipe.cxx</implementation>
       <implementation>src/FDM/ExternalPipe/ExternalPipe.cxx</implementation>
Line 1,501: Line 1,667:
     <FGHIDEventInput>
     <FGHIDEventInput>
       <inheritance>FGEventInput : SGSubsystem</inheritance>
       <inheritance>FGEventInput : SGSubsystem</inheritance>
      <staticSubsystemClassId>input-event-hid</staticSubsystemClassId>
       <declaration>src/Input/FGHIDEventInput.hxx</declaration>
       <declaration>src/Input/FGHIDEventInput.hxx</declaration>
       <implementation>src/Input/FGHIDEventInput.cxx</implementation>
       <implementation>src/Input/FGHIDEventInput.cxx</implementation>
     </FGHIDEventInput>
     </FGHIDEventInput>
    <FGInterpolator>
      <inheritance>PropertyInterpolationMgr : SGSubsystem</inheritance>
      <staticSubsystemClassId>prop-interpolator</staticSubsystemClassId>
      <declaration>src/Main/FGInterpolator.hxx</declaration>
      <implementation>src/Main/FGInterpolator.cxx</implementation>
    </FGInterpolator>
     <FGJSBsim>
     <FGJSBsim>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>jsb</staticSubsystemClassId>
       <declaration>src/FDM/JSBSim/JSBSim.hxx</declaration>
       <declaration>src/FDM/JSBSim/JSBSim.hxx</declaration>
       <implementation>src/FDM/JSBSim/JSBSim.cxx</implementation>
       <implementation>src/FDM/JSBSim/JSBSim.cxx</implementation>
Line 1,511: Line 1,685:
     <FGLaRCsim>
     <FGLaRCsim>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>larcsim</staticSubsystemClassId>
       <declaration>src/FDM/LaRCsim/LaRCsim.hxx</declaration>
       <declaration>src/FDM/LaRCsim/LaRCsim.hxx</declaration>
       <implementation>src/FDM/LaRCsim/LaRCsim.cxx</implementation>
       <implementation>src/FDM/LaRCsim/LaRCsim.cxx</implementation>
Line 1,516: Line 1,691:
     <FGLinuxEventInput>
     <FGLinuxEventInput>
       <inheritance>FGEventInput : SGSubsystem</inheritance>
       <inheritance>FGEventInput : SGSubsystem</inheritance>
      <staticSubsystemClassId>input-event</staticSubsystemClassId>
       <declaration>src/Input/FGLinuxEventInput.hxx</declaration>
       <declaration>src/Input/FGLinuxEventInput.hxx</declaration>
       <implementation>src/Input/FGLinuxEventInput.cxx</implementation>
       <implementation>src/Input/FGLinuxEventInput.cxx</implementation>
Line 1,521: Line 1,697:
     <FGMacOSXEventInput>
     <FGMacOSXEventInput>
       <inheritance>FGEventInput : SGSubsystem</inheritance>
       <inheritance>FGEventInput : SGSubsystem</inheritance>
      <staticSubsystemClassId>input-event</staticSubsystemClassId>
       <declaration>src/Input/FGMacOSXEventInput.hxx</declaration>
       <declaration>src/Input/FGMacOSXEventInput.hxx</declaration>
       <implementation>src/Input/FGMacOSXEventInput.cxx</implementation>
       <implementation>src/Input/FGMacOSXEventInput.cxx</implementation>
Line 1,526: Line 1,703:
     <FGMagicCarpet>
     <FGMagicCarpet>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>magic</staticSubsystemClassId>
       <declaration>src/FDM/SP/MagicCarpet.hxx</declaration>
       <declaration>src/FDM/SP/MagicCarpet.hxx</declaration>
       <implementation>src/FDM/SP/MagicCarpet.cxx</implementation>
       <implementation>src/FDM/SP/MagicCarpet.cxx</implementation>
     </FGMagicCarpet>
     </FGMagicCarpet>
     <FGNullFDM>
    <FGMarkerBeacon>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <inheritance>AbstractInstrument : SGSubsystem</inheritance>
       <declaration>src/FDM/NullFDM.hxx</declaration>
      <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>
      <staticSubsystemClassId>null</staticSubsystemClassId>
       <declaration>src/FDM/NullFDM.hxx</declaration>
       <implementation>src/FDM/NullFDM.cxx</implementation>
       <implementation>src/FDM/NullFDM.cxx</implementation>
     </FGNullFDM>
     </FGNullFDM>
     <FGReadablePanel>
     <FGReadablePanel>
       <inheritance>FGPanel : SGSubsystem</inheritance>
       <inheritance>FGPanel : SGSubsystem</inheritance>
      <staticSubsystemClassId>readable-panel</staticSubsystemClassId>
       <declaration>utils/fgpanel/panel_io.hxx</declaration>
       <declaration>utils/fgpanel/panel_io.hxx</declaration>
       <implementation>utils/fgpanel/panel_io.cxx</implementation>
       <implementation>utils/fgpanel/panel_io.cxx</implementation>
Line 1,541: Line 1,733:
     <FGSoundManager>
     <FGSoundManager>
       <inheritance>SGSoundMgr : SGSubsystem</inheritance>
       <inheritance>SGSoundMgr : SGSubsystem</inheritance>
      <staticSubsystemClassId>sound</staticSubsystemClassId>
       <declaration>src/Sound/soundmanager.hxx</declaration>
       <declaration>src/Sound/soundmanager.hxx</declaration>
       <implementation>src/Sound/soundmanager.cxx</implementation>
       <implementation>src/Sound/soundmanager.cxx</implementation>
Line 1,546: Line 1,739:
     <FGUFO>
     <FGUFO>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>ufo</staticSubsystemClassId>
       <declaration>src/FDM/UFO.hxx</declaration>
       <declaration>src/FDM/UFO.hxx</declaration>
       <implementation>src/FDM/UFO.cxx</implementation>
       <implementation>src/FDM/UFO.cxx</implementation>
     </FGUFO>
     </FGUFO>
    <KLN89>
      <inheritance>DCLGPS : SGSubsystem</inheritance>
      <declaration>src/Instrumentation/KLN89/kln89.hxx</declaration>
      <implementation>src/Instrumentation/KLN89/kln89.cxx</implementation>
    </KLN89>
     <LayerInterpolateControllerImplementation>
     <LayerInterpolateControllerImplementation>
       <inheritance>LayerInterpolateController : SGSubsystem</inheritance>
       <inheritance>LayerInterpolateController : SGSubsystem</inheritance>
      <staticSubsystemClassId>layer-interpolate-controller</staticSubsystemClassId>
       <declaration>src/Environment/environment_ctrl.cxx</declaration>
       <declaration>src/Environment/environment_ctrl.cxx</declaration>
       <implementation>src/Environment/environment_ctrl.cxx</implementation>
       <implementation>src/Environment/environment_ctrl.cxx</implementation>
Line 1,561: Line 1,751:
     <MongooseHttpd>
     <MongooseHttpd>
       <inheritance>FGHttpd : SGSubsystem</inheritance>
       <inheritance>FGHttpd : SGSubsystem</inheritance>
      <staticSubsystemClassId>mongoose-httpd</staticSubsystemClassId>
       <declaration>src/Network/http/httpd.cxx</declaration>
       <declaration>src/Network/http/httpd.cxx</declaration>
       <implementation>src/Network/http/httpd.cxx</implementation>
       <implementation>src/Network/http/httpd.cxx</implementation>
     </MongooseHttpd>
     </MongooseHttpd>
    <NavRadioImpl>
      <inheritance>NavRadio : SGSubsystem</inheritance>
      <declaration>src/Instrumentation/newnavradio.cxx</declaration>
      <implementation>src/Instrumentation/newnavradio.cxx</implementation>
    </NavRadioImpl>
     <StateMachineComponent>
     <StateMachineComponent>
       <inheritance>Component : SGSubsystem</inheritance>
       <inheritance>Component : SGSubsystem</inheritance>
      <staticSubsystemClassId>state-machine</staticSubsystemClassId>
       <declaration>src/Autopilot/autopilot.cxx</declaration>
       <declaration>src/Autopilot/autopilot.cxx</declaration>
      <implementation>src/Autopilot/autopilot.cxx</implementation>
     </StateMachineComponent>
     </StateMachineComponent>
    <Transponder>
      <inheritance>AbstractInstrument : SGSubsystem</inheritance>
      <staticSubsystemClassId>transponder</staticSubsystemClassId>
      <declaration>src/Instrumentation/transponder.hxx</declaration>
      <implementation>src/Instrumentation/transponder.cxx</implementation>
    </Transponder>
     <YASim>
     <YASim>
       <inheritance>FGInterface : SGSubsystem</inheritance>
       <inheritance>FGInterface : SGSubsystem</inheritance>
      <staticSubsystemClassId>yasim</staticSubsystemClassId>
       <declaration>src/FDM/YASim/YASim.hxx</declaration>
       <declaration>src/FDM/YASim/YASim.hxx</declaration>
       <implementation>src/FDM/YASim/YASim.cxx</implementation>
       <implementation>src/FDM/YASim/YASim.cxx</implementation>
Line 1,581: Line 1,774:
     <agRadar>
     <agRadar>
       <inheritance>wxRadarBg : SGSubsystem</inheritance>
       <inheritance>wxRadarBg : SGSubsystem</inheritance>
      <staticSubsystemClassId>air-ground-radar</staticSubsystemClassId>
       <declaration>src/Cockpit/agradar.hxx</declaration>
       <declaration>src/Cockpit/agradar.hxx</declaration>
       <implementation>src/Cockpit/agradar.cxx</implementation>
       <implementation>src/Cockpit/agradar.cxx</implementation>
Line 1,588: Line 1,782:
     <FGXMLAutopilotGroupImplementation>
     <FGXMLAutopilotGroupImplementation>
       <inheritance>FGXMLAutopilotGroup : SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>FGXMLAutopilotGroup : SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>xml-autopilot-group</staticSubsystemClassId>
       <declaration>src/Autopilot/autopilotgroup.cxx</declaration>
       <declaration>src/Autopilot/autopilotgroup.cxx</declaration>
       <implementation>src/Autopilot/autopilotgroup.cxx</implementation>
       <implementation>src/Autopilot/autopilotgroup.cxx</implementation>
Line 1,593: Line 1,788:
     <TerrainSamplerImplementation>
     <TerrainSamplerImplementation>
       <inheritance>TerrainSampler : SGSubsystemGroup : SGSubsystem</inheritance>
       <inheritance>TerrainSampler : SGSubsystemGroup : SGSubsystem</inheritance>
      <staticSubsystemClassId>terrain-sampler</staticSubsystemClassId>
       <declaration>src/Environment/terrainsampler.cxx</declaration>
       <declaration>src/Environment/terrainsampler.cxx</declaration>
       <implementation>src/Environment/terrainsampler.cxx</implementation>
       <implementation>src/Environment/terrainsampler.cxx</implementation>
     </TerrainSamplerImplementation>
     </TerrainSamplerImplementation>
   </secondary_groups>
   </secondary_groups>
   <tertiary_subsystems count="6">
   <tertiary_subsystems count="7">
    <CanvasMgr>
      <inheritance>CanvasMgr : PropertyBasedMgr : SGSubsystem</inheritance>
      <staticSubsystemClassId>Canvas</staticSubsystemClassId>
      <declaration>src/Canvas/canvas_mgr.hxx</declaration>
      <implementation>src/Canvas/canvas_mgr.cxx</implementation>
    </CanvasMgr>
     <DigitalFilter>
     <DigitalFilter>
       <inheritance>AnalogComponent : Component : SGSubsystem</inheritance>
       <inheritance>AnalogComponent : Component : SGSubsystem</inheritance>
      <staticSubsystemClassId>filter</staticSubsystemClassId>
       <declaration>src/Autopilot/digitalfilter.hxx</declaration>
       <declaration>src/Autopilot/digitalfilter.hxx</declaration>
       <implementation>src/Autopilot/digitalfilter.cxx</implementation>
       <implementation>src/Autopilot/digitalfilter.cxx</implementation>
Line 1,605: Line 1,808:
     <Logic>
     <Logic>
       <inheritance>DigitalComponent : Component : SGSubsystem</inheritance>
       <inheritance>DigitalComponent : Component : SGSubsystem</inheritance>
      <staticSubsystemClassId>logic</staticSubsystemClassId>
       <declaration>src/Autopilot/logic.hxx</declaration>
       <declaration>src/Autopilot/logic.hxx</declaration>
       <implementation>src/Autopilot/logic.cxx</implementation>
       <implementation>src/Autopilot/logic.cxx</implementation>
Line 1,610: Line 1,814:
     <NoaaMetarRealWxController>
     <NoaaMetarRealWxController>
       <inheritance>BasicRealWxController : RealWxController : SGSubsystem</inheritance>
       <inheritance>BasicRealWxController : RealWxController : SGSubsystem</inheritance>
      <staticSubsystemClassId>noaa-metar-real-wx-controller</staticSubsystemClassId>
       <declaration>src/Environment/realwx_ctrl.cxx</declaration>
       <declaration>src/Environment/realwx_ctrl.cxx</declaration>
       <implementation>src/Environment/realwx_ctrl.cxx</implementation>
       <implementation>src/Environment/realwx_ctrl.cxx</implementation>
Line 1,615: Line 1,820:
     <PIDController>
     <PIDController>
       <inheritance>AnalogComponent : Component : SGSubsystem</inheritance>
       <inheritance>AnalogComponent : Component : SGSubsystem</inheritance>
      <staticSubsystemClassId>pid-controller</staticSubsystemClassId>
       <declaration>src/Autopilot/pidcontroller.hxx</declaration>
       <declaration>src/Autopilot/pidcontroller.hxx</declaration>
       <implementation>src/Autopilot/pidcontroller.cxx</implementation>
       <implementation>src/Autopilot/pidcontroller.cxx</implementation>
Line 1,620: Line 1,826:
     <PISimpleController>
     <PISimpleController>
       <inheritance>AnalogComponent : Component : SGSubsystem</inheritance>
       <inheritance>AnalogComponent : Component : SGSubsystem</inheritance>
      <staticSubsystemClassId>pi-simple-controller</staticSubsystemClassId>
       <declaration>src/Autopilot/pisimplecontroller.hxx</declaration>
       <declaration>src/Autopilot/pisimplecontroller.hxx</declaration>
       <implementation>src/Autopilot/pisimplecontroller.cxx</implementation>
       <implementation>src/Autopilot/pisimplecontroller.cxx</implementation>
Line 1,625: Line 1,832:
     <Predictor>
     <Predictor>
       <inheritance>AnalogComponent : Component : SGSubsystem</inheritance>
       <inheritance>AnalogComponent : Component : SGSubsystem</inheritance>
      <staticSubsystemClassId>predict-simple</staticSubsystemClassId>
       <declaration>src/Autopilot/predictor.hxx</declaration>
       <declaration>src/Autopilot/predictor.hxx</declaration>
       <implementation>src/Autopilot/predictor.cxx</implementation>
       <implementation>src/Autopilot/predictor.cxx</implementation>
Line 1,632: Line 1,840:
     <FlipFlop>
     <FlipFlop>
       <inheritance>Logic : DigitalComponent : Component : SGSubsystem</inheritance>
       <inheritance>Logic : DigitalComponent : Component : SGSubsystem</inheritance>
      <staticSubsystemClassId>flipflop</staticSubsystemClassId>
       <declaration>src/Autopilot/flipflop.hxx</declaration>
       <declaration>src/Autopilot/flipflop.hxx</declaration>
       <implementation>src/Autopilot/flipflop.cxx</implementation>
       <implementation>src/Autopilot/flipflop.cxx</implementation>
Line 1,638: Line 1,847:
   <counts>
   <counts>
     <simgear>
     <simgear>
       <subsystem_classes>9</subsystem_classes>
       <subsystem_classes>12</subsystem_classes>
       <subsystem_groups>0</subsystem_groups>
       <subsystem_groups>1</subsystem_groups>
       <total>9</total>
       <total>13</total>
     </simgear>
     </simgear>
     <flightgear>
     <flightgear>
       <subsystem_classes>117</subsystem_classes>
       <subsystem_classes>118</subsystem_classes>
       <subsystem_groups>10</subsystem_groups>
       <subsystem_groups>9</subsystem_groups>
       <total>127</total>
       <total>127</total>
     </flightgear>
     </flightgear>
     <combined>
     <combined>
       <subsystem_classes>126</subsystem_classes>
       <subsystem_classes>130</subsystem_classes>
       <subsystem_groups>10</subsystem_groups>
       <subsystem_groups>10</subsystem_groups>
       <total>136</total>
       <total>140</total>
     </combined>
     </combined>
   </counts>
   </counts>
Line 1,663: Line 1,872:
| script =  
| script =  
$ ./find_subsystems.py -l 2> /dev/null {{!}} sort
$ ./find_subsystems.py -l 2> /dev/null {{!}} sort
docs-mini/README.introduction
docs-mini/README.introduction
docs-mini/README.introduction
simgear/canvas/CanvasMgr.cxx
simgear/canvas/CanvasMgr.cxx
Line 1,682: Line 1,890:
simgear/structure/subsystem_mgr.cxx
simgear/structure/subsystem_mgr.cxx
simgear/structure/subsystem_mgr.hxx
simgear/structure/subsystem_mgr.hxx
simgear/structure/subsystem_test.cxx
simgear/structure/subsystem_test.cxx
simgear/structure/subsystem_test.cxx
simgear/structure/subsystem_test.cxx
src/AIModel/AIManager.cxx
src/AIModel/AIManager.cxx
src/AIModel/AIManager.hxx
src/AIModel/AIManager.hxx
Line 1,700: Line 1,912:
src/Autopilot/analogcomponent.cxx
src/Autopilot/analogcomponent.cxx
src/Autopilot/analogcomponent.hxx
src/Autopilot/analogcomponent.hxx
src/Autopilot/autopilot.cxx
src/Autopilot/autopilot.cxx
src/Autopilot/autopilot.cxx
src/Autopilot/autopilot.cxx
src/Autopilot/autopilot.cxx
Line 1,726: Line 1,937:
src/Autopilot/route_mgr.cxx
src/Autopilot/route_mgr.cxx
src/Autopilot/route_mgr.hxx
src/Autopilot/route_mgr.hxx
src/Canvas/canvas_mgr.cxx
src/Canvas/canvas_mgr.hxx
src/Canvas/gui_mgr.cxx
src/Canvas/gui_mgr.cxx
src/Canvas/gui_mgr.hxx
src/Canvas/gui_mgr.hxx
Line 1,808: Line 2,021:
src/Input/input.cxx
src/Input/input.cxx
src/Input/input.hxx
src/Input/input.hxx
src/Instrumentation/AbstractInstrument.cxx
src/Instrumentation/AbstractInstrument.hxx
src/Instrumentation/adf.cxx
src/Instrumentation/adf.cxx
src/Instrumentation/adf.hxx
src/Instrumentation/adf.hxx
Line 1,818: Line 2,033:
src/Instrumentation/clock.cxx
src/Instrumentation/clock.cxx
src/Instrumentation/clock.hxx
src/Instrumentation/clock.hxx
src/Instrumentation/commradio.cxx
src/Instrumentation/commradio.cxx
src/Instrumentation/commradio.cxx
src/Instrumentation/commradio.hxx
src/Instrumentation/commradio.hxx
src/Instrumentation/dclgps.cxx
src/Instrumentation/dclgps.hxx
src/Instrumentation/dme.cxx
src/Instrumentation/dme.cxx
src/Instrumentation/dme.hxx
src/Instrumentation/dme.hxx
Line 1,841: Line 2,053:
src/Instrumentation/inst_vertical_speed_indicator.cxx
src/Instrumentation/inst_vertical_speed_indicator.cxx
src/Instrumentation/inst_vertical_speed_indicator.hxx
src/Instrumentation/inst_vertical_speed_indicator.hxx
src/Instrumentation/KLN89/kln89.cxx
src/Instrumentation/KLN89/kln89.hxx
src/Instrumentation/kr_87.cxx
src/Instrumentation/kr_87.cxx
src/Instrumentation/kr_87.hxx
src/Instrumentation/kr_87.hxx
Line 1,855: Line 2,065:
src/Instrumentation/navradio.cxx
src/Instrumentation/navradio.cxx
src/Instrumentation/navradio.hxx
src/Instrumentation/navradio.hxx
src/Instrumentation/newnavradio.cxx
src/Instrumentation/newnavradio.cxx
src/Instrumentation/newnavradio.cxx
src/Instrumentation/newnavradio.hxx
src/Instrumentation/newnavradio.hxx
Line 1,872: Line 2,081:
src/Instrumentation/vertical_speed_indicator.cxx
src/Instrumentation/vertical_speed_indicator.cxx
src/Instrumentation/vertical_speed_indicator.hxx
src/Instrumentation/vertical_speed_indicator.hxx
src/Main/FGInterpolator.cxx
src/Main/FGInterpolator.hxx
src/Main/fg_io.cxx
src/Main/fg_io.cxx
src/Main/fg_io.hxx
src/Main/fg_io.hxx
Line 1,893: Line 2,104:
src/Network/http/httpd.cxx
src/Network/http/httpd.cxx
src/Network/http/httpd.hxx
src/Network/http/httpd.hxx
src/Network/Swift/swift_connection.cxx
src/Network/Swift/swift_connection.hxx
src/Scenery/scenery.cxx
src/Scenery/scenery.cxx
src/Scenery/scenery.hxx
src/Scenery/scenery.hxx
Line 1,958: Line 2,171:
/flightgear/src/flightgear-flightgear/src/Autopilot/predictor.hxx
/flightgear/src/flightgear-flightgear/src/Autopilot/predictor.hxx
/flightgear/src/flightgear-flightgear/src/Autopilot/route_mgr.hxx
/flightgear/src/flightgear-flightgear/src/Autopilot/route_mgr.hxx
/flightgear/src/flightgear-flightgear/src/Canvas/canvas_mgr.hxx
/flightgear/src/flightgear-flightgear/src/Canvas/gui_mgr.hxx
/flightgear/src/flightgear-flightgear/src/Canvas/gui_mgr.hxx
/flightgear/src/flightgear-flightgear/src/Cockpit/agradar.hxx
/flightgear/src/flightgear-flightgear/src/Cockpit/agradar.hxx
Line 1,995: Line 2,209:
/flightgear/src/flightgear-flightgear/src/Input/FGMacOSXEventInput.hxx
/flightgear/src/flightgear-flightgear/src/Input/FGMacOSXEventInput.hxx
/flightgear/src/flightgear-flightgear/src/Input/FGMouseInput.hxx
/flightgear/src/flightgear-flightgear/src/Input/FGMouseInput.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/AbstractInstrument.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/adf.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/adf.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/airspeed_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/airspeed_indicator.hxx
Line 2,000: Line 2,215:
/flightgear/src/flightgear-flightgear/src/Instrumentation/attitude_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/attitude_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/clock.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/clock.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/commradio.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/commradio.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/commradio.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/dclgps.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/dme.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/dme.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/gps.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/gps.hxx
Line 2,010: Line 2,223:
/flightgear/src/flightgear-flightgear/src/Instrumentation/heading_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/heading_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/HUD/HUD.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/HUD/HUD.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/instrument_mgr.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/inst_vertical_speed_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/inst_vertical_speed_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/KLN89/kln89.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/kr_87.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/kr_87.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/mag_compass.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/mag_compass.hxx
Line 2,018: Line 2,231:
/flightgear/src/flightgear-flightgear/src/Instrumentation/mrg.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/mrg.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/navradio.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/navradio.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/newnavradio.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/newnavradio.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/newnavradio.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/rad_alt.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/rad_alt.hxx
Line 2,027: Line 2,239:
/flightgear/src/flightgear-flightgear/src/Instrumentation/turn_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/turn_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/vertical_speed_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/vertical_speed_indicator.hxx
/flightgear/src/flightgear-flightgear/src/Main/FGInterpolator.hxx
/flightgear/src/flightgear-flightgear/src/Main/fg_io.hxx
/flightgear/src/flightgear-flightgear/src/Main/fg_io.hxx
/flightgear/src/flightgear-flightgear/src/Main/fg_props.hxx
/flightgear/src/flightgear-flightgear/src/Main/fg_props.hxx
Line 2,038: Line 2,251:
/flightgear/src/flightgear-flightgear/src/Network/http/httpd.cxx
/flightgear/src/flightgear-flightgear/src/Network/http/httpd.cxx
/flightgear/src/flightgear-flightgear/src/Network/http/httpd.hxx
/flightgear/src/flightgear-flightgear/src/Network/http/httpd.hxx
/flightgear/src/flightgear-flightgear/src/Network/Swift/swift_connection.hxx
/flightgear/src/flightgear-flightgear/src/Scenery/scenery.hxx
/flightgear/src/flightgear-flightgear/src/Scenery/scenery.hxx
/flightgear/src/flightgear-flightgear/src/Scripting/NasalSys.hxx
/flightgear/src/flightgear-flightgear/src/Scripting/NasalSys.hxx
Line 2,064: Line 2,278:
| script =  
| script =  
$ ./find_subsystems.py -ifnp 2> /dev/null {{!}} sort
$ ./find_subsystems.py -ifnp 2> /dev/null {{!}} sort
/flightgear/src/flightgear-flightgear/docs-mini/README.introduction
/flightgear/src/flightgear-flightgear/src/AIModel/AIManager.cxx
/flightgear/src/flightgear-flightgear/src/AIModel/AIManager.cxx
/flightgear/src/flightgear-flightgear/src/AIModel/performancedb.cxx
/flightgear/src/flightgear-flightgear/src/AIModel/performancedb.cxx
Line 2,074: Line 2,287:
/flightgear/src/flightgear-flightgear/src/ATC/atc_mgr.cxx
/flightgear/src/flightgear-flightgear/src/ATC/atc_mgr.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/analogcomponent.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/analogcomponent.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/autopilot.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/component.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/component.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/digitalcomponent.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/digitalcomponent.cxx
Line 2,084: Line 2,296:
/flightgear/src/flightgear-flightgear/src/Autopilot/predictor.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/predictor.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/route_mgr.cxx
/flightgear/src/flightgear-flightgear/src/Autopilot/route_mgr.cxx
/flightgear/src/flightgear-flightgear/src/Canvas/canvas_mgr.cxx
/flightgear/src/flightgear-flightgear/src/Canvas/gui_mgr.cxx
/flightgear/src/flightgear-flightgear/src/Canvas/gui_mgr.cxx
/flightgear/src/flightgear-flightgear/src/Cockpit/agradar.cxx
/flightgear/src/flightgear-flightgear/src/Cockpit/agradar.cxx
Line 2,120: Line 2,333:
/flightgear/src/flightgear-flightgear/src/Input/FGMacOSXEventInput.cxx
/flightgear/src/flightgear-flightgear/src/Input/FGMacOSXEventInput.cxx
/flightgear/src/flightgear-flightgear/src/Input/FGMouseInput.cxx
/flightgear/src/flightgear-flightgear/src/Input/FGMouseInput.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/AbstractInstrument.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/adf.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/adf.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/airspeed_indicator.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/airspeed_indicator.cxx
Line 2,126: Line 2,340:
/flightgear/src/flightgear-flightgear/src/Instrumentation/clock.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/clock.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/commradio.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/commradio.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/dclgps.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/dme.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/dme.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/gps.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/gps.cxx
Line 2,134: Line 2,347:
/flightgear/src/flightgear-flightgear/src/Instrumentation/heading_indicator_fg.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/heading_indicator_fg.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/HUD/HUD.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/HUD/HUD.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/instrument_mgr.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/inst_vertical_speed_indicator.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/inst_vertical_speed_indicator.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/KLN89/kln89.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/kr_87.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/kr_87.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/mag_compass.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/mag_compass.cxx
Line 2,150: Line 2,363:
/flightgear/src/flightgear-flightgear/src/Instrumentation/turn_indicator.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/turn_indicator.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/vertical_speed_indicator.cxx
/flightgear/src/flightgear-flightgear/src/Instrumentation/vertical_speed_indicator.cxx
/flightgear/src/flightgear-flightgear/src/Main/FGInterpolator.cxx
/flightgear/src/flightgear-flightgear/src/Main/fg_io.cxx
/flightgear/src/flightgear-flightgear/src/Main/fg_io.cxx
/flightgear/src/flightgear-flightgear/src/Main/fg_props.cxx
/flightgear/src/flightgear-flightgear/src/Main/fg_props.cxx
Line 2,160: Line 2,374:
/flightgear/src/flightgear-flightgear/src/Network/HTTPClient.cxx
/flightgear/src/flightgear-flightgear/src/Network/HTTPClient.cxx
/flightgear/src/flightgear-flightgear/src/Network/http/httpd.cxx
/flightgear/src/flightgear-flightgear/src/Network/http/httpd.cxx
/flightgear/src/flightgear-flightgear/src/Network/Swift/swift_connection.cxx
/flightgear/src/flightgear-flightgear/src/Scenery/scenery.cxx
/flightgear/src/flightgear-flightgear/src/Scenery/scenery.cxx
/flightgear/src/flightgear-flightgear/src/Scripting/NasalSys.cxx
/flightgear/src/flightgear-flightgear/src/Scripting/NasalSys.cxx
Line 2,180: Line 2,395:


{{collapsible script
{{collapsible script
| type  = Grep for a subsystem dependency (SGSky)
| type  = Grep output
| title  = Searching for SGSky dependencies for all subsystems.
| title  = Searching for SGSky dependencies for all subsystems.
| intro  = This is an example to show how to use the file listing outputs of the script to hunt down subsystem dependencies.
| intro  = This is an example to show how to use the file listing outputs of the script to hunt down subsystem dependencies.
Line 2,220: Line 2,435:
/flightgear/src/flightgear-flightgear/src/Environment/environment_mgr.hxx:class SGSky;
/flightgear/src/flightgear-flightgear/src/Environment/environment_mgr.hxx:class SGSky;
/flightgear/src/flightgear-flightgear/src/Environment/environment_mgr.hxx:    SGSky* _sky;
/flightgear/src/flightgear-flightgear/src/Environment/environment_mgr.hxx:    SGSky* _sky;
/flightgear/src/flightgear-flightgear/src/Environment/precipitation_mgr.cxx:        {"SGSky", DEPENDENCY_NONSUBSYSTEM_HARD}
/flightgear/src/flightgear-flightgear/src/Environment/precipitation_mgr.cxx:    SGSky* thesky = globals->get_renderer()->getSky();
/flightgear/src/flightgear-flightgear/src/Environment/precipitation_mgr.cxx:    SGSky* thesky = globals->get_renderer()->getSky();
/flightgear/src/flightgear-flightgear/src/Time/light.cxx:        {"SGSky", DEPENDENCY_NONSUBSYSTEM_HARD}
/flightgear/src/flightgear-flightgear/src/Environment/precipitation_mgr.cxx:    {"SGSky", SGSubsystemMgr::Dependency::NONSUBSYSTEM_HARD}{{cbr}});
/flightgear/src/flightgear-flightgear/src/Scenery/scenery.cxx:        {"SGSky", SGSubsystemMgr::Dependency::NONSUBSYSTEM_HARD}{{cbr}});
/flightgear/src/flightgear-flightgear/src/Time/light.cxx:    SGSky* thesky = globals->get_renderer()->getSky();
/flightgear/src/flightgear-flightgear/src/Time/light.cxx:    SGSky* thesky = globals->get_renderer()->getSky();
/flightgear/src/flightgear-flightgear/src/Time/light.cxx:    SGSky* thesky = globals->get_renderer()->getSky();
/flightgear/src/flightgear-flightgear/src/Time/light.cxx:    SGSky* thesky = globals->get_renderer()->getSky();
}}
{{collapsible script
| type  = Grep output
| title  = Searching for all direct subsystem instantiations.
| lang  = c
| script =
$ ./find_subsystems.py --classes 2> /dev/null {{!}} xargs -I{} grep -nrI "new.*\<{}\>" src {{!}} sort -u
src/Autopilot/autopilot.cxx:134:      componentForge["pid-controller"]      = new CreateAndConfigureFunctor<PIDController,Component>();
src/Autopilot/autopilot.cxx:135:      componentForge["pi-simple-controller"] = new CreateAndConfigureFunctor<PISimpleController,Component>();
src/Autopilot/autopilot.cxx:136:      componentForge["predict-simple"]      = new CreateAndConfigureFunctor<Predictor,Component>();
src/Autopilot/autopilot.cxx:137:      componentForge["filter"]              = new CreateAndConfigureFunctor<DigitalFilter,Component>();
src/Autopilot/autopilot.cxx:138:      componentForge["logic"]                = new CreateAndConfigureFunctor<Logic,Component>();
src/Autopilot/autopilot.cxx:139:      componentForge["flipflop"]            = new CreateAndConfigureFunctor<FlipFlop,Component>();
src/Autopilot/autopilot.cxx:87:    return new StateMachineComponent(cfg, prop_root);
src/Autopilot/autopilotgroup.cxx:229:  return new FGXMLAutopilotGroupImplementation(nodeName);
src/Autopilot/autopilotgroup.cxx:82:  Autopilot* ap = new Autopilot(apNode, config);
src/Cockpit/cockpitDisplayManager.cxx:100:            set_subsystem( id, new wxRadarBg ( node ) );
src/Cockpit/cockpitDisplayManager.cxx:103:            set_subsystem( id, new GroundRadar( node ) );
src/Cockpit/cockpitDisplayManager.cxx:106:            set_subsystem( id, new agRadar( node ) );
src/Cockpit/cockpitDisplayManager.cxx:109:            set_subsystem( id, new NavDisplay( node ) );
src/Cockpit/panel_io.cxx:657:  FGPanel * panel = new FGPanel();
src/Environment/environment_ctrl.cxx:349:    return new LayerInterpolateControllerImplementation( rootNode );
src/Environment/environment_mgr.cxx:93:  set_subsystem("precipitation", new FGPrecipitationMgr);
src/Environment/environment_mgr.cxx:96:  set_subsystem("ridgelift", new FGRidgeLift);
src/Environment/environment_mgr.cxx:98:  set_subsystem("magvar", new FGMagVarManager);
src/Environment/realwx_ctrl.cxx:515:  return new NoaaMetarRealWxController( rootNode );
src/Environment/terrainsampler.cxx:381:        set_subsystem( areaSubsystemName(i), new AreaSampler( areaNodes[i] ) );
src/Environment/terrainsampler.cxx:430:    return new TerrainSamplerImplementation( rootNode );
src/FDM/fdm_shell.cxx:278:    _impl = new FGUFO( dt );
src/FDM/fdm_shell.cxx:282:    _impl = new FGNullFDM( dt );
src/FDM/fdm_shell.cxx:315:    _impl = new FGExternalNet( dt, host, port1, port2, port3 );
src/FDM/fdm_shell.cxx:318:    // /* old */ _impl = new FGExternalPipe( dt, pipe_path );
src/FDM/fdm_shell.cxx:332:    _impl = new FGExternalPipe( dt, pipe_path, pipe_protocol );
src/FDM/fdm_shell.cxx:334:    _impl = new FGNullFDM( dt );
src/FDM/fdm_shell.cxx:338:        _impl = new FGLaRCsim( dt );
src/FDM/fdm_shell.cxx:345:        _impl = new FGJSBsim( dt );
src/FDM/fdm_shell.cxx:352:        _impl = new FGADA( dt );
src/FDM/fdm_shell.cxx:354:        _impl = new FGACMS( dt );
src/FDM/fdm_shell.cxx:356:        _impl = new FGBalloonSim( dt );
src/FDM/fdm_shell.cxx:358:        _impl = new FGMagicCarpet( dt );
src/FDM/fdm_shell.cxx:360://      _impl = new FGAISim( dt );
src/FDM/fdm_shell.cxx:370:        _impl = new YASim( dt );
src/FDM/JSBSim/FGFDMExec.cpp:230:  Models[eInput]            = new FGInput(this);
src/FDM/JSBSim/models/FGInput.cpp:79:  // are not intended to create new properties. For that reason, FGInput
src/FDM/YASim/Airplane.cpp:802:                // For new YASim, the solver drag factor is only applied to
src/Input/input.cxx:65:    set_subsystem( FGMouseInput::staticSubsystemClassId(), new FGMouseInput() );
src/Input/input.cxx:71:    set_subsystem( "input-keyboard", new FGKeyboardInput() );
src/Input/input.cxx:78:    set_subsystem( "input-joystick", new FGJoystickInput() );
src/Input/input.cxx:94:    set_subsystem( "input-event-hid", new FGHIDEventInput() );
src/Main/fg_init.cxx:812:    mgr->add("performance-mon", new SGPerformanceMonitor(mgr, fgGetNode("/sim/performance-monitor", true)));
src/Main/globals.cxx:147:    subsystem_mgr( new SGSubsystemMgr ),
src/Main/globals.cxx:148:    event_mgr( new SGEventMgr ),
src/Network/http/httpd.cxx:642:  return new MongooseHttpd(configNode);
src/Systems/system_mgr.cxx:77:                          new FGElectricalSystem( node ) );
src/Systems/system_mgr.cxx:80:                          new PitotSystem( node ) );
src/Systems/system_mgr.cxx:83:                          new StaticSystem( node ) );
src/Systems/system_mgr.cxx:86:                          new VacuumSystem( node ) );
src/Viewer/view.cxx:170:        v = new View ( FG_LOOKAT, from_model, from_model_index,
src/Viewer/view.cxx:182:        v = new View ( FG_LOOKFROM, from_model, from_model_index,
}}
}}


Line 2,257: Line 2,532:


         # First find all subsystems.
         # First find all subsystems.
         subsystems = FindSubsystems()
         sub = FindSubsystems()


         # Generate a list of files to skip.
         # Generate a list of files to skip.
Line 2,271: Line 2,546:
             blacklist.append(file_name)
             blacklist.append(file_name)


         # Loop over all derived classes.
         # Loop over all derived class declarations.
         print("\nYet to be updated:")
         print("\nYet to be updated:")
         for storage_list in subsystems.subsystems + subsystems.groups:
         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]:
             for subsystem in storage_list:
             if subsystem.declaration_file not in blacklist:
                if subsystem.file_name not in blacklist:
                print("    %s: %s" % (subsystem.declaration_file, subsystem))
                    print("    %s: %s" % (subsystem.file_name, subsystem))




Line 2,283: Line 2,557:
if __name__ == "__main__":
if __name__ == "__main__":
     ToUpdate()
     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]))
# Instantiate the class if run as a script.
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:

All subsystems

The result is:

Refactoring

To check that all subsystems on a branch have been updated or refactored:

Automated test suite test creation

This script was used to generate the instanced and non-instanced subsystem system tests: