static void
iface_print_string (TestIface   *tiobj,
		    const gchar *string)
{
  TestIfaceClass *iface;

  g_return_if_fail (TEST_IS_IFACE (tiobj));
  g_return_if_fail (G_IS_OBJECT (tiobj)); /* ensured through prerequisite */

  iface = TEST_IFACE_GET_CLASS (tiobj);
  g_object_ref (tiobj);
  iface->print_string (tiobj, string);
  g_object_unref (tiobj);
}
Example #2
0
int
main( int argc, char **argv )
{
	TestBase *base, *base2;
	TestDerived *derived;

#if !GLIB_CHECK_VERSION( 2,36, 0 )
	g_type_init();
#endif

	g_debug( "allocating TestBase -------------------------------------" );
	base = test_base_new();
	g_debug( "calling test_iface_fna on Base object -------------------" );
	test_iface_fna( TEST_IFACE( base ));
	g_debug( "calling test_iface_fnb on Base object -------------------" );
	test_iface_fnb( TEST_IFACE( base ));

	g_debug( "allocating TestDerived ----------------------------------" );
	derived = test_derived_new();
	if( TEST_IS_IFACE( derived )){
		g_debug( "Derived is also an IFace" );
	} else {
		g_debug( "Derived is NOT an IFace" );
	}
	g_debug( "calling test_iface_fna on Derived object ----------------" );
	test_iface_fna( TEST_IFACE( derived ));
	g_debug( "calling test_iface_fnb on Derived object ----------------" );
	test_iface_fnb( TEST_IFACE( derived ));

	g_debug( "allocating TestBase -------------------------------------" );
	base2 = test_base_new();
	g_debug( "calling test_iface_fna on another Base object -------------------" );
	test_iface_fna( TEST_IFACE( base2 ));
	g_debug( "calling test_iface_fnb on another Base object -------------------" );
	test_iface_fnb( TEST_IFACE( base2 ));

	g_debug( "unreffing TestDerived ------------------------------------" );
	g_object_unref( derived );

	g_debug( "unreffing TestBase ------------------------------------" );
	g_object_unref( base );

	g_debug( "end -----------------------------------------------------" );

	return( 0 );
}