/* intersections.c generated by valac 0.56.0, the Vala compiler
 * generated from intersections.vala, do not modify */

#include "livechart.h"
#include <gee.h>
#include <glib-object.h>
#include <glib.h>
#include <float.h>
#include <math.h>
#include <string.h>

enum  {
	LIVE_CHART_INTERSECTIONS_0_PROPERTY,
	LIVE_CHART_INTERSECTIONS_NUM_PROPERTIES
};
static GParamSpec* live_chart_intersections_properties[LIVE_CHART_INTERSECTIONS_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
enum  {
	LIVE_CHART_INTERSECTION_0_PROPERTY,
	LIVE_CHART_INTERSECTION_REGION_PROPERTY,
	LIVE_CHART_INTERSECTION_START_X_PROPERTY,
	LIVE_CHART_INTERSECTION_END_X_PROPERTY,
	LIVE_CHART_INTERSECTION_NUM_PROPERTIES
};
static GParamSpec* live_chart_intersection_properties[LIVE_CHART_INTERSECTION_NUM_PROPERTIES];
#define _live_chart_region_unref0(var) ((var == NULL) ? NULL : (var = (live_chart_region_unref (var), NULL)))
#define _g_free0(var) ((var == NULL) ? NULL : (var = (g_free (var), NULL)))

struct _LiveChartIntersectionsPrivate {
	GeeList* intersections;
};

struct _LiveChartIntersectionPrivate {
	LiveChartRegion* _region;
	gdouble _start_x;
	gdouble _end_x;
};

static gint LiveChartIntersections_private_offset;
static gpointer live_chart_intersections_parent_class = NULL;
static gint LiveChartIntersection_private_offset;
static gpointer live_chart_intersection_parent_class = NULL;

static void live_chart_intersections_finalize (GObject * obj);
static GType live_chart_intersections_get_type_once (void);
static void live_chart_intersection_set_start_x (LiveChartIntersection* self,
                                          gdouble value);
static void live_chart_intersection_set_end_x (LiveChartIntersection* self,
                                        gdouble value);
static gdouble* _double_dup (gdouble* self);
static void live_chart_intersection_finalize (GObject * obj);
static GType live_chart_intersection_get_type_once (void);
static void _vala_live_chart_intersection_get_property (GObject * object,
                                                 guint property_id,
                                                 GValue * value,
                                                 GParamSpec * pspec);
static void _vala_live_chart_intersection_set_property (GObject * object,
                                                 guint property_id,
                                                 const GValue * value,
                                                 GParamSpec * pspec);

static inline gpointer
live_chart_intersections_get_instance_private (LiveChartIntersections* self)
{
	return G_STRUCT_MEMBER_P (self, LiveChartIntersections_private_offset);
}

void
live_chart_intersections_close (LiveChartIntersections* self,
                                gdouble x,
                                gdouble exited_at)
{
	GeeList* _tmp0_;
	gpointer _tmp1_;
	LiveChartIntersection* _tmp2_;
#line 5 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 6 "../src/intersections.vala"
	_tmp0_ = self->priv->intersections;
#line 6 "../src/intersections.vala"
	_tmp1_ = gee_list_last (_tmp0_);
#line 6 "../src/intersections.vala"
	_tmp2_ = (LiveChartIntersection*) _tmp1_;
#line 6 "../src/intersections.vala"
	live_chart_intersection_close (_tmp2_, x, exited_at);
#line 6 "../src/intersections.vala"
	_g_object_unref0 (_tmp2_);
#line 89 "intersections.c"
}

void
live_chart_intersections_update (LiveChartIntersections* self,
                                 gdouble x)
{
	GeeList* _tmp0_;
	gpointer _tmp1_;
	LiveChartIntersection* _tmp2_;
#line 9 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 10 "../src/intersections.vala"
	_tmp0_ = self->priv->intersections;
#line 10 "../src/intersections.vala"
	_tmp1_ = gee_list_last (_tmp0_);
#line 10 "../src/intersections.vala"
	_tmp2_ = (LiveChartIntersection*) _tmp1_;
#line 10 "../src/intersections.vala"
	live_chart_intersection_update (_tmp2_, x);
#line 10 "../src/intersections.vala"
	_g_object_unref0 (_tmp2_);
#line 111 "intersections.c"
}

void
live_chart_intersections_open (LiveChartIntersections* self,
                               LiveChartRegion* region,
                               gdouble x,
                               gdouble entered_at)
{
	LiveChartIntersection* intersection = NULL;
	LiveChartIntersection* _tmp0_;
	GeeList* _tmp1_;
#line 13 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 13 "../src/intersections.vala"
	g_return_if_fail (region != NULL);
#line 14 "../src/intersections.vala"
	_tmp0_ = live_chart_intersection_new (region, x, entered_at);
#line 14 "../src/intersections.vala"
	intersection = _tmp0_;
#line 15 "../src/intersections.vala"
	_tmp1_ = self->priv->intersections;
#line 15 "../src/intersections.vala"
	gee_collection_add ((GeeCollection*) _tmp1_, intersection);
#line 13 "../src/intersections.vala"
	_g_object_unref0 (intersection);
#line 137 "intersections.c"
}

void
live_chart_intersections_open_without_entrypoint (LiveChartIntersections* self,
                                                  LiveChartRegion* region,
                                                  gdouble x)
{
	LiveChartIntersection* intersection = NULL;
	LiveChartIntersection* _tmp0_;
	GeeList* _tmp1_;
#line 18 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 18 "../src/intersections.vala"
	g_return_if_fail (region != NULL);
#line 19 "../src/intersections.vala"
	_tmp0_ = live_chart_intersection_new_without_entry_point (region, x);
#line 19 "../src/intersections.vala"
	intersection = _tmp0_;
#line 20 "../src/intersections.vala"
	_tmp1_ = self->priv->intersections;
#line 20 "../src/intersections.vala"
	gee_collection_add ((GeeCollection*) _tmp1_, intersection);
#line 18 "../src/intersections.vala"
	_g_object_unref0 (intersection);
#line 162 "intersections.c"
}

void
live_chart_intersections_foreach (LiveChartIntersections* self,
                                  GeeForallFunc f,
                                  gpointer f_target)
{
	GeeList* _tmp0_;
#line 23 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 24 "../src/intersections.vala"
	_tmp0_ = self->priv->intersections;
#line 24 "../src/intersections.vala"
	gee_traversable_foreach ((GeeTraversable*) _tmp0_, f, f_target);
#line 177 "intersections.c"
}

gboolean
live_chart_intersections_has_an_opened_intersection (LiveChartIntersections* self)
{
	gboolean _tmp0_ = FALSE;
	GeeList* _tmp1_;
	gint _tmp2_;
	gint _tmp3_;
	gboolean result;
#line 27 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 28 "../src/intersections.vala"
	_tmp1_ = self->priv->intersections;
#line 28 "../src/intersections.vala"
	_tmp2_ = gee_collection_get_size ((GeeCollection*) _tmp1_);
#line 28 "../src/intersections.vala"
	_tmp3_ = _tmp2_;
#line 28 "../src/intersections.vala"
	if (_tmp3_ > 0) {
#line 198 "intersections.c"
		GeeList* _tmp4_;
		gpointer _tmp5_;
		LiveChartIntersection* _tmp6_;
#line 28 "../src/intersections.vala"
		_tmp4_ = self->priv->intersections;
#line 28 "../src/intersections.vala"
		_tmp5_ = gee_list_last (_tmp4_);
#line 28 "../src/intersections.vala"
		_tmp6_ = (LiveChartIntersection*) _tmp5_;
#line 28 "../src/intersections.vala"
		_tmp0_ = live_chart_intersection_is_open (_tmp6_);
#line 28 "../src/intersections.vala"
		_g_object_unref0 (_tmp6_);
#line 212 "intersections.c"
	} else {
#line 28 "../src/intersections.vala"
		_tmp0_ = FALSE;
#line 216 "intersections.c"
	}
#line 28 "../src/intersections.vala"
	result = _tmp0_;
#line 28 "../src/intersections.vala"
	return result;
#line 222 "intersections.c"
}

static gpointer
_live_chart_region_ref0 (gpointer self)
{
#line 31 "../src/intersections.vala"
	return self ? live_chart_region_ref (self) : NULL;
#line 230 "intersections.c"
}

LiveChartRegion*
live_chart_intersections_get_current_region (LiveChartIntersections* self)
{
	GeeList* _tmp0_;
	gpointer _tmp1_;
	LiveChartIntersection* _tmp2_;
	LiveChartRegion* _tmp3_;
	LiveChartRegion* _tmp4_;
	LiveChartRegion* _tmp5_;
	LiveChartRegion* _tmp6_;
	LiveChartRegion* result;
#line 30 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 31 "../src/intersections.vala"
	_tmp0_ = self->priv->intersections;
#line 31 "../src/intersections.vala"
	_tmp1_ = gee_list_last (_tmp0_);
#line 31 "../src/intersections.vala"
	_tmp2_ = (LiveChartIntersection*) _tmp1_;
#line 31 "../src/intersections.vala"
	_tmp3_ = live_chart_intersection_get_region (_tmp2_);
#line 31 "../src/intersections.vala"
	_tmp4_ = _tmp3_;
#line 31 "../src/intersections.vala"
	_tmp5_ = _live_chart_region_ref0 (_tmp4_);
#line 31 "../src/intersections.vala"
	_tmp6_ = _tmp5_;
#line 31 "../src/intersections.vala"
	_g_object_unref0 (_tmp2_);
#line 31 "../src/intersections.vala"
	result = _tmp6_;
#line 31 "../src/intersections.vala"
	return result;
#line 266 "intersections.c"
}

gint
live_chart_intersections_size (LiveChartIntersections* self)
{
	GeeList* _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
	gint result;
#line 34 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, 0);
#line 35 "../src/intersections.vala"
	_tmp0_ = self->priv->intersections;
#line 35 "../src/intersections.vala"
	_tmp1_ = gee_collection_get_size ((GeeCollection*) _tmp0_);
#line 35 "../src/intersections.vala"
	_tmp2_ = _tmp1_;
#line 35 "../src/intersections.vala"
	result = _tmp2_;
#line 35 "../src/intersections.vala"
	return result;
#line 288 "intersections.c"
}

LiveChartIntersection*
live_chart_intersections_get (LiveChartIntersections* self,
                              gint index)
{
	GeeList* _tmp0_;
	gpointer _tmp1_;
	LiveChartIntersection* result;
#line 38 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 39 "../src/intersections.vala"
	_tmp0_ = self->priv->intersections;
#line 39 "../src/intersections.vala"
	_tmp1_ = gee_list_get (_tmp0_, index);
#line 39 "../src/intersections.vala"
	result = (LiveChartIntersection*) _tmp1_;
#line 39 "../src/intersections.vala"
	return result;
#line 308 "intersections.c"
}

LiveChartIntersections*
live_chart_intersections_construct (GType object_type)
{
	LiveChartIntersections * self = NULL;
#line 2 "../src/intersections.vala"
	self = (LiveChartIntersections*) g_object_new (object_type, NULL);
#line 2 "../src/intersections.vala"
	return self;
#line 319 "intersections.c"
}

LiveChartIntersections*
live_chart_intersections_new (void)
{
#line 2 "../src/intersections.vala"
	return live_chart_intersections_construct (LIVE_CHART_TYPE_INTERSECTIONS);
#line 327 "intersections.c"
}

static void
live_chart_intersections_class_init (LiveChartIntersectionsClass * klass,
                                     gpointer klass_data)
{
#line 2 "../src/intersections.vala"
	live_chart_intersections_parent_class = g_type_class_peek_parent (klass);
#line 2 "../src/intersections.vala"
	g_type_class_adjust_private_offset (klass, &LiveChartIntersections_private_offset);
#line 2 "../src/intersections.vala"
	G_OBJECT_CLASS (klass)->finalize = live_chart_intersections_finalize;
#line 340 "intersections.c"
}

static void
live_chart_intersections_instance_init (LiveChartIntersections * self,
                                        gpointer klass)
{
	GeeArrayList* _tmp0_;
#line 2 "../src/intersections.vala"
	self->priv = live_chart_intersections_get_instance_private (self);
#line 3 "../src/intersections.vala"
	_tmp0_ = gee_array_list_new (LIVE_CHART_TYPE_INTERSECTION, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 3 "../src/intersections.vala"
	self->priv->intersections = (GeeList*) _tmp0_;
#line 354 "intersections.c"
}

static void
live_chart_intersections_finalize (GObject * obj)
{
	LiveChartIntersections * self;
#line 2 "../src/intersections.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, LIVE_CHART_TYPE_INTERSECTIONS, LiveChartIntersections);
#line 3 "../src/intersections.vala"
	_g_object_unref0 (self->priv->intersections);
#line 2 "../src/intersections.vala"
	G_OBJECT_CLASS (live_chart_intersections_parent_class)->finalize (obj);
#line 367 "intersections.c"
}

static GType
live_chart_intersections_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (LiveChartIntersectionsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) live_chart_intersections_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (LiveChartIntersections), 0, (GInstanceInitFunc) live_chart_intersections_instance_init, NULL };
	GType live_chart_intersections_type_id;
	live_chart_intersections_type_id = g_type_register_static (G_TYPE_OBJECT, "LiveChartIntersections", &g_define_type_info, 0);
	LiveChartIntersections_private_offset = g_type_add_instance_private (live_chart_intersections_type_id, sizeof (LiveChartIntersectionsPrivate));
	return live_chart_intersections_type_id;
}

