
#include <gst/gst.h>
#include <gst/base/gstcollectpads.h>
#include <gst/check/gsttestclock.h>
#include <gst/controller/gstinterpolationcontrolsource.h>
#include <gst/controller/gstlfocontrolsource.h>
#include <gst/controller/gsttriggercontrolsource.h>

GstStaticPadTemplate static_template = GST_STATIC_PAD_TEMPLATE ("static_template", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS_NONE);

int main(int argc, char** argv) {
    gst_init (&argc, &argv);

    GstBufferPool* gstbufferpool0 = gst_buffer_pool_new ();
    g_print ("gst_buffer_pool_new returns %s\n", g_object_is_floating (gstbufferpool0) ? "floating" : "transfer full");
    gst_object_unref (gstbufferpool0);

    GstBus* gstbus1 = gst_bus_new ();
    g_print ("gst_bus_new returns %s\n", g_object_is_floating (gstbus1) ? "floating" : "transfer full");
    gst_object_unref (gstbus1);

    GstTask* gsttask2 = gst_task_new (0, 0, 0);
    g_print ("gst_task_new returns %s\n", g_object_is_floating (gsttask2) ? "floating" : "transfer full");
    gst_object_unref (gsttask2);

    GstTaskPool* gsttaskpool3 = gst_task_pool_new ();
    g_print ("gst_task_pool_new returns %s\n", g_object_is_floating (gsttaskpool3) ? "floating" : "transfer full");
    gst_object_unref (gsttaskpool3);

    GstCollectPads* gstcollectpads4 = gst_collect_pads_new ();
    g_print ("gst_collect_pads_new returns %s\n", g_object_is_floating (gstcollectpads4) ? "floating" : "transfer full");
    gst_object_unref (gstcollectpads4);

    GstClock* gstclock5 = gst_test_clock_new ();
    g_print ("gst_test_clock_new returns %s\n", g_object_is_floating (gstclock5) ? "floating" : "transfer full");
    gst_object_unref (gstclock5);

    GstControlSource* gstcontrolsource6 = gst_interpolation_control_source_new ();
    g_print ("gst_interpolation_control_source_new returns %s\n", g_object_is_floating (gstcontrolsource6) ? "floating" : "transfer full");
    gst_object_unref (gstcontrolsource6);

    GstControlSource* gstcontrolsource7 = gst_lfo_control_source_new ();
    g_print ("gst_lfo_control_source_new returns %s\n", g_object_is_floating (gstcontrolsource7) ? "floating" : "transfer full");
    gst_object_unref (gstcontrolsource7);

    GstControlSource* gstcontrolsource8 = gst_trigger_control_source_new ();
    g_print ("gst_trigger_control_source_new returns %s\n", g_object_is_floating (gstcontrolsource8) ? "floating" : "transfer full");
    gst_object_unref (gstcontrolsource8);
    
    GstPadTemplate* template = gst_pad_template_new ("template", GST_PAD_SRC, GST_PAD_ALWAYS, GST_CAPS_NONE);
    
    GstPad* pad = gst_pad_new (0, GST_PAD_SINK);
    g_print ("gst_pad_new returns %s\n", g_object_is_floating (pad) ? "floating" : "transfer full");
    gst_object_unref (pad);
    
    pad = gst_pad_new_from_template (template, 0);
    g_print ("gst_pad_new_from_template returns %s\n", g_object_is_floating (pad) ? "floating" : "transfer full");
    gst_object_unref (pad);
    
    pad = gst_pad_new_from_static_template (&static_template, 0);
    g_print ("gst_pad_new_from_static_template returns %s\n", g_object_is_floating (pad) ? "floating" : "transfer full");
    gst_object_unref (pad);
    
    
    return 0;
};

