/* cpu-capabilities.c generated by valac 0.56.19, the Vala compiler
 * generated from cpu-capabilities.vala, do not modify */

#include "protonplus_core.h"
#include <glib.h>
#include <glib-object.h>
#include <string.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif

enum  {
	PROTON_PLUS_MODELS_X86_64FEATURES_0_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_CMPXCHG16B_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_LAHF_SAHF_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_POPCNT_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_SSE3_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_1_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_2_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_SSSE3_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_AVX_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_AVX2_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_BMI1_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_BMI2_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_F16C_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_FMA_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_LZCNT_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_MOVBE_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_OSXSAVE_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_XMM_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_YMM_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_AVX512F_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_AVX512BW_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_AVX512CD_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_AVX512DQ_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_AVX512VL_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_OPMASK_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_ZMM_HI256_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_HI16_ZMM_PROPERTY,
	PROTON_PLUS_MODELS_X86_64FEATURES_NUM_PROPERTIES
};
static GParamSpec* proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_NUM_PROPERTIES];
enum  {
	PROTON_PLUS_MODELS_AARCH64_FEATURES_0_PROPERTY,
	PROTON_PLUS_MODELS_AARCH64_FEATURES_CRC32_PROPERTY,
	PROTON_PLUS_MODELS_AARCH64_FEATURES_LSE_ATOMICS_PROPERTY,
	PROTON_PLUS_MODELS_AARCH64_FEATURES_RDMA_PROPERTY,
	PROTON_PLUS_MODELS_AARCH64_FEATURES_NUM_PROPERTIES
};
static GParamSpec* proton_plus_models_aarch64_features_properties[PROTON_PLUS_MODELS_AARCH64_FEATURES_NUM_PROPERTIES];
enum  {
	PROTON_PLUS_MODELS_CPU_CAPABILITIES_0_PROPERTY,
	PROTON_PLUS_MODELS_CPU_CAPABILITIES_ARCHITECTURE_PROPERTY,
	PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_X86_64_LEVEL_PROPERTY,
	PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_AARCH64_LEVEL_PROPERTY,
	PROTON_PLUS_MODELS_CPU_CAPABILITIES_NUM_PROPERTIES
};
static GParamSpec* proton_plus_models_cpu_capabilities_properties[PROTON_PLUS_MODELS_CPU_CAPABILITIES_NUM_PROPERTIES];

struct _ProtonPlusModelsX86_64FeaturesPrivate {
	gboolean _cmpxchg16b;
	gboolean _lahf_sahf;
	gboolean _popcnt;
	gboolean _sse3;
	gboolean _sse4_1;
	gboolean _sse4_2;
	gboolean _ssse3;
	gboolean _avx;
	gboolean _avx2;
	gboolean _bmi1;
	gboolean _bmi2;
	gboolean _f16c;
	gboolean _fma;
	gboolean _lzcnt;
	gboolean _movbe;
	gboolean _osxsave;
	gboolean _xcr0_xmm;
	gboolean _xcr0_ymm;
	gboolean _avx512f;
	gboolean _avx512bw;
	gboolean _avx512cd;
	gboolean _avx512dq;
	gboolean _avx512vl;
	gboolean _xcr0_opmask;
	gboolean _xcr0_zmm_hi256;
	gboolean _xcr0_hi16_zmm;
};

struct _ProtonPlusModelsAarch64FeaturesPrivate {
	gboolean _crc32;
	gboolean _lse_atomics;
	gboolean _rdma;
};

struct _ProtonPlusModelsCpuCapabilitiesPrivate {
	ProtonPlusModelsCpuArchitecture _architecture;
	ProtonPlusModelsX86_64Level _maximum_x86_64_level;
	ProtonPlusModelsAarch64Level _maximum_aarch64_level;
};

static gint ProtonPlusModelsX86_64Features_private_offset;
static gpointer proton_plus_models_x86_64features_parent_class = NULL;
static gint ProtonPlusModelsAarch64Features_private_offset;
static gpointer proton_plus_models_aarch64_features_parent_class = NULL;
static gint ProtonPlusModelsCpuCapabilities_private_offset;
static gpointer proton_plus_models_cpu_capabilities_parent_class = NULL;

static void proton_plus_models_x86_64features_finalize (GObject * obj);
static GType proton_plus_models_x86_64features_get_type_once (void);
static void _vala_proton_plus_models_x86_64features_get_property (GObject * object,
                                                           guint property_id,
                                                           GValue * value,
                                                           GParamSpec * pspec);
static void _vala_proton_plus_models_x86_64features_set_property (GObject * object,
                                                           guint property_id,
                                                           const GValue * value,
                                                           GParamSpec * pspec);
static void proton_plus_models_aarch64_features_finalize (GObject * obj);
static GType proton_plus_models_aarch64_features_get_type_once (void);
static void _vala_proton_plus_models_aarch64_features_get_property (GObject * object,
                                                             guint property_id,
                                                             GValue * value,
                                                             GParamSpec * pspec);
static void _vala_proton_plus_models_aarch64_features_set_property (GObject * object,
                                                             guint property_id,
                                                             const GValue * value,
                                                             GParamSpec * pspec);
static void proton_plus_models_cpu_capabilities_set_architecture (ProtonPlusModelsCpuCapabilities* self,
                                                           ProtonPlusModelsCpuArchitecture value);
static void proton_plus_models_cpu_capabilities_set_maximum_x86_64_level (ProtonPlusModelsCpuCapabilities* self,
                                                                   ProtonPlusModelsX86_64Level value);
static void proton_plus_models_cpu_capabilities_set_maximum_aarch64_level (ProtonPlusModelsCpuCapabilities* self,
                                                                    ProtonPlusModelsAarch64Level value);
static void proton_plus_models_cpu_capabilities_finalize (GObject * obj);
static GType proton_plus_models_cpu_capabilities_get_type_once (void);
static void _vala_proton_plus_models_cpu_capabilities_get_property (GObject * object,
                                                             guint property_id,
                                                             GValue * value,
                                                             GParamSpec * pspec);
static void _vala_proton_plus_models_cpu_capabilities_set_property (GObject * object,
                                                             guint property_id,
                                                             const GValue * value,
                                                             GParamSpec * pspec);
static inline gpointer _vala_memdup2 (gconstpointer mem,
                        gsize byte_size);

static GType
proton_plus_models_cpu_architecture_get_type_once (void)
{
	static const GEnumValue values[] = {{PROTON_PLUS_MODELS_CPU_ARCHITECTURE_UNKNOWN, "PROTON_PLUS_MODELS_CPU_ARCHITECTURE_UNKNOWN", "unknown"}, {PROTON_PLUS_MODELS_CPU_ARCHITECTURE_X86_32, "PROTON_PLUS_MODELS_CPU_ARCHITECTURE_X86_32", "x86-32"}, {PROTON_PLUS_MODELS_CPU_ARCHITECTURE_X86_64, "PROTON_PLUS_MODELS_CPU_ARCHITECTURE_X86_64", "x86-64"}, {PROTON_PLUS_MODELS_CPU_ARCHITECTURE_AARCH64, "PROTON_PLUS_MODELS_CPU_ARCHITECTURE_AARCH64", "aarch64"}, {0, NULL, NULL}};
	GType proton_plus_models_cpu_architecture_type_id;
	proton_plus_models_cpu_architecture_type_id = g_enum_register_static ("ProtonPlusModelsCpuArchitecture", values);
	return proton_plus_models_cpu_architecture_type_id;
}