GType
live_chart_intersections_get_type (void)
{
	static volatile gsize live_chart_intersections_type_id__once = 0;
	if (g_once_init_enter (&live_chart_intersections_type_id__once)) {
		GType live_chart_intersections_type_id;
		live_chart_intersections_type_id = live_chart_intersections_get_type_once ();
		g_once_init_leave (&live_chart_intersections_type_id__once, live_chart_intersections_type_id);
	}
	return live_chart_intersections_type_id__once;
}

static inline gpointer
live_chart_intersection_get_instance_private (LiveChartIntersection* self)
{
	return G_STRUCT_MEMBER_P (self, LiveChartIntersection_private_offset);
}

static gdouble*
_double_dup (gdouble* self)
{
	gdouble* dup;
#line 54 "../src/intersections.vala"
	dup = g_new0 (gdouble, 1);
#line 54 "../src/intersections.vala"
	memcpy (dup, self, sizeof (gdouble));
#line 54 "../src/intersections.vala"
	return dup;
#line 408 "intersections.c"
}

static gpointer
__double_dup0 (gpointer self)
{
#line 54 "../src/intersections.vala"
	return self ? _double_dup (self) : NULL;
#line 416 "intersections.c"
}

LiveChartIntersection*
live_chart_intersection_construct (GType object_type,
                                   LiveChartRegion* region,
                                   gdouble start_x,
                                   gdouble entered_at)
{
	LiveChartIntersection * self = NULL;
	gdouble* _tmp0_;
#line 50 "../src/intersections.vala"
	g_return_val_if_fail (region != NULL, NULL);
#line 50 "../src/intersections.vala"
	self = (LiveChartIntersection*) g_object_new (object_type, NULL);
#line 51 "../src/intersections.vala"
	live_chart_intersection_set_region (self, region);
#line 52 "../src/intersections.vala"
	live_chart_intersection_set_start_x (self, start_x);
#line 53 "../src/intersections.vala"
	live_chart_intersection_set_end_x (self, start_x);
#line 54 "../src/intersections.vala"
	_tmp0_ = __double_dup0 (&entered_at);
#line 54 "../src/intersections.vala"
	_g_free0 (self->entered_at);
#line 54 "../src/intersections.vala"
	self->entered_at = _tmp0_;
#line 50 "../src/intersections.vala"
	return self;
#line 445 "intersections.c"
}

