コード例 #1
0
 def _write_add_signal_section(self, clif_class_name):
     
     if not self._obj.signals:
         return
     
     self.writeln("/* add signals */")
     self.writeln()
     
     marshaller_gen = MarshallerGenerator(self._obj)
     
     for signal in self._obj.signals:
         
         saved_out = self.output
         list_out = ListOut()
         self.output = list_out
         
         self.write("%(prefix)s_signals[" % self._vars)
         self.writeln("%s] = g_signal_new(\"%s\"," % (signal.internal_name.upper(), signal.name))
         self.indent()
         self.writeln(self.gtypename(self._obj) + ",")
         self.writeln("G_SIGNAL_RUN_LAST|G_SIGNAL_DETAILED,")
         self.write("G_STRUCT_OFFSET(%s, " % clif_class_name)
         self.writeln(signal.internal_name + "),")
         self.writeln("NULL, /* accumulator */")
         self.writeln("NULL,")
         self.writeln("%s," % marshaller_gen.get_marshaller_name(signal))
         self.writeln("%s," % self.gtypename(signal.result))
         if signal.parameters:
             self.writeln("%d," % len(signal.parameters))
             for param in signal.parameters:
                 self.write(self.gtypename(param[1]))
                 if not param is signal.parameters[-1]:
                     self.writeln(",")
                 else:
                     self.writeln()
         else:
             self.writeln("0")
         self.writeln(");")
         self.unindent()
                     
         self.output = saved_out
         
         self.user_section("signal_%s" % signal.internal_name,
                           default_code = list_out.get_lines(), 
                           indent_level = -1
                           )
         self.writeln()