<blockquote>
<p>Sorry not to be clear, DEFINING new GObjects is what is not so common, its no longer even in Glib.<br>
I don't understand that. GObject is part of GLib. GLib makes heavy use of GObjects and interfaces.</p>
</blockquote>
<blockquote>
<p>How do you need any GObject knowledge to emit signals? eg <a href="https://github.com/geany/geany/blob/master/src/document.c#L711">https://github.com/geany/geany/blob/master/src/document.c#L711</a></p>
</blockquote>
<p>That's just emitting. That doesn't show defining the signal (see geanyobject.c), or the modifications required to a given feature to be replacable or extensible through a signal (or other means).</p>
<p>Calling an interface is equally a one liner (with added compile time checks): <code>my_interface_method(object);</code></p>
<p>I admit that defining an interfaces requires some boilerplate. Signal definitions also require boilerplate, but less of it. Both can be automated with classbuilder or even snippets (both shipped with Geany itself). Part of the interface boilerplate is clear function signature declaration that allow for compile time checks, though.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/issues/1458#issuecomment-294351240">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJyO4nRqHVbfx3BBuejzKV1-TwCzaks5rwhRggaJpZM4M1Ajm">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ9USWu3XjbmNTtDlfeOa1t6QYmcOks5rwhRggaJpZM4M1Ajm.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/geany/geany/issues/1458#issuecomment-294351240"></link>
  <meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/geany/geany","title":"geany/geany","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/geany/geany"}},"updates":{"snippets":[{"icon":"PERSON","message":"@kugel- in #1458: \u003e Sorry not to be clear, DEFINING new GObjects is what is not so common, its no longer even in Glib.\r\nI don't understand that. GObject is part of GLib. GLib makes heavy use of GObjects and interfaces.\r\n\r\n\u003e How do you need any GObject knowledge to emit signals? eg https://github.com/geany/geany/blob/master/src/document.c#L711\r\n\r\nThat's just emitting. That doesn't show defining the signal (see geanyobject.c), or the modifications required to a given feature to be replacable or extensible through a signal (or other means).\r\n\r\nCalling an interface is equally a one liner (with added compile time checks): `my_interface_method(object);`\r\n\r\nI admit that defining an interfaces requires some boilerplate. Signal definitions also require boilerplate, but less of it. Both can be automated with classbuilder or even snippets (both shipped with Geany itself). Part of the interface boilerplate is clear function signature declaration that allow for compile time checks, though."}],"action":{"name":"View Issue","url":"https://github.com/geany/geany/issues/1458#issuecomment-294351240"}}}</script>