LiveChartIntersection*
live_chart_intersection_new (LiveChartRegion* region,
                             gdouble start_x,
                             gdouble entered_at)
{
#line 50 "../src/intersections.vala"
	return live_chart_intersection_construct (LIVE_CHART_TYPE_INTERSECTION, region, start_x, entered_at);
#line 455 "intersections.c"
}

LiveChartIntersection*
live_chart_intersection_construct_without_entry_point (GType object_type,
                                                       LiveChartRegion* region,
                                                       gdouble start_x)
{
	LiveChartIntersection * self = NULL;
#line 56 "../src/intersections.vala"
	g_return_val_if_fail (region != NULL, NULL);
#line 56 "../src/intersections.vala"
	self = (LiveChartIntersection*) g_object_new (object_type, NULL);
#line 57 "../src/intersections.vala"
	live_chart_intersection_set_region (self, region);
#line 58 "../src/intersections.vala"
	live_chart_intersection_set_start_x (self, start_x);
#line 59 "../src/intersections.vala"
	live_chart_intersection_set_end_x (self, start_x);
#line 56 "../src/intersections.vala"
	return self;
#line 476 "intersections.c"
}

LiveChartIntersection*
live_chart_intersection_new_without_entry_point (LiveChartRegion* region,
                                                 gdouble start_x)
{
#line 56 "../src/intersections.vala"
	return live_chart_intersection_construct_without_entry_point (LIVE_CHART_TYPE_INTERSECTION, region, start_x);
#line 485 "intersections.c"
}