GType
proton_plus_models_cpu_architecture_get_type (void)
{
	static volatile gsize proton_plus_models_cpu_architecture_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_cpu_architecture_type_id__once)) {
		GType proton_plus_models_cpu_architecture_type_id;
		proton_plus_models_cpu_architecture_type_id = proton_plus_models_cpu_architecture_get_type_once ();
		g_once_init_leave (&proton_plus_models_cpu_architecture_type_id__once, proton_plus_models_cpu_architecture_type_id);
	}
	return proton_plus_models_cpu_architecture_type_id__once;
}

static GType
proton_plus_models_x86_64level_get_type_once (void)
{
	static const GEnumValue values[] = {{PROTON_PLUS_MODELS_X86_64LEVEL_UNKNOWN, "PROTON_PLUS_MODELS_X86_64LEVEL_UNKNOWN", "unknown"}, {PROTON_PLUS_MODELS_X86_64LEVEL_BASELINE, "PROTON_PLUS_MODELS_X86_64LEVEL_BASELINE", "baseline"}, {PROTON_PLUS_MODELS_X86_64LEVEL_V2, "PROTON_PLUS_MODELS_X86_64LEVEL_V2", "v2"}, {PROTON_PLUS_MODELS_X86_64LEVEL_V3, "PROTON_PLUS_MODELS_X86_64LEVEL_V3", "v3"}, {PROTON_PLUS_MODELS_X86_64LEVEL_V4, "PROTON_PLUS_MODELS_X86_64LEVEL_V4", "v4"}, {0, NULL, NULL}};
	GType proton_plus_models_x86_64level_type_id;
	proton_plus_models_x86_64level_type_id = g_enum_register_static ("ProtonPlusModelsX86_64Level", values);
	return proton_plus_models_x86_64level_type_id;
}

GType
proton_plus_models_x86_64level_get_type (void)
{
	static volatile gsize proton_plus_models_x86_64level_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_x86_64level_type_id__once)) {
		GType proton_plus_models_x86_64level_type_id;
		proton_plus_models_x86_64level_type_id = proton_plus_models_x86_64level_get_type_once ();
		g_once_init_leave (&proton_plus_models_x86_64level_type_id__once, proton_plus_models_x86_64level_type_id);
	}
	return proton_plus_models_x86_64level_type_id__once;
}

static GType
proton_plus_models_aarch64_level_get_type_once (void)
{
	static const GEnumValue values[] = {{PROTON_PLUS_MODELS_AARCH64_LEVEL_UNKNOWN, "PROTON_PLUS_MODELS_AARCH64_LEVEL_UNKNOWN", "unknown"}, {PROTON_PLUS_MODELS_AARCH64_LEVEL_V8_0, "PROTON_PLUS_MODELS_AARCH64_LEVEL_V8_0", "v8-0"}, {PROTON_PLUS_MODELS_AARCH64_LEVEL_V8_1, "PROTON_PLUS_MODELS_AARCH64_LEVEL_V8_1", "v8-1"}, {0, NULL, NULL}};
	GType proton_plus_models_aarch64_level_type_id;
	proton_plus_models_aarch64_level_type_id = g_enum_register_static ("ProtonPlusModelsAarch64Level", values);
	return proton_plus_models_aarch64_level_type_id;
}

GType
proton_plus_models_aarch64_level_get_type (void)
{
	static volatile gsize proton_plus_models_aarch64_level_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_aarch64_level_type_id__once)) {
		GType proton_plus_models_aarch64_level_type_id;
		proton_plus_models_aarch64_level_type_id = proton_plus_models_aarch64_level_get_type_once ();
		g_once_init_leave (&proton_plus_models_aarch64_level_type_id__once, proton_plus_models_aarch64_level_type_id);
	}
	return proton_plus_models_aarch64_level_type_id__once;
}

static inline gpointer
proton_plus_models_x86_64features_get_instance_private (ProtonPlusModelsX86_64Features* self)
{
	return G_STRUCT_MEMBER_P (self, ProtonPlusModelsX86_64Features_private_offset);
}

ProtonPlusModelsX86_64Features*
proton_plus_models_x86_64features_construct (GType object_type)
{
	ProtonPlusModelsX86_64Features * self = NULL;
	self = (ProtonPlusModelsX86_64Features*) g_object_new (object_type, NULL);
	return self;
}

ProtonPlusModelsX86_64Features*
proton_plus_models_x86_64features_new (void)
{
	return proton_plus_models_x86_64features_construct (PROTON_PLUS_MODELS_TYPE_X86_64FEATURES);
}

gboolean
proton_plus_models_x86_64features_get_cmpxchg16b (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_cmpxchg16b;
	return result;
}

