/* av-info.c generated by valac 0.36.4, the Vala compiler
 * generated from av-info.vala, do not modify */

/* This file is part of retro-gtk. License: GPLv3*/

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


#define RETRO_TYPE_GAME_GEOMETRY (retro_game_geometry_get_type ())
typedef struct _RetroGameGeometry RetroGameGeometry;

#define RETRO_TYPE_SYSTEM_TIMING (retro_system_timing_get_type ())
typedef struct _RetroSystemTiming RetroSystemTiming;

#define RETRO_TYPE_SYSTEM_AV_INFO (retro_system_av_info_get_type ())
typedef struct _RetroSystemAvInfo RetroSystemAvInfo;

struct _RetroGameGeometry {
	guint base_width;
	guint base_height;
	guint max_width;
	guint max_height;
	gfloat aspect_ratio;
};

struct _RetroSystemTiming {
	gdouble fps;
	gdouble sample_rate;
};

struct _RetroSystemAvInfo {
	RetroGameGeometry geometry;
	RetroSystemTiming timing;
};



GType retro_game_geometry_get_type (void) G_GNUC_CONST;
RetroGameGeometry* retro_game_geometry_dup (const RetroGameGeometry* self);
void retro_game_geometry_free (RetroGameGeometry* self);
GType retro_system_timing_get_type (void) G_GNUC_CONST;
RetroSystemTiming* retro_system_timing_dup (const RetroSystemTiming* self);
void retro_system_timing_free (RetroSystemTiming* self);
GType retro_system_av_info_get_type (void) G_GNUC_CONST;
RetroSystemAvInfo* retro_system_av_info_dup (const RetroSystemAvInfo* self);
void retro_system_av_info_free (RetroSystemAvInfo* self);


RetroGameGeometry* retro_game_geometry_dup (const RetroGameGeometry* self) {
	RetroGameGeometry* dup;
	dup = g_new0 (RetroGameGeometry, 1);
	memcpy (dup, self, sizeof (RetroGameGeometry));
	return dup;
}


void retro_game_geometry_free (RetroGameGeometry* self) {
	g_free (self);
}


GType retro_game_geometry_get_type (void) {
	static volatile gsize retro_game_geometry_type_id__volatile = 0;
	if (g_once_init_enter (&retro_game_geometry_type_id__volatile)) {
		GType retro_game_geometry_type_id;
		retro_game_geometry_type_id = g_boxed_type_register_static ("RetroGameGeometry", (GBoxedCopyFunc) retro_game_geometry_dup, (GBoxedFreeFunc) retro_game_geometry_free);
		g_once_init_leave (&retro_game_geometry_type_id__volatile, retro_game_geometry_type_id);
	}
	return retro_game_geometry_type_id__volatile;
}


RetroSystemTiming* retro_system_timing_dup (const RetroSystemTiming* self) {
	RetroSystemTiming* dup;
	dup = g_new0 (RetroSystemTiming, 1);
	memcpy (dup, self, sizeof (RetroSystemTiming));
	return dup;
}


void retro_system_timing_free (RetroSystemTiming* self) {
	g_free (self);
}


GType retro_system_timing_get_type (void) {
	static volatile gsize retro_system_timing_type_id__volatile = 0;
	if (g_once_init_enter (&retro_system_timing_type_id__volatile)) {
		GType retro_system_timing_type_id;
		retro_system_timing_type_id = g_boxed_type_register_static ("RetroSystemTiming", (GBoxedCopyFunc) retro_system_timing_dup, (GBoxedFreeFunc) retro_system_timing_free);
		g_once_init_leave (&retro_system_timing_type_id__volatile, retro_system_timing_type_id);
	}
	return retro_system_timing_type_id__volatile;
}


RetroSystemAvInfo* retro_system_av_info_dup (const RetroSystemAvInfo* self) {
	RetroSystemAvInfo* dup;
	dup = g_new0 (RetroSystemAvInfo, 1);
	memcpy (dup, self, sizeof (RetroSystemAvInfo));
	return dup;
}


void retro_system_av_info_free (RetroSystemAvInfo* self) {
	g_free (self);
}


GType retro_system_av_info_get_type (void) {
	static volatile gsize retro_system_av_info_type_id__volatile = 0;
	if (g_once_init_enter (&retro_system_av_info_type_id__volatile)) {
		GType retro_system_av_info_type_id;
		retro_system_av_info_type_id = g_boxed_type_register_static ("RetroSystemAvInfo", (GBoxedCopyFunc) retro_system_av_info_dup, (GBoxedFreeFunc) retro_system_av_info_free);
		g_once_init_leave (&retro_system_av_info_type_id__volatile, retro_system_av_info_type_id);
	}
	return retro_system_av_info_type_id__volatile;
}