void
live_chart_intersection_update (LiveChartIntersection* self,
                                gdouble x)
{
#line 62 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 63 "../src/intersections.vala"
	live_chart_intersection_set_end_x (self, x);
#line 496 "intersections.c"
}

void
live_chart_intersection_close (LiveChartIntersection* self,
                               gdouble x,
                               gdouble exited_at)
{
	gdouble* _tmp0_;
#line 66 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 67 "../src/intersections.vala"
	live_chart_intersection_set_end_x (self, x);
#line 68 "../src/intersections.vala"
	_tmp0_ = __double_dup0 (&exited_at);
#line 68 "../src/intersections.vala"
	_g_free0 (self->exited_at);
#line 68 "../src/intersections.vala"
	self->exited_at = _tmp0_;
#line 515 "intersections.c"
}

gboolean
live_chart_intersection_is_open (LiveChartIntersection* self)
{
	gdouble* _tmp0_;
	gboolean result;
#line 71 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 72 "../src/intersections.vala"
	_tmp0_ = self->exited_at;
#line 72 "../src/intersections.vala"
	result = _tmp0_ == NULL;
#line 72 "../src/intersections.vala"
	return result;
#line 531 "intersections.c"
}

gboolean
live_chart_intersection_is_closed (LiveChartIntersection* self)
{
	gdouble* _tmp0_;
	gboolean result;
#line 75 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, FALSE);
#line 76 "../src/intersections.vala"
	_tmp0_ = self->exited_at;
#line 76 "../src/intersections.vala"
	result = _tmp0_ != NULL;
#line 76 "../src/intersections.vala"
	return result;
#line 547 "intersections.c"
}