void
proton_plus_models_x86_64features_set_cmpxchg16b (ProtonPlusModelsX86_64Features* self,
                                                  gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_cmpxchg16b (self);
	if (old_value != value) {
		self->priv->_cmpxchg16b = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_CMPXCHG16B_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_lahf_sahf (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_lahf_sahf;
	return result;
}

void
proton_plus_models_x86_64features_set_lahf_sahf (ProtonPlusModelsX86_64Features* self,
                                                 gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_lahf_sahf (self);
	if (old_value != value) {
		self->priv->_lahf_sahf = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_LAHF_SAHF_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_popcnt (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_popcnt;
	return result;
}

void
proton_plus_models_x86_64features_set_popcnt (ProtonPlusModelsX86_64Features* self,
                                              gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_popcnt (self);
	if (old_value != value) {
		self->priv->_popcnt = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_POPCNT_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_sse3 (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_sse3;
	return result;
}

void
proton_plus_models_x86_64features_set_sse3 (ProtonPlusModelsX86_64Features* self,
                                            gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_sse3 (self);
	if (old_value != value) {
		self->priv->_sse3 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_SSE3_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_sse4_1 (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_sse4_1;
	return result;
}

void
proton_plus_models_x86_64features_set_sse4_1 (ProtonPlusModelsX86_64Features* self,
                                              gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_sse4_1 (self);
	if (old_value != value) {
		self->priv->_sse4_1 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_1_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_sse4_2 (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_sse4_2;
	return result;
}

void
proton_plus_models_x86_64features_set_sse4_2 (ProtonPlusModelsX86_64Features* self,
                                              gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_sse4_2 (self);
	if (old_value != value) {
		self->priv->_sse4_2 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_2_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_ssse3 (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_ssse3;
	return result;
}

void
proton_plus_models_x86_64features_set_ssse3 (ProtonPlusModelsX86_64Features* self,
                                             gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_ssse3 (self);
	if (old_value != value) {
		self->priv->_ssse3 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_SSSE3_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_avx (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_avx;
	return result;
}

void
proton_plus_models_x86_64features_set_avx (ProtonPlusModelsX86_64Features* self,
                                           gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_avx (self);
	if (old_value != value) {
		self->priv->_avx = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_avx2 (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_avx2;
	return result;
}

void
proton_plus_models_x86_64features_set_avx2 (ProtonPlusModelsX86_64Features* self,
                                            gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_avx2 (self);
	if (old_value != value) {
		self->priv->_avx2 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX2_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_bmi1 (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_bmi1;
	return result;
}

void
proton_plus_models_x86_64features_set_bmi1 (ProtonPlusModelsX86_64Features* self,
                                            gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_bmi1 (self);
	if (old_value != value) {
		self->priv->_bmi1 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_BMI1_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_bmi2 (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_bmi2;
	return result;
}

void
proton_plus_models_x86_64features_set_bmi2 (ProtonPlusModelsX86_64Features* self,
                                            gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_bmi2 (self);
	if (old_value != value) {
		self->priv->_bmi2 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_BMI2_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_f16c (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_f16c;
	return result;
}

void
proton_plus_models_x86_64features_set_f16c (ProtonPlusModelsX86_64Features* self,
                                            gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_f16c (self);
	if (old_value != value) {
		self->priv->_f16c = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_F16C_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_fma (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_fma;
	return result;
}

void
proton_plus_models_x86_64features_set_fma (ProtonPlusModelsX86_64Features* self,
                                           gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_fma (self);
	if (old_value != value) {
		self->priv->_fma = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_FMA_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_lzcnt (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_lzcnt;
	return result;
}

void
proton_plus_models_x86_64features_set_lzcnt (ProtonPlusModelsX86_64Features* self,
                                             gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_lzcnt (self);
	if (old_value != value) {
		self->priv->_lzcnt = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_LZCNT_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_movbe (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_movbe;
	return result;
}

void
proton_plus_models_x86_64features_set_movbe (ProtonPlusModelsX86_64Features* self,
                                             gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_movbe (self);
	if (old_value != value) {
		self->priv->_movbe = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_MOVBE_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_osxsave (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_osxsave;
	return result;
}

void
proton_plus_models_x86_64features_set_osxsave (ProtonPlusModelsX86_64Features* self,
                                               gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_osxsave (self);
	if (old_value != value) {
		self->priv->_osxsave = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_OSXSAVE_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_xcr0_xmm (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_xcr0_xmm;
	return result;
}

void
proton_plus_models_x86_64features_set_xcr0_xmm (ProtonPlusModelsX86_64Features* self,
                                                gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_xcr0_xmm (self);
	if (old_value != value) {
		self->priv->_xcr0_xmm = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_XMM_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_xcr0_ymm (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_xcr0_ymm;
	return result;
}

void
proton_plus_models_x86_64features_set_xcr0_ymm (ProtonPlusModelsX86_64Features* self,
                                                gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_xcr0_ymm (self);
	if (old_value != value) {
		self->priv->_xcr0_ymm = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_YMM_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_avx512f (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_avx512f;
	return result;
}

void
proton_plus_models_x86_64features_set_avx512f (ProtonPlusModelsX86_64Features* self,
                                               gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_avx512f (self);
	if (old_value != value) {
		self->priv->_avx512f = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512F_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_avx512bw (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_avx512bw;
	return result;
}

void
proton_plus_models_x86_64features_set_avx512bw (ProtonPlusModelsX86_64Features* self,
                                                gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_avx512bw (self);
	if (old_value != value) {
		self->priv->_avx512bw = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512BW_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_avx512cd (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_avx512cd;
	return result;
}

void
proton_plus_models_x86_64features_set_avx512cd (ProtonPlusModelsX86_64Features* self,
                                                gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_avx512cd (self);
	if (old_value != value) {
		self->priv->_avx512cd = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512CD_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_avx512dq (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_avx512dq;
	return result;
}

void
proton_plus_models_x86_64features_set_avx512dq (ProtonPlusModelsX86_64Features* self,
                                                gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_avx512dq (self);
	if (old_value != value) {
		self->priv->_avx512dq = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512DQ_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_avx512vl (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_avx512vl;
	return result;
}

void
proton_plus_models_x86_64features_set_avx512vl (ProtonPlusModelsX86_64Features* self,
                                                gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_avx512vl (self);
	if (old_value != value) {
		self->priv->_avx512vl = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512VL_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_xcr0_opmask (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_xcr0_opmask;
	return result;
}

void
proton_plus_models_x86_64features_set_xcr0_opmask (ProtonPlusModelsX86_64Features* self,
                                                   gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_xcr0_opmask (self);
	if (old_value != value) {
		self->priv->_xcr0_opmask = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_OPMASK_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_xcr0_zmm_hi256 (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_xcr0_zmm_hi256;
	return result;
}

void
proton_plus_models_x86_64features_set_xcr0_zmm_hi256 (ProtonPlusModelsX86_64Features* self,
                                                      gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_xcr0_zmm_hi256 (self);
	if (old_value != value) {
		self->priv->_xcr0_zmm_hi256 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_ZMM_HI256_PROPERTY]);
	}
}

gboolean
proton_plus_models_x86_64features_get_xcr0_hi16_zmm (ProtonPlusModelsX86_64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_xcr0_hi16_zmm;
	return result;
}

void
proton_plus_models_x86_64features_set_xcr0_hi16_zmm (ProtonPlusModelsX86_64Features* self,
                                                     gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_x86_64features_get_xcr0_hi16_zmm (self);
	if (old_value != value) {
		self->priv->_xcr0_hi16_zmm = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_HI16_ZMM_PROPERTY]);
	}
}

static void
proton_plus_models_x86_64features_class_init (ProtonPlusModelsX86_64FeaturesClass * klass,
                                              gpointer klass_data)
{
	proton_plus_models_x86_64features_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ProtonPlusModelsX86_64Features_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_proton_plus_models_x86_64features_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_proton_plus_models_x86_64features_set_property;
	G_OBJECT_CLASS (klass)->finalize = proton_plus_models_x86_64features_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_CMPXCHG16B_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_CMPXCHG16B_PROPERTY] = g_param_spec_boolean ("cmpxchg16b", "cmpxchg16b", "cmpxchg16b", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_LAHF_SAHF_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_LAHF_SAHF_PROPERTY] = g_param_spec_boolean ("lahf-sahf", "lahf-sahf", "lahf-sahf", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_POPCNT_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_POPCNT_PROPERTY] = g_param_spec_boolean ("popcnt", "popcnt", "popcnt", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_SSE3_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_SSE3_PROPERTY] = g_param_spec_boolean ("sse3", "sse3", "sse3", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_1_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_1_PROPERTY] = g_param_spec_boolean ("sse4-1", "sse4-1", "sse4-1", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_2_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_2_PROPERTY] = g_param_spec_boolean ("sse4-2", "sse4-2", "sse4-2", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_SSSE3_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_SSSE3_PROPERTY] = g_param_spec_boolean ("ssse3", "ssse3", "ssse3", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_AVX_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX_PROPERTY] = g_param_spec_boolean ("avx", "avx", "avx", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_AVX2_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX2_PROPERTY] = g_param_spec_boolean ("avx2", "avx2", "avx2", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_BMI1_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_BMI1_PROPERTY] = g_param_spec_boolean ("bmi1", "bmi1", "bmi1", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_BMI2_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_BMI2_PROPERTY] = g_param_spec_boolean ("bmi2", "bmi2", "bmi2", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_F16C_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_F16C_PROPERTY] = g_param_spec_boolean ("f16c", "f16c", "f16c", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_FMA_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_FMA_PROPERTY] = g_param_spec_boolean ("fma", "fma", "fma", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_LZCNT_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_LZCNT_PROPERTY] = g_param_spec_boolean ("lzcnt", "lzcnt", "lzcnt", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_MOVBE_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_MOVBE_PROPERTY] = g_param_spec_boolean ("movbe", "movbe", "movbe", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_OSXSAVE_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_OSXSAVE_PROPERTY] = g_param_spec_boolean ("osxsave", "osxsave", "osxsave", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_XMM_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_XMM_PROPERTY] = g_param_spec_boolean ("xcr0-xmm", "xcr0-xmm", "xcr0-xmm", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_YMM_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_YMM_PROPERTY] = g_param_spec_boolean ("xcr0-ymm", "xcr0-ymm", "xcr0-ymm", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_AVX512F_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512F_PROPERTY] = g_param_spec_boolean ("avx512f", "avx512f", "avx512f", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_AVX512BW_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512BW_PROPERTY] = g_param_spec_boolean ("avx512bw", "avx512bw", "avx512bw", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_AVX512CD_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512CD_PROPERTY] = g_param_spec_boolean ("avx512cd", "avx512cd", "avx512cd", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_AVX512DQ_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512DQ_PROPERTY] = g_param_spec_boolean ("avx512dq", "avx512dq", "avx512dq", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_AVX512VL_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_AVX512VL_PROPERTY] = g_param_spec_boolean ("avx512vl", "avx512vl", "avx512vl", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_OPMASK_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_OPMASK_PROPERTY] = g_param_spec_boolean ("xcr0-opmask", "xcr0-opmask", "xcr0-opmask", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_ZMM_HI256_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_ZMM_HI256_PROPERTY] = g_param_spec_boolean ("xcr0-zmm-hi256", "xcr0-zmm-hi256", "xcr0-zmm-hi256", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_HI16_ZMM_PROPERTY, proton_plus_models_x86_64features_properties[PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_HI16_ZMM_PROPERTY] = g_param_spec_boolean ("xcr0-hi16-zmm", "xcr0-hi16-zmm", "xcr0-hi16-zmm", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
proton_plus_models_x86_64features_instance_init (ProtonPlusModelsX86_64Features * self,
                                                 gpointer klass)
{
	self->priv = proton_plus_models_x86_64features_get_instance_private (self);
}

static void
proton_plus_models_x86_64features_finalize (GObject * obj)
{
	ProtonPlusModelsX86_64Features * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_MODELS_TYPE_X86_64FEATURES, ProtonPlusModelsX86_64Features);
	G_OBJECT_CLASS (proton_plus_models_x86_64features_parent_class)->finalize (obj);
}

static GType
proton_plus_models_x86_64features_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusModelsX86_64FeaturesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_models_x86_64features_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusModelsX86_64Features), 0, (GInstanceInitFunc) proton_plus_models_x86_64features_instance_init, NULL };
	GType proton_plus_models_x86_64features_type_id;
	proton_plus_models_x86_64features_type_id = g_type_register_static (G_TYPE_OBJECT, "ProtonPlusModelsX86_64Features", &g_define_type_info, 0);
	ProtonPlusModelsX86_64Features_private_offset = g_type_add_instance_private (proton_plus_models_x86_64features_type_id, sizeof (ProtonPlusModelsX86_64FeaturesPrivate));
	return proton_plus_models_x86_64features_type_id;
}

GType
proton_plus_models_x86_64features_get_type (void)
{
	static volatile gsize proton_plus_models_x86_64features_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_x86_64features_type_id__once)) {
		GType proton_plus_models_x86_64features_type_id;
		proton_plus_models_x86_64features_type_id = proton_plus_models_x86_64features_get_type_once ();
		g_once_init_leave (&proton_plus_models_x86_64features_type_id__once, proton_plus_models_x86_64features_type_id);
	}
	return proton_plus_models_x86_64features_type_id__once;
}

static void
_vala_proton_plus_models_x86_64features_get_property (GObject * object,
                                                      guint property_id,
                                                      GValue * value,
                                                      GParamSpec * pspec)
{
	ProtonPlusModelsX86_64Features * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_MODELS_TYPE_X86_64FEATURES, ProtonPlusModelsX86_64Features);
	switch (property_id) {
		case PROTON_PLUS_MODELS_X86_64FEATURES_CMPXCHG16B_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_cmpxchg16b (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_LAHF_SAHF_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_lahf_sahf (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_POPCNT_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_popcnt (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_SSE3_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_sse3 (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_1_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_sse4_1 (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_2_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_sse4_2 (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_SSSE3_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_ssse3 (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_avx (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX2_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_avx2 (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_BMI1_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_bmi1 (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_BMI2_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_bmi2 (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_F16C_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_f16c (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_FMA_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_fma (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_LZCNT_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_lzcnt (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_MOVBE_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_movbe (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_OSXSAVE_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_osxsave (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_XMM_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_xcr0_xmm (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_YMM_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_xcr0_ymm (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512F_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_avx512f (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512BW_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_avx512bw (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512CD_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_avx512cd (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512DQ_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_avx512dq (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512VL_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_avx512vl (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_OPMASK_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_xcr0_opmask (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_ZMM_HI256_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_xcr0_zmm_hi256 (self));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_HI16_ZMM_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_x86_64features_get_xcr0_hi16_zmm (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_proton_plus_models_x86_64features_set_property (GObject * object,
                                                      guint property_id,
                                                      const GValue * value,
                                                      GParamSpec * pspec)
{
	ProtonPlusModelsX86_64Features * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_MODELS_TYPE_X86_64FEATURES, ProtonPlusModelsX86_64Features);
	switch (property_id) {
		case PROTON_PLUS_MODELS_X86_64FEATURES_CMPXCHG16B_PROPERTY:
		proton_plus_models_x86_64features_set_cmpxchg16b (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_LAHF_SAHF_PROPERTY:
		proton_plus_models_x86_64features_set_lahf_sahf (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_POPCNT_PROPERTY:
		proton_plus_models_x86_64features_set_popcnt (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_SSE3_PROPERTY:
		proton_plus_models_x86_64features_set_sse3 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_1_PROPERTY:
		proton_plus_models_x86_64features_set_sse4_1 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_SSE4_2_PROPERTY:
		proton_plus_models_x86_64features_set_sse4_2 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_SSSE3_PROPERTY:
		proton_plus_models_x86_64features_set_ssse3 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX_PROPERTY:
		proton_plus_models_x86_64features_set_avx (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX2_PROPERTY:
		proton_plus_models_x86_64features_set_avx2 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_BMI1_PROPERTY:
		proton_plus_models_x86_64features_set_bmi1 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_BMI2_PROPERTY:
		proton_plus_models_x86_64features_set_bmi2 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_F16C_PROPERTY:
		proton_plus_models_x86_64features_set_f16c (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_FMA_PROPERTY:
		proton_plus_models_x86_64features_set_fma (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_LZCNT_PROPERTY:
		proton_plus_models_x86_64features_set_lzcnt (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_MOVBE_PROPERTY:
		proton_plus_models_x86_64features_set_movbe (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_OSXSAVE_PROPERTY:
		proton_plus_models_x86_64features_set_osxsave (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_XMM_PROPERTY:
		proton_plus_models_x86_64features_set_xcr0_xmm (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_YMM_PROPERTY:
		proton_plus_models_x86_64features_set_xcr0_ymm (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512F_PROPERTY:
		proton_plus_models_x86_64features_set_avx512f (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512BW_PROPERTY:
		proton_plus_models_x86_64features_set_avx512bw (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512CD_PROPERTY:
		proton_plus_models_x86_64features_set_avx512cd (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512DQ_PROPERTY:
		proton_plus_models_x86_64features_set_avx512dq (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_AVX512VL_PROPERTY:
		proton_plus_models_x86_64features_set_avx512vl (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_OPMASK_PROPERTY:
		proton_plus_models_x86_64features_set_xcr0_opmask (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_ZMM_HI256_PROPERTY:
		proton_plus_models_x86_64features_set_xcr0_zmm_hi256 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_X86_64FEATURES_XCR0_HI16_ZMM_PROPERTY:
		proton_plus_models_x86_64features_set_xcr0_hi16_zmm (self, g_value_get_boolean (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
proton_plus_models_aarch64_features_get_instance_private (ProtonPlusModelsAarch64Features* self)
{
	return G_STRUCT_MEMBER_P (self, ProtonPlusModelsAarch64Features_private_offset);
}

ProtonPlusModelsAarch64Features*
proton_plus_models_aarch64_features_construct (GType object_type)
{
	ProtonPlusModelsAarch64Features * self = NULL;
	self = (ProtonPlusModelsAarch64Features*) g_object_new (object_type, NULL);
	return self;
}

ProtonPlusModelsAarch64Features*
proton_plus_models_aarch64_features_new (void)
{
	return proton_plus_models_aarch64_features_construct (PROTON_PLUS_MODELS_TYPE_AARCH64_FEATURES);
}

gboolean
proton_plus_models_aarch64_features_get_crc32 (ProtonPlusModelsAarch64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_crc32;
	return result;
}

void
proton_plus_models_aarch64_features_set_crc32 (ProtonPlusModelsAarch64Features* self,
                                               gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_aarch64_features_get_crc32 (self);
	if (old_value != value) {
		self->priv->_crc32 = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_aarch64_features_properties[PROTON_PLUS_MODELS_AARCH64_FEATURES_CRC32_PROPERTY]);
	}
}

gboolean
proton_plus_models_aarch64_features_get_lse_atomics (ProtonPlusModelsAarch64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_lse_atomics;
	return result;
}

void
proton_plus_models_aarch64_features_set_lse_atomics (ProtonPlusModelsAarch64Features* self,
                                                     gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_aarch64_features_get_lse_atomics (self);
	if (old_value != value) {
		self->priv->_lse_atomics = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_aarch64_features_properties[PROTON_PLUS_MODELS_AARCH64_FEATURES_LSE_ATOMICS_PROPERTY]);
	}
}

gboolean
proton_plus_models_aarch64_features_get_rdma (ProtonPlusModelsAarch64Features* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_rdma;
	return result;
}

void
proton_plus_models_aarch64_features_set_rdma (ProtonPlusModelsAarch64Features* self,
                                              gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_aarch64_features_get_rdma (self);
	if (old_value != value) {
		self->priv->_rdma = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_aarch64_features_properties[PROTON_PLUS_MODELS_AARCH64_FEATURES_RDMA_PROPERTY]);
	}
}

static void
proton_plus_models_aarch64_features_class_init (ProtonPlusModelsAarch64FeaturesClass * klass,
                                                gpointer klass_data)
{
	proton_plus_models_aarch64_features_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ProtonPlusModelsAarch64Features_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_proton_plus_models_aarch64_features_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_proton_plus_models_aarch64_features_set_property;
	G_OBJECT_CLASS (klass)->finalize = proton_plus_models_aarch64_features_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_AARCH64_FEATURES_CRC32_PROPERTY, proton_plus_models_aarch64_features_properties[PROTON_PLUS_MODELS_AARCH64_FEATURES_CRC32_PROPERTY] = g_param_spec_boolean ("crc32", "crc32", "crc32", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_AARCH64_FEATURES_LSE_ATOMICS_PROPERTY, proton_plus_models_aarch64_features_properties[PROTON_PLUS_MODELS_AARCH64_FEATURES_LSE_ATOMICS_PROPERTY] = g_param_spec_boolean ("lse-atomics", "lse-atomics", "lse-atomics", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_AARCH64_FEATURES_RDMA_PROPERTY, proton_plus_models_aarch64_features_properties[PROTON_PLUS_MODELS_AARCH64_FEATURES_RDMA_PROPERTY] = g_param_spec_boolean ("rdma", "rdma", "rdma", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
proton_plus_models_aarch64_features_instance_init (ProtonPlusModelsAarch64Features * self,
                                                   gpointer klass)
{
	self->priv = proton_plus_models_aarch64_features_get_instance_private (self);
}

static void
proton_plus_models_aarch64_features_finalize (GObject * obj)
{
	ProtonPlusModelsAarch64Features * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_MODELS_TYPE_AARCH64_FEATURES, ProtonPlusModelsAarch64Features);
	G_OBJECT_CLASS (proton_plus_models_aarch64_features_parent_class)->finalize (obj);
}

static GType
proton_plus_models_aarch64_features_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusModelsAarch64FeaturesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_models_aarch64_features_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusModelsAarch64Features), 0, (GInstanceInitFunc) proton_plus_models_aarch64_features_instance_init, NULL };
	GType proton_plus_models_aarch64_features_type_id;
	proton_plus_models_aarch64_features_type_id = g_type_register_static (G_TYPE_OBJECT, "ProtonPlusModelsAarch64Features", &g_define_type_info, 0);
	ProtonPlusModelsAarch64Features_private_offset = g_type_add_instance_private (proton_plus_models_aarch64_features_type_id, sizeof (ProtonPlusModelsAarch64FeaturesPrivate));
	return proton_plus_models_aarch64_features_type_id;
}

GType
proton_plus_models_aarch64_features_get_type (void)
{
	static volatile gsize proton_plus_models_aarch64_features_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_aarch64_features_type_id__once)) {
		GType proton_plus_models_aarch64_features_type_id;
		proton_plus_models_aarch64_features_type_id = proton_plus_models_aarch64_features_get_type_once ();
		g_once_init_leave (&proton_plus_models_aarch64_features_type_id__once, proton_plus_models_aarch64_features_type_id);
	}
	return proton_plus_models_aarch64_features_type_id__once;
}

static void
_vala_proton_plus_models_aarch64_features_get_property (GObject * object,
                                                        guint property_id,
                                                        GValue * value,
                                                        GParamSpec * pspec)
{
	ProtonPlusModelsAarch64Features * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_MODELS_TYPE_AARCH64_FEATURES, ProtonPlusModelsAarch64Features);
	switch (property_id) {
		case PROTON_PLUS_MODELS_AARCH64_FEATURES_CRC32_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_aarch64_features_get_crc32 (self));
		break;
		case PROTON_PLUS_MODELS_AARCH64_FEATURES_LSE_ATOMICS_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_aarch64_features_get_lse_atomics (self));
		break;
		case PROTON_PLUS_MODELS_AARCH64_FEATURES_RDMA_PROPERTY:
		g_value_set_boolean (value, proton_plus_models_aarch64_features_get_rdma (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_proton_plus_models_aarch64_features_set_property (GObject * object,
                                                        guint property_id,
                                                        const GValue * value,
                                                        GParamSpec * pspec)
{
	ProtonPlusModelsAarch64Features * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_MODELS_TYPE_AARCH64_FEATURES, ProtonPlusModelsAarch64Features);
	switch (property_id) {
		case PROTON_PLUS_MODELS_AARCH64_FEATURES_CRC32_PROPERTY:
		proton_plus_models_aarch64_features_set_crc32 (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_AARCH64_FEATURES_LSE_ATOMICS_PROPERTY:
		proton_plus_models_aarch64_features_set_lse_atomics (self, g_value_get_boolean (value));
		break;
		case PROTON_PLUS_MODELS_AARCH64_FEATURES_RDMA_PROPERTY:
		proton_plus_models_aarch64_features_set_rdma (self, g_value_get_boolean (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
proton_plus_models_cpu_capabilities_get_instance_private (ProtonPlusModelsCpuCapabilities* self)
{
	return G_STRUCT_MEMBER_P (self, ProtonPlusModelsCpuCapabilities_private_offset);
}

ProtonPlusModelsCpuCapabilities*
proton_plus_models_cpu_capabilities_construct (GType object_type,
                                               ProtonPlusModelsCpuArchitecture architecture,
                                               ProtonPlusModelsX86_64Level maximum_x86_64_level,
                                               ProtonPlusModelsAarch64Level maximum_aarch64_level)
{
	ProtonPlusModelsCpuCapabilities * self = NULL;
	ProtonPlusModelsX86_64Level _tmp0_ = 0;
	ProtonPlusModelsAarch64Level _tmp1_ = 0;
	self = (ProtonPlusModelsCpuCapabilities*) g_object_new (object_type, NULL);
	proton_plus_models_cpu_capabilities_set_architecture (self, architecture);
	if (architecture == PROTON_PLUS_MODELS_CPU_ARCHITECTURE_X86_64) {
		_tmp0_ = maximum_x86_64_level;
	} else {
		_tmp0_ = PROTON_PLUS_MODELS_X86_64LEVEL_UNKNOWN;
	}
	proton_plus_models_cpu_capabilities_set_maximum_x86_64_level (self, _tmp0_);
	if (architecture == PROTON_PLUS_MODELS_CPU_ARCHITECTURE_AARCH64) {
		ProtonPlusModelsAarch64Level _tmp2_ = 0;
		if (maximum_aarch64_level == PROTON_PLUS_MODELS_AARCH64_LEVEL_UNKNOWN) {
			_tmp2_ = PROTON_PLUS_MODELS_AARCH64_LEVEL_V8_0;
		} else {
			_tmp2_ = maximum_aarch64_level;
		}
		_tmp1_ = _tmp2_;
	} else {
		_tmp1_ = PROTON_PLUS_MODELS_AARCH64_LEVEL_UNKNOWN;
	}
	proton_plus_models_cpu_capabilities_set_maximum_aarch64_level (self, _tmp1_);
	return self;
}

ProtonPlusModelsCpuCapabilities*
proton_plus_models_cpu_capabilities_new (ProtonPlusModelsCpuArchitecture architecture,
                                         ProtonPlusModelsX86_64Level maximum_x86_64_level,
                                         ProtonPlusModelsAarch64Level maximum_aarch64_level)
{
	return proton_plus_models_cpu_capabilities_construct (PROTON_PLUS_MODELS_TYPE_CPU_CAPABILITIES, architecture, maximum_x86_64_level, maximum_aarch64_level);
}

gboolean
proton_plus_models_cpu_capabilities_supports_x86_64_level (ProtonPlusModelsCpuCapabilities* self,
                                                           ProtonPlusModelsX86_64Level level)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	ProtonPlusModelsCpuArchitecture _tmp3_;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp3_ = self->priv->_architecture;
	if (_tmp3_ == PROTON_PLUS_MODELS_CPU_ARCHITECTURE_X86_64) {
		_tmp2_ = level != PROTON_PLUS_MODELS_X86_64LEVEL_UNKNOWN;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		ProtonPlusModelsX86_64Level _tmp4_;
		_tmp4_ = self->priv->_maximum_x86_64_level;
		_tmp1_ = _tmp4_ != PROTON_PLUS_MODELS_X86_64LEVEL_UNKNOWN;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		ProtonPlusModelsX86_64Level _tmp5_;
		_tmp5_ = self->priv->_maximum_x86_64_level;
		_tmp0_ = ((gint) level) <= ((gint) _tmp5_);
	} else {
		_tmp0_ = FALSE;
	}
	result = _tmp0_;
	return result;
}

gboolean
proton_plus_models_cpu_capabilities_supports_aarch64_level (ProtonPlusModelsCpuCapabilities* self,
                                                            ProtonPlusModelsAarch64Level level)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	ProtonPlusModelsCpuArchitecture _tmp3_;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp3_ = self->priv->_architecture;
	if (_tmp3_ == PROTON_PLUS_MODELS_CPU_ARCHITECTURE_AARCH64) {
		_tmp2_ = level != PROTON_PLUS_MODELS_AARCH64_LEVEL_UNKNOWN;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		ProtonPlusModelsAarch64Level _tmp4_;
		_tmp4_ = self->priv->_maximum_aarch64_level;
		_tmp1_ = _tmp4_ != PROTON_PLUS_MODELS_AARCH64_LEVEL_UNKNOWN;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		ProtonPlusModelsAarch64Level _tmp5_;
		_tmp5_ = self->priv->_maximum_aarch64_level;
		_tmp0_ = ((gint) level) <= ((gint) _tmp5_);
	} else {
		_tmp0_ = FALSE;
	}
	result = _tmp0_;
	return result;
}

ProtonPlusModelsX86_64Level
proton_plus_models_cpu_capabilities_x86_64_level_from_features (ProtonPlusModelsX86_64Features* features)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_;
	gboolean _tmp7_;
	gboolean has_v2 = FALSE;
	gboolean _tmp20_ = FALSE;
	gboolean _tmp21_ = FALSE;
	gboolean _tmp22_ = FALSE;
	gboolean _tmp23_;
	gboolean _tmp24_;
	gboolean has_usable_avx = FALSE;
	gboolean _tmp31_ = FALSE;
	gboolean _tmp32_ = FALSE;
	gboolean _tmp33_ = FALSE;
	gboolean _tmp34_ = FALSE;
	gboolean _tmp35_ = FALSE;
	gboolean _tmp36_ = FALSE;
	gboolean _tmp37_ = FALSE;
	gboolean has_v3 = FALSE;
	gboolean _tmp52_ = FALSE;
	gboolean _tmp53_ = FALSE;
	gboolean _tmp54_ = FALSE;
	gboolean _tmp55_ = FALSE;
	gboolean _tmp56_ = FALSE;
	gboolean _tmp57_ = FALSE;
	gboolean _tmp58_ = FALSE;
	gboolean _tmp59_;
	gboolean _tmp60_;
	gboolean has_v4 = FALSE;
	ProtonPlusModelsX86_64Level _tmp75_ = 0;
	ProtonPlusModelsX86_64Level result;
	g_return_val_if_fail (features != NULL, 0);
	_tmp6_ = proton_plus_models_x86_64features_get_cmpxchg16b (features);
	_tmp7_ = _tmp6_;
	if (_tmp7_) {
		gboolean _tmp8_;
		gboolean _tmp9_;
		_tmp8_ = proton_plus_models_x86_64features_get_lahf_sahf (features);
		_tmp9_ = _tmp8_;
		_tmp5_ = _tmp9_;
	} else {
		_tmp5_ = FALSE;
	}
	if (_tmp5_) {
		gboolean _tmp10_;
		gboolean _tmp11_;
		_tmp10_ = proton_plus_models_x86_64features_get_popcnt (features);
		_tmp11_ = _tmp10_;
		_tmp4_ = _tmp11_;
	} else {
		_tmp4_ = FALSE;
	}
	if (_tmp4_) {
		gboolean _tmp12_;
		gboolean _tmp13_;
		_tmp12_ = proton_plus_models_x86_64features_get_sse3 (features);
		_tmp13_ = _tmp12_;
		_tmp3_ = _tmp13_;
	} else {
		_tmp3_ = FALSE;
	}
	if (_tmp3_) {
		gboolean _tmp14_;
		gboolean _tmp15_;
		_tmp14_ = proton_plus_models_x86_64features_get_sse4_1 (features);
		_tmp15_ = _tmp14_;
		_tmp2_ = _tmp15_;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		gboolean _tmp16_;
		gboolean _tmp17_;
		_tmp16_ = proton_plus_models_x86_64features_get_sse4_2 (features);
		_tmp17_ = _tmp16_;
		_tmp1_ = _tmp17_;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		gboolean _tmp18_;
		gboolean _tmp19_;
		_tmp18_ = proton_plus_models_x86_64features_get_ssse3 (features);
		_tmp19_ = _tmp18_;
		_tmp0_ = _tmp19_;
	} else {
		_tmp0_ = FALSE;
	}
	has_v2 = _tmp0_;
	if (!has_v2) {
		result = PROTON_PLUS_MODELS_X86_64LEVEL_BASELINE;
		return result;
	}
	_tmp23_ = proton_plus_models_x86_64features_get_avx (features);
	_tmp24_ = _tmp23_;
	if (_tmp24_) {
		gboolean _tmp25_;
		gboolean _tmp26_;
		_tmp25_ = proton_plus_models_x86_64features_get_osxsave (features);
		_tmp26_ = _tmp25_;
		_tmp22_ = _tmp26_;
	} else {
		_tmp22_ = FALSE;
	}
	if (_tmp22_) {
		gboolean _tmp27_;
		gboolean _tmp28_;
		_tmp27_ = proton_plus_models_x86_64features_get_xcr0_xmm (features);
		_tmp28_ = _tmp27_;
		_tmp21_ = _tmp28_;
	} else {
		_tmp21_ = FALSE;
	}
	if (_tmp21_) {
		gboolean _tmp29_;
		gboolean _tmp30_;
		_tmp29_ = proton_plus_models_x86_64features_get_xcr0_ymm (features);
		_tmp30_ = _tmp29_;
		_tmp20_ = _tmp30_;
	} else {
		_tmp20_ = FALSE;
	}
	has_usable_avx = _tmp20_;
	if (has_usable_avx) {
		gboolean _tmp38_;
		gboolean _tmp39_;
		_tmp38_ = proton_plus_models_x86_64features_get_avx2 (features);
		_tmp39_ = _tmp38_;
		_tmp37_ = _tmp39_;
	} else {
		_tmp37_ = FALSE;
	}
	if (_tmp37_) {
		gboolean _tmp40_;
		gboolean _tmp41_;
		_tmp40_ = proton_plus_models_x86_64features_get_bmi1 (features);
		_tmp41_ = _tmp40_;
		_tmp36_ = _tmp41_;
	} else {
		_tmp36_ = FALSE;
	}
	if (_tmp36_) {
		gboolean _tmp42_;
		gboolean _tmp43_;
		_tmp42_ = proton_plus_models_x86_64features_get_bmi2 (features);
		_tmp43_ = _tmp42_;
		_tmp35_ = _tmp43_;
	} else {
		_tmp35_ = FALSE;
	}
	if (_tmp35_) {
		gboolean _tmp44_;
		gboolean _tmp45_;
		_tmp44_ = proton_plus_models_x86_64features_get_f16c (features);
		_tmp45_ = _tmp44_;
		_tmp34_ = _tmp45_;
	} else {
		_tmp34_ = FALSE;
	}
	if (_tmp34_) {
		gboolean _tmp46_;
		gboolean _tmp47_;
		_tmp46_ = proton_plus_models_x86_64features_get_fma (features);
		_tmp47_ = _tmp46_;
		_tmp33_ = _tmp47_;
	} else {
		_tmp33_ = FALSE;
	}
	if (_tmp33_) {
		gboolean _tmp48_;
		gboolean _tmp49_;
		_tmp48_ = proton_plus_models_x86_64features_get_lzcnt (features);
		_tmp49_ = _tmp48_;
		_tmp32_ = _tmp49_;
	} else {
		_tmp32_ = FALSE;
	}
	if (_tmp32_) {
		gboolean _tmp50_;
		gboolean _tmp51_;
		_tmp50_ = proton_plus_models_x86_64features_get_movbe (features);
		_tmp51_ = _tmp50_;
		_tmp31_ = _tmp51_;
	} else {
		_tmp31_ = FALSE;
	}
	has_v3 = _tmp31_;
	if (!has_v3) {
		result = PROTON_PLUS_MODELS_X86_64LEVEL_V2;
		return result;
	}
	_tmp59_ = proton_plus_models_x86_64features_get_avx512f (features);
	_tmp60_ = _tmp59_;
	if (_tmp60_) {
		gboolean _tmp61_;
		gboolean _tmp62_;
		_tmp61_ = proton_plus_models_x86_64features_get_avx512bw (features);
		_tmp62_ = _tmp61_;
		_tmp58_ = _tmp62_;
	} else {
		_tmp58_ = FALSE;
	}
	if (_tmp58_) {
		gboolean _tmp63_;
		gboolean _tmp64_;
		_tmp63_ = proton_plus_models_x86_64features_get_avx512cd (features);
		_tmp64_ = _tmp63_;
		_tmp57_ = _tmp64_;
	} else {
		_tmp57_ = FALSE;
	}
	if (_tmp57_) {
		gboolean _tmp65_;
		gboolean _tmp66_;
		_tmp65_ = proton_plus_models_x86_64features_get_avx512dq (features);
		_tmp66_ = _tmp65_;
		_tmp56_ = _tmp66_;
	} else {
		_tmp56_ = FALSE;
	}
	if (_tmp56_) {
		gboolean _tmp67_;
		gboolean _tmp68_;
		_tmp67_ = proton_plus_models_x86_64features_get_avx512vl (features);
		_tmp68_ = _tmp67_;
		_tmp55_ = _tmp68_;
	} else {
		_tmp55_ = FALSE;
	}
	if (_tmp55_) {
		gboolean _tmp69_;
		gboolean _tmp70_;
		_tmp69_ = proton_plus_models_x86_64features_get_xcr0_opmask (features);
		_tmp70_ = _tmp69_;
		_tmp54_ = _tmp70_;
	} else {
		_tmp54_ = FALSE;
	}
	if (_tmp54_) {
		gboolean _tmp71_;
		gboolean _tmp72_;
		_tmp71_ = proton_plus_models_x86_64features_get_xcr0_zmm_hi256 (features);
		_tmp72_ = _tmp71_;
		_tmp53_ = _tmp72_;
	} else {
		_tmp53_ = FALSE;
	}
	if (_tmp53_) {
		gboolean _tmp73_;
		gboolean _tmp74_;
		_tmp73_ = proton_plus_models_x86_64features_get_xcr0_hi16_zmm (features);
		_tmp74_ = _tmp73_;
		_tmp52_ = _tmp74_;
	} else {
		_tmp52_ = FALSE;
	}
	has_v4 = _tmp52_;
	if (has_v4) {
		_tmp75_ = PROTON_PLUS_MODELS_X86_64LEVEL_V4;
	} else {
		_tmp75_ = PROTON_PLUS_MODELS_X86_64LEVEL_V3;
	}
	result = _tmp75_;
	return result;
}

ProtonPlusModelsAarch64Level
proton_plus_models_cpu_capabilities_aarch64_level_from_features (ProtonPlusModelsAarch64Features* features)
{
	ProtonPlusModelsAarch64Level _tmp0_ = 0;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_;
	gboolean _tmp4_;
	ProtonPlusModelsAarch64Level result;
	g_return_val_if_fail (features != NULL, 0);
	_tmp3_ = proton_plus_models_aarch64_features_get_crc32 (features);
	_tmp4_ = _tmp3_;
	if (_tmp4_) {
		gboolean _tmp5_;
		gboolean _tmp6_;
		_tmp5_ = proton_plus_models_aarch64_features_get_lse_atomics (features);
		_tmp6_ = _tmp5_;
		_tmp2_ = _tmp6_;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		gboolean _tmp7_;
		gboolean _tmp8_;
		_tmp7_ = proton_plus_models_aarch64_features_get_rdma (features);
		_tmp8_ = _tmp7_;
		_tmp1_ = _tmp8_;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		_tmp0_ = PROTON_PLUS_MODELS_AARCH64_LEVEL_V8_1;
	} else {
		_tmp0_ = PROTON_PLUS_MODELS_AARCH64_LEVEL_V8_0;
	}
	result = _tmp0_;
	return result;
}

ProtonPlusModelsCpuArchitecture
proton_plus_models_cpu_capabilities_get_architecture (ProtonPlusModelsCpuCapabilities* self)
{
	ProtonPlusModelsCpuArchitecture result;
	g_return_val_if_fail (self != NULL, 0);
	result = self->priv->_architecture;
	return result;
}

static void
proton_plus_models_cpu_capabilities_set_architecture (ProtonPlusModelsCpuCapabilities* self,
                                                      ProtonPlusModelsCpuArchitecture value)
{
	ProtonPlusModelsCpuArchitecture old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_cpu_capabilities_get_architecture (self);
	if (old_value != value) {
		self->priv->_architecture = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_cpu_capabilities_properties[PROTON_PLUS_MODELS_CPU_CAPABILITIES_ARCHITECTURE_PROPERTY]);
	}
}

ProtonPlusModelsX86_64Level
proton_plus_models_cpu_capabilities_get_maximum_x86_64_level (ProtonPlusModelsCpuCapabilities* self)
{
	ProtonPlusModelsX86_64Level result;
	g_return_val_if_fail (self != NULL, 0);
	result = self->priv->_maximum_x86_64_level;
	return result;
}

static void
proton_plus_models_cpu_capabilities_set_maximum_x86_64_level (ProtonPlusModelsCpuCapabilities* self,
                                                              ProtonPlusModelsX86_64Level value)
{
	ProtonPlusModelsX86_64Level old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_cpu_capabilities_get_maximum_x86_64_level (self);
	if (old_value != value) {
		self->priv->_maximum_x86_64_level = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_cpu_capabilities_properties[PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_X86_64_LEVEL_PROPERTY]);
	}
}

ProtonPlusModelsAarch64Level
proton_plus_models_cpu_capabilities_get_maximum_aarch64_level (ProtonPlusModelsCpuCapabilities* self)
{
	ProtonPlusModelsAarch64Level result;
	g_return_val_if_fail (self != NULL, 0);
	result = self->priv->_maximum_aarch64_level;
	return result;
}

static void
proton_plus_models_cpu_capabilities_set_maximum_aarch64_level (ProtonPlusModelsCpuCapabilities* self,
                                                               ProtonPlusModelsAarch64Level value)
{
	ProtonPlusModelsAarch64Level old_value;
	g_return_if_fail (self != NULL);
	old_value = proton_plus_models_cpu_capabilities_get_maximum_aarch64_level (self);
	if (old_value != value) {
		self->priv->_maximum_aarch64_level = value;
		g_object_notify_by_pspec ((GObject *) self, proton_plus_models_cpu_capabilities_properties[PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_AARCH64_LEVEL_PROPERTY]);
	}
}

static void
proton_plus_models_cpu_capabilities_class_init (ProtonPlusModelsCpuCapabilitiesClass * klass,
                                                gpointer klass_data)
{
	proton_plus_models_cpu_capabilities_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ProtonPlusModelsCpuCapabilities_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_proton_plus_models_cpu_capabilities_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_proton_plus_models_cpu_capabilities_set_property;
	G_OBJECT_CLASS (klass)->finalize = proton_plus_models_cpu_capabilities_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_CPU_CAPABILITIES_ARCHITECTURE_PROPERTY, proton_plus_models_cpu_capabilities_properties[PROTON_PLUS_MODELS_CPU_CAPABILITIES_ARCHITECTURE_PROPERTY] = g_param_spec_enum ("architecture", "architecture", "architecture", PROTON_PLUS_MODELS_TYPE_CPU_ARCHITECTURE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_X86_64_LEVEL_PROPERTY, proton_plus_models_cpu_capabilities_properties[PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_X86_64_LEVEL_PROPERTY] = g_param_spec_enum ("maximum-x86-64-level", "maximum-x86-64-level", "maximum-x86-64-level", PROTON_PLUS_MODELS_TYPE_X86_64LEVEL, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_AARCH64_LEVEL_PROPERTY, proton_plus_models_cpu_capabilities_properties[PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_AARCH64_LEVEL_PROPERTY] = g_param_spec_enum ("maximum-aarch64-level", "maximum-aarch64-level", "maximum-aarch64-level", PROTON_PLUS_MODELS_TYPE_AARCH64_LEVEL, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
}

static void
proton_plus_models_cpu_capabilities_instance_init (ProtonPlusModelsCpuCapabilities * self,
                                                   gpointer klass)
{
	self->priv = proton_plus_models_cpu_capabilities_get_instance_private (self);
}

static void
proton_plus_models_cpu_capabilities_finalize (GObject * obj)
{
	ProtonPlusModelsCpuCapabilities * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_MODELS_TYPE_CPU_CAPABILITIES, ProtonPlusModelsCpuCapabilities);
	G_OBJECT_CLASS (proton_plus_models_cpu_capabilities_parent_class)->finalize (obj);
}

static GType
proton_plus_models_cpu_capabilities_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusModelsCpuCapabilitiesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_models_cpu_capabilities_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusModelsCpuCapabilities), 0, (GInstanceInitFunc) proton_plus_models_cpu_capabilities_instance_init, NULL };
	GType proton_plus_models_cpu_capabilities_type_id;
	proton_plus_models_cpu_capabilities_type_id = g_type_register_static (G_TYPE_OBJECT, "ProtonPlusModelsCpuCapabilities", &g_define_type_info, 0);
	ProtonPlusModelsCpuCapabilities_private_offset = g_type_add_instance_private (proton_plus_models_cpu_capabilities_type_id, sizeof (ProtonPlusModelsCpuCapabilitiesPrivate));
	return proton_plus_models_cpu_capabilities_type_id;
}

GType
proton_plus_models_cpu_capabilities_get_type (void)
{
	static volatile gsize proton_plus_models_cpu_capabilities_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_models_cpu_capabilities_type_id__once)) {
		GType proton_plus_models_cpu_capabilities_type_id;
		proton_plus_models_cpu_capabilities_type_id = proton_plus_models_cpu_capabilities_get_type_once ();
		g_once_init_leave (&proton_plus_models_cpu_capabilities_type_id__once, proton_plus_models_cpu_capabilities_type_id);
	}
	return proton_plus_models_cpu_capabilities_type_id__once;
}

static void
_vala_proton_plus_models_cpu_capabilities_get_property (GObject * object,
                                                        guint property_id,
                                                        GValue * value,
                                                        GParamSpec * pspec)
{
	ProtonPlusModelsCpuCapabilities * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_MODELS_TYPE_CPU_CAPABILITIES, ProtonPlusModelsCpuCapabilities);
	switch (property_id) {
		case PROTON_PLUS_MODELS_CPU_CAPABILITIES_ARCHITECTURE_PROPERTY:
		g_value_set_enum (value, proton_plus_models_cpu_capabilities_get_architecture (self));
		break;
		case PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_X86_64_LEVEL_PROPERTY:
		g_value_set_enum (value, proton_plus_models_cpu_capabilities_get_maximum_x86_64_level (self));
		break;
		case PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_AARCH64_LEVEL_PROPERTY:
		g_value_set_enum (value, proton_plus_models_cpu_capabilities_get_maximum_aarch64_level (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_proton_plus_models_cpu_capabilities_set_property (GObject * object,
                                                        guint property_id,
                                                        const GValue * value,
                                                        GParamSpec * pspec)
{
	ProtonPlusModelsCpuCapabilities * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_MODELS_TYPE_CPU_CAPABILITIES, ProtonPlusModelsCpuCapabilities);
	switch (property_id) {
		case PROTON_PLUS_MODELS_CPU_CAPABILITIES_ARCHITECTURE_PROPERTY:
		proton_plus_models_cpu_capabilities_set_architecture (self, g_value_get_enum (value));
		break;
		case PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_X86_64_LEVEL_PROPERTY:
		proton_plus_models_cpu_capabilities_set_maximum_x86_64_level (self, g_value_get_enum (value));
		break;
		case PROTON_PLUS_MODELS_CPU_CAPABILITIES_MAXIMUM_AARCH64_LEVEL_PROPERTY:
		proton_plus_models_cpu_capabilities_set_maximum_aarch64_level (self, g_value_get_enum (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
_vala_memdup2 (gconstpointer mem,
               gsize byte_size)
{
	gpointer new_mem;
	if (mem && byte_size != 0) {
		new_mem = g_malloc (byte_size);
		memcpy (new_mem, mem, byte_size);
	} else {
		new_mem = NULL;
	}
	return new_mem;
}

