old_contents: # -*- coding: utf-8 -*-
  #
  # Copyright © 2017 Thibault Saunier <tsaunier@gnome.org>
  #
  # This library is free software; you can redistribute it and/or modify it under
  # the terms of the GNU Lesser General Public License as published by the Free
  # Software Foundation; either version 2.1 of the License, or (at your option)
  # any later version.
  #
  # This library is distributed in the hope that it will be useful, but WITHOUT
  # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  # FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
  # details.
  #
  # You should have received a copy of the GNU Lesser General Public License
  # along with this library.  If not, see <http://www.gnu.org/licenses/>.
  
  from hotdoc.core.symbols import *
  from hotdoc.extensions.devhelp.devhelp_extension import TYPE_MAP
  
  
  class GIClassSymbol(ClassSymbol):
      def __init__(self, **kwargs):
          self.class_struct_symbol = None
          self.interfaces = []
          self.properties = []
          self.methods = []
          self.signals = []
          self.vfuncs = []
          ClassSymbol.__init__(self, **kwargs)
  
      def get_children_symbols(self):
          res = self.interfaces + self.properties + self.methods + \
              self.signals + self.vfuncs + super().get_children_symbols()
  
          if self.class_struct_symbol:
             res += [self.class_struct_symbol] + self.class_struct_symbol.get_children_symbols()
  
          return res
  
  class GIInterfaceSymbol(InterfaceSymbol):
      def __init__(self, **kwargs):
          self.properties = []
          self.methods = []
          self.signals = []
          self.vfuncs = []
          InterfaceSymbol.__init__(self, **kwargs)
  
      def get_children_symbols(self):
          return self.properties + self.methods + self.signals + self.vfuncs + super().get_children_symbols()
  
  
  class GIStructSymbol(ClassSymbol):
      """Boxed types are pretty much handled like classes with a possible
         constructors, methods, etc... we render them as such.
      """
      def __init__(self, **kwargs):
          self.class_struct_symbol = None
          self.methods = []
          ClassSymbol.__init__(self, **kwargs)
  
      def get_children_symbols(self):
          return [self.class_struct_symbol] + self.methods + super().get_children_symbols()
  
  TYPE_MAP[GIClassSymbol] = 'class'
  
new_contents: # -*- coding: utf-8 -*-
  #
  # Copyright © 2017 Thibault Saunier <tsaunier@gnome.org>
  #
  # This library is free software; you can redistribute it and/or modify it under
  # the terms of the GNU Lesser General Public License as published by the Free
  # Software Foundation; either version 2.1 of the License, or (at your option)
  # any later version.
  #
  # This library is distributed in the hope that it will be useful, but WITHOUT
  # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  # FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
  # details.
  #
  # You should have received a copy of the GNU Lesser General Public License
  # along with this library.  If not, see <http://www.gnu.org/licenses/>.
  
  from hotdoc.core.symbols import *
  from hotdoc.extensions.devhelp.devhelp_extension import TYPE_MAP
  
  
  class GIClassSymbol(ClassSymbol):
      def __init__(self, **kwargs):
          self.class_struct_symbol = None
          self.interfaces = []
          self.properties = []
          self.methods = []
          self.signals = []
          self.vfuncs = []
          ClassSymbol.__init__(self, **kwargs)
  
      def get_children_symbols(self):
          res = self.interfaces + self.properties + self.methods + \
              self.signals + self.vfuncs + super().get_children_symbols()
  
          if self.class_struct_symbol:
              res += [self.class_struct_symbol] + self.class_struct_symbol.get_children_symbols()
  
          return res
  
  
  class GIInterfaceSymbol(InterfaceSymbol):
      def __init__(self, **kwargs):
          self.class_struct_symbol = None
          self.properties = []
          self.methods = []
          self.signals = []
          self.vfuncs = []
          InterfaceSymbol.__init__(self, **kwargs)
  
      def get_children_symbols(self):
          res = self.properties + self.methods + self.signals + self.vfuncs + super().get_children_symbols()
          if self.class_struct_symbol:
              res += [self.class_struct_symbol] + self.class_struct_symbol.get_children_symbols()
  
          return res
  
  
  class GIStructSymbol(ClassSymbol):
      """Boxed types are pretty much handled like classes with a possible
         constructors, methods, etc... we render them as such.
      """
      def __init__(self, **kwargs):
          self.class_struct_symbol = None
          self.methods = []
          ClassSymbol.__init__(self, **kwargs)
  
      def get_children_symbols(self):
          return [self.class_struct_symbol] + self.methods + super().get_children_symbols()
  
  TYPE_MAP[GIClassSymbol] = 'class'
  
subject: Add class structure fields as children of the GIInterfaceSymbol