LiveChartRegion*
live_chart_intersection_get_region (LiveChartIntersection* self)
{
	LiveChartRegion* result;
	LiveChartRegion* _tmp0_;
#line 44 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 44 "../src/intersections.vala"
	_tmp0_ = self->priv->_region;
#line 44 "../src/intersections.vala"
	result = _tmp0_;
#line 44 "../src/intersections.vala"
	return result;
#line 563 "intersections.c"
}

void
live_chart_intersection_set_region (LiveChartIntersection* self,
                                    LiveChartRegion* value)
{
	LiveChartRegion* old_value;
#line 44 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 44 "../src/intersections.vala"
	old_value = live_chart_intersection_get_region (self);
#line 44 "../src/intersections.vala"
	if (old_value != value) {
#line 577 "intersections.c"
		LiveChartRegion* _tmp0_;
#line 44 "../src/intersections.vala"
		_tmp0_ = _live_chart_region_ref0 (value);
#line 44 "../src/intersections.vala"
		_live_chart_region_unref0 (self->priv->_region);
#line 44 "../src/intersections.vala"
		self->priv->_region = _tmp0_;
#line 44 "../src/intersections.vala"
		g_object_notify_by_pspec ((GObject *) self, live_chart_intersection_properties[LIVE_CHART_INTERSECTION_REGION_PROPERTY]);
#line 587 "intersections.c"
	}
}

gdouble
live_chart_intersection_get_start_x (LiveChartIntersection* self)
{
	gdouble result;
#line 45 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, 0.0);
#line 45 "../src/intersections.vala"
	result = self->priv->_start_x;
#line 45 "../src/intersections.vala"
	return result;
#line 601 "intersections.c"
}

static void
live_chart_intersection_set_start_x (LiveChartIntersection* self,
                                     gdouble value)
{
	gdouble old_value;
#line 45 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 45 "../src/intersections.vala"
	old_value = live_chart_intersection_get_start_x (self);
#line 45 "../src/intersections.vala"
	if (old_value != value) {
#line 45 "../src/intersections.vala"
		self->priv->_start_x = value;
#line 45 "../src/intersections.vala"
		g_object_notify_by_pspec ((GObject *) self, live_chart_intersection_properties[LIVE_CHART_INTERSECTION_START_X_PROPERTY]);
#line 619 "intersections.c"
	}
}

gdouble
live_chart_intersection_get_end_x (LiveChartIntersection* self)
{
	gdouble result;
#line 46 "../src/intersections.vala"
	g_return_val_if_fail (self != NULL, 0.0);
#line 46 "../src/intersections.vala"
	result = self->priv->_end_x;
#line 46 "../src/intersections.vala"
	return result;
#line 633 "intersections.c"
}

static void
live_chart_intersection_set_end_x (LiveChartIntersection* self,
                                   gdouble value)
{
	gdouble old_value;
#line 46 "../src/intersections.vala"
	g_return_if_fail (self != NULL);
#line 46 "../src/intersections.vala"
	old_value = live_chart_intersection_get_end_x (self);
#line 46 "../src/intersections.vala"
	if (old_value != value) {
#line 46 "../src/intersections.vala"
		self->priv->_end_x = value;
#line 46 "../src/intersections.vala"
		g_object_notify_by_pspec ((GObject *) self, live_chart_intersection_properties[LIVE_CHART_INTERSECTION_END_X_PROPERTY]);
#line 651 "intersections.c"
	}
}

static void
live_chart_intersection_class_init (LiveChartIntersectionClass * klass,
                                    gpointer klass_data)
{
#line 43 "../src/intersections.vala"
	live_chart_intersection_parent_class = g_type_class_peek_parent (klass);
#line 43 "../src/intersections.vala"
	g_type_class_adjust_private_offset (klass, &LiveChartIntersection_private_offset);
#line 43 "../src/intersections.vala"
	G_OBJECT_CLASS (klass)->get_property = _vala_live_chart_intersection_get_property;
#line 43 "../src/intersections.vala"
	G_OBJECT_CLASS (klass)->set_property = _vala_live_chart_intersection_set_property;
#line 43 "../src/intersections.vala"
	G_OBJECT_CLASS (klass)->finalize = live_chart_intersection_finalize;
#line 43 "../src/intersections.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), LIVE_CHART_INTERSECTION_REGION_PROPERTY, live_chart_intersection_properties[LIVE_CHART_INTERSECTION_REGION_PROPERTY] = live_chart_param_spec_region ("region", "region", "region", LIVE_CHART_TYPE_REGION, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
#line 43 "../src/intersections.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), LIVE_CHART_INTERSECTION_START_X_PROPERTY, live_chart_intersection_properties[LIVE_CHART_INTERSECTION_START_X_PROPERTY] = g_param_spec_double ("start-x", "start-x", "start-x", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 43 "../src/intersections.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), LIVE_CHART_INTERSECTION_END_X_PROPERTY, live_chart_intersection_properties[LIVE_CHART_INTERSECTION_END_X_PROPERTY] = g_param_spec_double ("end-x", "end-x", "end-x", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 675 "intersections.c"
}

static void
live_chart_intersection_instance_init (LiveChartIntersection * self,
                                       gpointer klass)
{
#line 43 "../src/intersections.vala"
	self->priv = live_chart_intersection_get_instance_private (self);
#line 684 "intersections.c"
}

static void
live_chart_intersection_finalize (GObject * obj)
{
	LiveChartIntersection * self;
#line 43 "../src/intersections.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, LIVE_CHART_TYPE_INTERSECTION, LiveChartIntersection);
#line 44 "../src/intersections.vala"
	_live_chart_region_unref0 (self->priv->_region);
#line 47 "../src/intersections.vala"
	_g_free0 (self->entered_at);
#line 48 "../src/intersections.vala"
	_g_free0 (self->exited_at);
#line 43 "../src/intersections.vala"
	G_OBJECT_CLASS (live_chart_intersection_parent_class)->finalize (obj);
#line 701 "intersections.c"
}

static GType
live_chart_intersection_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (LiveChartIntersectionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) live_chart_intersection_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (LiveChartIntersection), 0, (GInstanceInitFunc) live_chart_intersection_instance_init, NULL };
	GType live_chart_intersection_type_id;
	live_chart_intersection_type_id = g_type_register_static (G_TYPE_OBJECT, "LiveChartIntersection", &g_define_type_info, 0);
	LiveChartIntersection_private_offset = g_type_add_instance_private (live_chart_intersection_type_id, sizeof (LiveChartIntersectionPrivate));
	return live_chart_intersection_type_id;
}

GType
live_chart_intersection_get_type (void)
{
	static volatile gsize live_chart_intersection_type_id__once = 0;
	if (g_once_init_enter (&live_chart_intersection_type_id__once)) {
		GType live_chart_intersection_type_id;
		live_chart_intersection_type_id = live_chart_intersection_get_type_once ();
		g_once_init_leave (&live_chart_intersection_type_id__once, live_chart_intersection_type_id);
	}
	return live_chart_intersection_type_id__once;
}

static void
_vala_live_chart_intersection_get_property (GObject * object,
                                            guint property_id,
                                            GValue * value,
                                            GParamSpec * pspec)
{
	LiveChartIntersection * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, LIVE_CHART_TYPE_INTERSECTION, LiveChartIntersection);
#line 43 "../src/intersections.vala"
	switch (property_id) {
#line 43 "../src/intersections.vala"
		case LIVE_CHART_INTERSECTION_REGION_PROPERTY:
#line 43 "../src/intersections.vala"
		live_chart_value_set_region (value, live_chart_intersection_get_region (self));
#line 43 "../src/intersections.vala"
		break;
#line 43 "../src/intersections.vala"
		case LIVE_CHART_INTERSECTION_START_X_PROPERTY:
#line 43 "../src/intersections.vala"
		g_value_set_double (value, live_chart_intersection_get_start_x (self));
#line 43 "../src/intersections.vala"
		break;
#line 43 "../src/intersections.vala"
		case LIVE_CHART_INTERSECTION_END_X_PROPERTY:
#line 43 "../src/intersections.vala"
		g_value_set_double (value, live_chart_intersection_get_end_x (self));
#line 43 "../src/intersections.vala"
		break;
#line 754 "intersections.c"
		default:
#line 43 "../src/intersections.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 43 "../src/intersections.vala"
		break;
#line 760 "intersections.c"
	}
}

static void
_vala_live_chart_intersection_set_property (GObject * object,
                                            guint property_id,
                                            const GValue * value,
                                            GParamSpec * pspec)
{
	LiveChartIntersection * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, LIVE_CHART_TYPE_INTERSECTION, LiveChartIntersection);
#line 43 "../src/intersections.vala"
	switch (property_id) {
#line 43 "../src/intersections.vala"
		case LIVE_CHART_INTERSECTION_REGION_PROPERTY:
#line 43 "../src/intersections.vala"
		live_chart_intersection_set_region (self, live_chart_value_get_region (value));
#line 43 "../src/intersections.vala"
		break;
#line 43 "../src/intersections.vala"
		case LIVE_CHART_INTERSECTION_START_X_PROPERTY:
#line 43 "../src/intersections.vala"
		live_chart_intersection_set_start_x (self, g_value_get_double (value));
#line 43 "../src/intersections.vala"
		break;
#line 43 "../src/intersections.vala"
		case LIVE_CHART_INTERSECTION_END_X_PROPERTY:
#line 43 "../src/intersections.vala"
		live_chart_intersection_set_end_x (self, g_value_get_double (value));
#line 43 "../src/intersections.vala"
		break;
#line 792 "intersections.c"
		default:
#line 43 "../src/intersections.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 43 "../src/intersections.vala"
		break;
#line 798 "intersections.c"
	}
}

