/* msi.c generated by valac 0.56.18-dirty, the Vala compiler
 * generated from msi.vala, do not modify */

#include "wixl.h"
#include "libmsi.h"
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <glib-object.h>
#include "libcommon.h"
#include <gio/gio.h>
#include <gobject/gvaluecollector.h>
#include <config.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  {
	WIXL_MSI_TABLE_0_PROPERTY,
	WIXL_MSI_TABLE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_properties[WIXL_MSI_TABLE_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define WIXL_TYPE_MSI_TABLE_CHECK_BOX (wixl_msi_table_check_box_get_type ())
#define WIXL_MSI_TABLE_CHECK_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CHECK_BOX, WixlMsiTableCheckBox))
#define WIXL_MSI_TABLE_CHECK_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CHECK_BOX, WixlMsiTableCheckBoxClass))
#define WIXL_IS_MSI_TABLE_CHECK_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CHECK_BOX))
#define WIXL_IS_MSI_TABLE_CHECK_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CHECK_BOX))
#define WIXL_MSI_TABLE_CHECK_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CHECK_BOX, WixlMsiTableCheckBoxClass))

typedef struct _WixlMsiTableCheckBox WixlMsiTableCheckBox;
typedef struct _WixlMsiTableCheckBoxClass WixlMsiTableCheckBoxClass;
typedef struct _WixlMsiTableCheckBoxPrivate WixlMsiTableCheckBoxPrivate;
enum  {
	WIXL_MSI_TABLE_CHECK_BOX_0_PROPERTY,
	WIXL_MSI_TABLE_CHECK_BOX_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_check_box_properties[WIXL_MSI_TABLE_CHECK_BOX_NUM_PROPERTIES];
#define _g_free0(var) (var = (g_free (var), NULL))

#define WIXL_TYPE_MSI_TABLE_EVENT_MAPPING (wixl_msi_table_event_mapping_get_type ())
#define WIXL_MSI_TABLE_EVENT_MAPPING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING, WixlMsiTableEventMapping))
#define WIXL_MSI_TABLE_EVENT_MAPPING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING, WixlMsiTableEventMappingClass))
#define WIXL_IS_MSI_TABLE_EVENT_MAPPING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING))
#define WIXL_IS_MSI_TABLE_EVENT_MAPPING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING))
#define WIXL_MSI_TABLE_EVENT_MAPPING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING, WixlMsiTableEventMappingClass))

typedef struct _WixlMsiTableEventMapping WixlMsiTableEventMapping;
typedef struct _WixlMsiTableEventMappingClass WixlMsiTableEventMappingClass;
typedef struct _WixlMsiTableEventMappingPrivate WixlMsiTableEventMappingPrivate;
enum  {
	WIXL_MSI_TABLE_EVENT_MAPPING_0_PROPERTY,
	WIXL_MSI_TABLE_EVENT_MAPPING_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_event_mapping_properties[WIXL_MSI_TABLE_EVENT_MAPPING_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_CONTROL (wixl_msi_table_control_get_type ())
#define WIXL_MSI_TABLE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CONTROL, WixlMsiTableControl))
#define WIXL_MSI_TABLE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CONTROL, WixlMsiTableControlClass))
#define WIXL_IS_MSI_TABLE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CONTROL))
#define WIXL_IS_MSI_TABLE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CONTROL))
#define WIXL_MSI_TABLE_CONTROL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CONTROL, WixlMsiTableControlClass))

typedef struct _WixlMsiTableControl WixlMsiTableControl;
typedef struct _WixlMsiTableControlClass WixlMsiTableControlClass;
typedef struct _WixlMsiTableControlPrivate WixlMsiTableControlPrivate;
enum  {
	WIXL_MSI_TABLE_CONTROL_0_PROPERTY,
	WIXL_MSI_TABLE_CONTROL_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_control_properties[WIXL_MSI_TABLE_CONTROL_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_UI_TEXT (wixl_msi_table_ui_text_get_type ())
#define WIXL_MSI_TABLE_UI_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_UI_TEXT, WixlMsiTableUIText))
#define WIXL_MSI_TABLE_UI_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_UI_TEXT, WixlMsiTableUITextClass))
#define WIXL_IS_MSI_TABLE_UI_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_UI_TEXT))
#define WIXL_IS_MSI_TABLE_UI_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_UI_TEXT))
#define WIXL_MSI_TABLE_UI_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_UI_TEXT, WixlMsiTableUITextClass))

typedef struct _WixlMsiTableUIText WixlMsiTableUIText;
typedef struct _WixlMsiTableUITextClass WixlMsiTableUITextClass;
typedef struct _WixlMsiTableUITextPrivate WixlMsiTableUITextPrivate;
enum  {
	WIXL_MSI_TABLE_UI_TEXT_0_PROPERTY,
	WIXL_MSI_TABLE_UI_TEXT_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_ui_text_properties[WIXL_MSI_TABLE_UI_TEXT_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_TEXT_STYLE (wixl_msi_table_text_style_get_type ())
#define WIXL_MSI_TABLE_TEXT_STYLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_TEXT_STYLE, WixlMsiTableTextStyle))
#define WIXL_MSI_TABLE_TEXT_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_TEXT_STYLE, WixlMsiTableTextStyleClass))
#define WIXL_IS_MSI_TABLE_TEXT_STYLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_TEXT_STYLE))
#define WIXL_IS_MSI_TABLE_TEXT_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_TEXT_STYLE))
#define WIXL_MSI_TABLE_TEXT_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_TEXT_STYLE, WixlMsiTableTextStyleClass))

typedef struct _WixlMsiTableTextStyle WixlMsiTableTextStyle;
typedef struct _WixlMsiTableTextStyleClass WixlMsiTableTextStyleClass;
typedef struct _WixlMsiTableTextStylePrivate WixlMsiTableTextStylePrivate;
enum  {
	WIXL_MSI_TABLE_TEXT_STYLE_0_PROPERTY,
	WIXL_MSI_TABLE_TEXT_STYLE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_text_style_properties[WIXL_MSI_TABLE_TEXT_STYLE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_DIALOG (wixl_msi_table_dialog_get_type ())
#define WIXL_MSI_TABLE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_DIALOG, WixlMsiTableDialog))
#define WIXL_MSI_TABLE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_DIALOG, WixlMsiTableDialogClass))
#define WIXL_IS_MSI_TABLE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_DIALOG))
#define WIXL_IS_MSI_TABLE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_DIALOG))
#define WIXL_MSI_TABLE_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_DIALOG, WixlMsiTableDialogClass))

typedef struct _WixlMsiTableDialog WixlMsiTableDialog;
typedef struct _WixlMsiTableDialogClass WixlMsiTableDialogClass;
typedef struct _WixlMsiTableDialogPrivate WixlMsiTableDialogPrivate;
enum  {
	WIXL_MSI_TABLE_DIALOG_0_PROPERTY,
	WIXL_MSI_TABLE_DIALOG_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_dialog_properties[WIXL_MSI_TABLE_DIALOG_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_CONTROL_EVENT (wixl_msi_table_control_event_get_type ())
#define WIXL_MSI_TABLE_CONTROL_EVENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT, WixlMsiTableControlEvent))
#define WIXL_MSI_TABLE_CONTROL_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT, WixlMsiTableControlEventClass))
#define WIXL_IS_MSI_TABLE_CONTROL_EVENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT))
#define WIXL_IS_MSI_TABLE_CONTROL_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT))
#define WIXL_MSI_TABLE_CONTROL_EVENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT, WixlMsiTableControlEventClass))

typedef struct _WixlMsiTableControlEvent WixlMsiTableControlEvent;
typedef struct _WixlMsiTableControlEventClass WixlMsiTableControlEventClass;
typedef struct _WixlMsiTableControlEventPrivate WixlMsiTableControlEventPrivate;
enum  {
	WIXL_MSI_TABLE_CONTROL_EVENT_0_PROPERTY,
	WIXL_MSI_TABLE_CONTROL_EVENT_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_control_event_properties[WIXL_MSI_TABLE_CONTROL_EVENT_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION (wixl_msi_table_control_condition_get_type ())
#define WIXL_MSI_TABLE_CONTROL_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION, WixlMsiTableControlCondition))
#define WIXL_MSI_TABLE_CONTROL_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION, WixlMsiTableControlConditionClass))
#define WIXL_IS_MSI_TABLE_CONTROL_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION))
#define WIXL_IS_MSI_TABLE_CONTROL_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION))
#define WIXL_MSI_TABLE_CONTROL_CONDITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION, WixlMsiTableControlConditionClass))

typedef struct _WixlMsiTableControlCondition WixlMsiTableControlCondition;
typedef struct _WixlMsiTableControlConditionClass WixlMsiTableControlConditionClass;
typedef struct _WixlMsiTableControlConditionPrivate WixlMsiTableControlConditionPrivate;
enum  {
	WIXL_MSI_TABLE_CONTROL_CONDITION_0_PROPERTY,
	WIXL_MSI_TABLE_CONTROL_CONDITION_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_control_condition_properties[WIXL_MSI_TABLE_CONTROL_CONDITION_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_LIST_BOX (wixl_msi_table_list_box_get_type ())
#define WIXL_MSI_TABLE_LIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_LIST_BOX, WixlMsiTableListBox))
#define WIXL_MSI_TABLE_LIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_LIST_BOX, WixlMsiTableListBoxClass))
#define WIXL_IS_MSI_TABLE_LIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_LIST_BOX))
#define WIXL_IS_MSI_TABLE_LIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_LIST_BOX))
#define WIXL_MSI_TABLE_LIST_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_LIST_BOX, WixlMsiTableListBoxClass))

typedef struct _WixlMsiTableListBox WixlMsiTableListBox;
typedef struct _WixlMsiTableListBoxClass WixlMsiTableListBoxClass;
typedef struct _WixlMsiTableListBoxPrivate WixlMsiTableListBoxPrivate;
enum  {
	WIXL_MSI_TABLE_LIST_BOX_0_PROPERTY,
	WIXL_MSI_TABLE_LIST_BOX_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_list_box_properties[WIXL_MSI_TABLE_LIST_BOX_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_RADIO_BUTTON (wixl_msi_table_radio_button_get_type ())
#define WIXL_MSI_TABLE_RADIO_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON, WixlMsiTableRadioButton))
#define WIXL_MSI_TABLE_RADIO_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON, WixlMsiTableRadioButtonClass))
#define WIXL_IS_MSI_TABLE_RADIO_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON))
#define WIXL_IS_MSI_TABLE_RADIO_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON))
#define WIXL_MSI_TABLE_RADIO_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON, WixlMsiTableRadioButtonClass))

typedef struct _WixlMsiTableRadioButton WixlMsiTableRadioButton;
typedef struct _WixlMsiTableRadioButtonClass WixlMsiTableRadioButtonClass;
typedef struct _WixlMsiTableRadioButtonPrivate WixlMsiTableRadioButtonPrivate;
enum  {
	WIXL_MSI_TABLE_RADIO_BUTTON_0_PROPERTY,
	WIXL_MSI_TABLE_RADIO_BUTTON_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_radio_button_properties[WIXL_MSI_TABLE_RADIO_BUTTON_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_FILE_HASH (wixl_msi_table_file_hash_get_type ())
#define WIXL_MSI_TABLE_FILE_HASH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHash))
#define WIXL_MSI_TABLE_FILE_HASH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHashClass))
#define WIXL_IS_MSI_TABLE_FILE_HASH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH))
#define WIXL_IS_MSI_TABLE_FILE_HASH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FILE_HASH))
#define WIXL_MSI_TABLE_FILE_HASH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHashClass))

typedef struct _WixlMsiTableFileHash WixlMsiTableFileHash;
typedef struct _WixlMsiTableFileHashClass WixlMsiTableFileHashClass;
typedef struct _WixlMsiTableFileHashPrivate WixlMsiTableFileHashPrivate;
enum  {
	WIXL_MSI_TABLE_FILE_HASH_0_PROPERTY,
	WIXL_MSI_TABLE_FILE_HASH_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_file_hash_properties[WIXL_MSI_TABLE_FILE_HASH_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_ICON (wixl_msi_table_icon_get_type ())
#define WIXL_MSI_TABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIcon))
#define WIXL_MSI_TABLE_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIconClass))
#define WIXL_IS_MSI_TABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ICON))
#define WIXL_IS_MSI_TABLE_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ICON))
#define WIXL_MSI_TABLE_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIconClass))

typedef struct _WixlMsiTableIcon WixlMsiTableIcon;
typedef struct _WixlMsiTableIconClass WixlMsiTableIconClass;
typedef struct _WixlMsiTableIconPrivate WixlMsiTableIconPrivate;
enum  {
	WIXL_MSI_TABLE_ICON_0_PROPERTY,
	WIXL_MSI_TABLE_ICON_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_icon_properties[WIXL_MSI_TABLE_ICON_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_BINARY (wixl_msi_table_binary_get_type ())
#define WIXL_MSI_TABLE_BINARY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinary))
#define WIXL_MSI_TABLE_BINARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinaryClass))
#define WIXL_IS_MSI_TABLE_BINARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_BINARY))
#define WIXL_IS_MSI_TABLE_BINARY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_BINARY))
#define WIXL_MSI_TABLE_BINARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinaryClass))

typedef struct _WixlMsiTableBinary WixlMsiTableBinary;
typedef struct _WixlMsiTableBinaryClass WixlMsiTableBinaryClass;
typedef struct _WixlMsiTableBinaryPrivate WixlMsiTableBinaryPrivate;
enum  {
	WIXL_MSI_TABLE_BINARY_0_PROPERTY,
	WIXL_MSI_TABLE_BINARY_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_binary_properties[WIXL_MSI_TABLE_BINARY_NUM_PROPERTIES];
enum  {
	WIXL_MSI_TABLE_SEQUENCE_0_PROPERTY,
	WIXL_MSI_TABLE_SEQUENCE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_sequence_properties[WIXL_MSI_TABLE_SEQUENCE_NUM_PROPERTIES];
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
#define _wixl_msi_table_sequence_action_unref0(var) ((var == NULL) ? NULL : (var = (wixl_msi_table_sequence_action_unref (var), NULL)))
#define _wixl_msi_default_action_info_free0(var) ((var == NULL) ? NULL : (var = (wixl_msi_default_action_info_free (var), NULL)))
typedef struct _WixlMsiTableSequenceParamSpecAction WixlMsiTableSequenceParamSpecAction;

#define WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE (wixl_msi_table_admin_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequence))
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequenceClass))

typedef struct _WixlMsiTableAdminExecuteSequence WixlMsiTableAdminExecuteSequence;
typedef struct _WixlMsiTableAdminExecuteSequenceClass WixlMsiTableAdminExecuteSequenceClass;
typedef struct _WixlMsiTableAdminExecuteSequencePrivate WixlMsiTableAdminExecuteSequencePrivate;
enum  {
	WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_0_PROPERTY,
	WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_admin_execute_sequence_properties[WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE (wixl_msi_table_admin_ui_sequence_get_type ())
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequence))
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequenceClass))
#define WIXL_IS_MSI_TABLE_ADMIN_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADMIN_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE))
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequenceClass))

typedef struct _WixlMsiTableAdminUISequence WixlMsiTableAdminUISequence;
typedef struct _WixlMsiTableAdminUISequenceClass WixlMsiTableAdminUISequenceClass;
typedef struct _WixlMsiTableAdminUISequencePrivate WixlMsiTableAdminUISequencePrivate;
enum  {
	WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_0_PROPERTY,
	WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_admin_ui_sequence_properties[WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE (wixl_msi_table_advt_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequence))
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_ADVT_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequenceClass))

typedef struct _WixlMsiTableAdvtExecuteSequence WixlMsiTableAdvtExecuteSequence;
typedef struct _WixlMsiTableAdvtExecuteSequenceClass WixlMsiTableAdvtExecuteSequenceClass;
typedef struct _WixlMsiTableAdvtExecuteSequencePrivate WixlMsiTableAdvtExecuteSequencePrivate;
enum  {
	WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_0_PROPERTY,
	WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_advt_execute_sequence_properties[WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE (wixl_msi_table_install_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequence))
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequenceClass))

typedef struct _WixlMsiTableInstallExecuteSequence WixlMsiTableInstallExecuteSequence;
typedef struct _WixlMsiTableInstallExecuteSequenceClass WixlMsiTableInstallExecuteSequenceClass;
typedef struct _WixlMsiTableInstallExecuteSequencePrivate WixlMsiTableInstallExecuteSequencePrivate;
enum  {
	WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_0_PROPERTY,
	WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_install_execute_sequence_properties[WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE (wixl_msi_table_install_ui_sequence_get_type ())
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequence))
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequenceClass))
#define WIXL_IS_MSI_TABLE_INSTALL_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE))
#define WIXL_IS_MSI_TABLE_INSTALL_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE))
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequenceClass))

typedef struct _WixlMsiTableInstallUISequence WixlMsiTableInstallUISequence;
typedef struct _WixlMsiTableInstallUISequenceClass WixlMsiTableInstallUISequenceClass;
typedef struct _WixlMsiTableInstallUISequencePrivate WixlMsiTableInstallUISequencePrivate;
enum  {
	WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_0_PROPERTY,
	WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_install_ui_sequence_properties[WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_ERROR (wixl_msi_table_error_get_type ())
#define WIXL_MSI_TABLE_ERROR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ERROR, WixlMsiTableError))
#define WIXL_MSI_TABLE_ERROR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ERROR, WixlMsiTableErrorClass))
#define WIXL_IS_MSI_TABLE_ERROR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ERROR))
#define WIXL_IS_MSI_TABLE_ERROR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ERROR))
#define WIXL_MSI_TABLE_ERROR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ERROR, WixlMsiTableErrorClass))

typedef struct _WixlMsiTableError WixlMsiTableError;
typedef struct _WixlMsiTableErrorClass WixlMsiTableErrorClass;
typedef struct _WixlMsiTableErrorPrivate WixlMsiTableErrorPrivate;
enum  {
	WIXL_MSI_TABLE_ERROR_0_PROPERTY,
	WIXL_MSI_TABLE_ERROR_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_error_properties[WIXL_MSI_TABLE_ERROR_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_FILE (wixl_msi_table_file_get_type ())
#define WIXL_MSI_TABLE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFile))
#define WIXL_MSI_TABLE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFileClass))
#define WIXL_IS_MSI_TABLE_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FILE))
#define WIXL_IS_MSI_TABLE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FILE))
#define WIXL_MSI_TABLE_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFileClass))

typedef struct _WixlMsiTableFile WixlMsiTableFile;
typedef struct _WixlMsiTableFileClass WixlMsiTableFileClass;
typedef struct _WixlMsiTableFilePrivate WixlMsiTableFilePrivate;
enum  {
	WIXL_MSI_TABLE_FILE_0_PROPERTY,
	WIXL_MSI_TABLE_FILE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_file_properties[WIXL_MSI_TABLE_FILE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_MEDIA (wixl_msi_table_media_get_type ())
#define WIXL_MSI_TABLE_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMedia))
#define WIXL_MSI_TABLE_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMediaClass))
#define WIXL_IS_MSI_TABLE_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_MEDIA))
#define WIXL_IS_MSI_TABLE_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_MEDIA))
#define WIXL_MSI_TABLE_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMediaClass))

typedef struct _WixlMsiTableMedia WixlMsiTableMedia;
typedef struct _WixlMsiTableMediaClass WixlMsiTableMediaClass;
typedef struct _WixlMsiTableMediaPrivate WixlMsiTableMediaPrivate;
enum  {
	WIXL_MSI_TABLE_MEDIA_0_PROPERTY,
	WIXL_MSI_TABLE_MEDIA_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_media_properties[WIXL_MSI_TABLE_MEDIA_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_UPGRADE (wixl_msi_table_upgrade_get_type ())
#define WIXL_MSI_TABLE_UPGRADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgrade))
#define WIXL_MSI_TABLE_UPGRADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgradeClass))
#define WIXL_IS_MSI_TABLE_UPGRADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE))
#define WIXL_IS_MSI_TABLE_UPGRADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_UPGRADE))
#define WIXL_MSI_TABLE_UPGRADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgradeClass))

typedef struct _WixlMsiTableUpgrade WixlMsiTableUpgrade;
typedef struct _WixlMsiTableUpgradeClass WixlMsiTableUpgradeClass;
typedef struct _WixlMsiTableUpgradePrivate WixlMsiTableUpgradePrivate;
enum  {
	WIXL_MSI_TABLE_UPGRADE_0_PROPERTY,
	WIXL_MSI_TABLE_UPGRADE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_upgrade_properties[WIXL_MSI_TABLE_UPGRADE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION (wixl_msi_table_launch_condition_get_type ())
#define WIXL_MSI_TABLE_LAUNCH_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchCondition))
#define WIXL_MSI_TABLE_LAUNCH_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchConditionClass))
#define WIXL_IS_MSI_TABLE_LAUNCH_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION))
#define WIXL_IS_MSI_TABLE_LAUNCH_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION))
#define WIXL_MSI_TABLE_LAUNCH_CONDITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchConditionClass))

typedef struct _WixlMsiTableLaunchCondition WixlMsiTableLaunchCondition;
typedef struct _WixlMsiTableLaunchConditionClass WixlMsiTableLaunchConditionClass;
typedef struct _WixlMsiTableLaunchConditionPrivate WixlMsiTableLaunchConditionPrivate;
enum  {
	WIXL_MSI_TABLE_LAUNCH_CONDITION_0_PROPERTY,
	WIXL_MSI_TABLE_LAUNCH_CONDITION_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_launch_condition_properties[WIXL_MSI_TABLE_LAUNCH_CONDITION_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_PROPERTY (wixl_msi_table_property_get_type ())
#define WIXL_MSI_TABLE_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTableProperty))
#define WIXL_MSI_TABLE_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTablePropertyClass))
#define WIXL_IS_MSI_TABLE_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY))
#define WIXL_IS_MSI_TABLE_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_PROPERTY))
#define WIXL_MSI_TABLE_PROPERTY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTablePropertyClass))

typedef struct _WixlMsiTableProperty WixlMsiTableProperty;
typedef struct _WixlMsiTablePropertyClass WixlMsiTablePropertyClass;
typedef struct _WixlMsiTablePropertyPrivate WixlMsiTablePropertyPrivate;
enum  {
	WIXL_MSI_TABLE_PROPERTY_0_PROPERTY,
	WIXL_MSI_TABLE_PROPERTY_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_property_properties[WIXL_MSI_TABLE_PROPERTY_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_DIRECTORY (wixl_msi_table_directory_get_type ())
#define WIXL_MSI_TABLE_DIRECTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectory))
#define WIXL_MSI_TABLE_DIRECTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectoryClass))
#define WIXL_IS_MSI_TABLE_DIRECTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY))
#define WIXL_IS_MSI_TABLE_DIRECTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_DIRECTORY))
#define WIXL_MSI_TABLE_DIRECTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectoryClass))

typedef struct _WixlMsiTableDirectory WixlMsiTableDirectory;
typedef struct _WixlMsiTableDirectoryClass WixlMsiTableDirectoryClass;
typedef struct _WixlMsiTableDirectoryPrivate WixlMsiTableDirectoryPrivate;
enum  {
	WIXL_MSI_TABLE_DIRECTORY_0_PROPERTY,
	WIXL_MSI_TABLE_DIRECTORY_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_directory_properties[WIXL_MSI_TABLE_DIRECTORY_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_COMPONENT (wixl_msi_table_component_get_type ())
#define WIXL_MSI_TABLE_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponent))
#define WIXL_MSI_TABLE_COMPONENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponentClass))
#define WIXL_IS_MSI_TABLE_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT))
#define WIXL_IS_MSI_TABLE_COMPONENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_COMPONENT))
#define WIXL_MSI_TABLE_COMPONENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponentClass))

typedef struct _WixlMsiTableComponent WixlMsiTableComponent;
typedef struct _WixlMsiTableComponentClass WixlMsiTableComponentClass;
typedef struct _WixlMsiTableComponentPrivate WixlMsiTableComponentPrivate;
enum  {
	WIXL_MSI_TABLE_COMPONENT_0_PROPERTY,
	WIXL_MSI_TABLE_COMPONENT_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_component_properties[WIXL_MSI_TABLE_COMPONENT_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS (wixl_msi_table_feature_components_get_type ())
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponents))
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponentsClass))
#define WIXL_IS_MSI_TABLE_FEATURE_COMPONENTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS))
#define WIXL_IS_MSI_TABLE_FEATURE_COMPONENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS))
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponentsClass))

typedef struct _WixlMsiTableFeatureComponents WixlMsiTableFeatureComponents;
typedef struct _WixlMsiTableFeatureComponentsClass WixlMsiTableFeatureComponentsClass;
typedef struct _WixlMsiTableFeatureComponentsPrivate WixlMsiTableFeatureComponentsPrivate;
enum  {
	WIXL_MSI_TABLE_FEATURE_COMPONENTS_0_PROPERTY,
	WIXL_MSI_TABLE_FEATURE_COMPONENTS_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_feature_components_properties[WIXL_MSI_TABLE_FEATURE_COMPONENTS_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_CONDITION (wixl_msi_table_condition_get_type ())
#define WIXL_MSI_TABLE_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CONDITION, WixlMsiTableCondition))
#define WIXL_MSI_TABLE_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CONDITION, WixlMsiTableConditionClass))
#define WIXL_IS_MSI_TABLE_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CONDITION))
#define WIXL_IS_MSI_TABLE_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CONDITION))
#define WIXL_MSI_TABLE_CONDITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CONDITION, WixlMsiTableConditionClass))

typedef struct _WixlMsiTableCondition WixlMsiTableCondition;
typedef struct _WixlMsiTableConditionClass WixlMsiTableConditionClass;
typedef struct _WixlMsiTableConditionPrivate WixlMsiTableConditionPrivate;
enum  {
	WIXL_MSI_TABLE_CONDITION_0_PROPERTY,
	WIXL_MSI_TABLE_CONDITION_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_condition_properties[WIXL_MSI_TABLE_CONDITION_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_REGISTRY (wixl_msi_table_registry_get_type ())
#define WIXL_MSI_TABLE_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistry))
#define WIXL_MSI_TABLE_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistryClass))
#define WIXL_IS_MSI_TABLE_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY))
#define WIXL_IS_MSI_TABLE_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REGISTRY))
#define WIXL_MSI_TABLE_REGISTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistryClass))

typedef struct _WixlMsiTableRegistry WixlMsiTableRegistry;
typedef struct _WixlMsiTableRegistryClass WixlMsiTableRegistryClass;
typedef struct _WixlMsiTableRegistryPrivate WixlMsiTableRegistryPrivate;
enum  {
	WIXL_MSI_TABLE_REGISTRY_0_PROPERTY,
	WIXL_MSI_TABLE_REGISTRY_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_registry_properties[WIXL_MSI_TABLE_REGISTRY_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_SHORTCUT (wixl_msi_table_shortcut_get_type ())
#define WIXL_MSI_TABLE_SHORTCUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcut))
#define WIXL_MSI_TABLE_SHORTCUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcutClass))
#define WIXL_IS_MSI_TABLE_SHORTCUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT))
#define WIXL_IS_MSI_TABLE_SHORTCUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SHORTCUT))
#define WIXL_MSI_TABLE_SHORTCUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcutClass))

typedef struct _WixlMsiTableShortcut WixlMsiTableShortcut;
typedef struct _WixlMsiTableShortcutClass WixlMsiTableShortcutClass;
typedef struct _WixlMsiTableShortcutPrivate WixlMsiTableShortcutPrivate;
enum  {
	WIXL_MSI_TABLE_SHORTCUT_0_PROPERTY,
	WIXL_MSI_TABLE_SHORTCUT_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_shortcut_properties[WIXL_MSI_TABLE_SHORTCUT_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_CREATE_FOLDER (wixl_msi_table_create_folder_get_type ())
#define WIXL_MSI_TABLE_CREATE_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolder))
#define WIXL_MSI_TABLE_CREATE_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolderClass))
#define WIXL_IS_MSI_TABLE_CREATE_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER))
#define WIXL_IS_MSI_TABLE_CREATE_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER))
#define WIXL_MSI_TABLE_CREATE_FOLDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolderClass))

typedef struct _WixlMsiTableCreateFolder WixlMsiTableCreateFolder;
typedef struct _WixlMsiTableCreateFolderClass WixlMsiTableCreateFolderClass;
typedef struct _WixlMsiTableCreateFolderPrivate WixlMsiTableCreateFolderPrivate;
enum  {
	WIXL_MSI_TABLE_CREATE_FOLDER_0_PROPERTY,
	WIXL_MSI_TABLE_CREATE_FOLDER_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_create_folder_properties[WIXL_MSI_TABLE_CREATE_FOLDER_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_REMOVE_FILE (wixl_msi_table_remove_file_get_type ())
#define WIXL_MSI_TABLE_REMOVE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFile))
#define WIXL_MSI_TABLE_REMOVE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFileClass))
#define WIXL_IS_MSI_TABLE_REMOVE_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE))
#define WIXL_IS_MSI_TABLE_REMOVE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_FILE))
#define WIXL_MSI_TABLE_REMOVE_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFileClass))

typedef struct _WixlMsiTableRemoveFile WixlMsiTableRemoveFile;
typedef struct _WixlMsiTableRemoveFileClass WixlMsiTableRemoveFileClass;
typedef struct _WixlMsiTableRemoveFilePrivate WixlMsiTableRemoveFilePrivate;
enum  {
	WIXL_MSI_TABLE_REMOVE_FILE_0_PROPERTY,
	WIXL_MSI_TABLE_REMOVE_FILE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_remove_file_properties[WIXL_MSI_TABLE_REMOVE_FILE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_FEATURE (wixl_msi_table_feature_get_type ())
#define WIXL_MSI_TABLE_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeature))
#define WIXL_MSI_TABLE_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeatureClass))
#define WIXL_IS_MSI_TABLE_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FEATURE))
#define WIXL_IS_MSI_TABLE_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FEATURE))
#define WIXL_MSI_TABLE_FEATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeatureClass))

typedef struct _WixlMsiTableFeature WixlMsiTableFeature;
typedef struct _WixlMsiTableFeatureClass WixlMsiTableFeatureClass;
typedef struct _WixlMsiTableFeaturePrivate WixlMsiTableFeaturePrivate;
enum  {
	WIXL_MSI_TABLE_FEATURE_0_PROPERTY,
	WIXL_MSI_TABLE_FEATURE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_feature_properties[WIXL_MSI_TABLE_FEATURE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL (wixl_msi_table_service_control_get_type ())
#define WIXL_MSI_TABLE_SERVICE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControl))
#define WIXL_MSI_TABLE_SERVICE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControlClass))
#define WIXL_IS_MSI_TABLE_SERVICE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL))
#define WIXL_IS_MSI_TABLE_SERVICE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL))
#define WIXL_MSI_TABLE_SERVICE_CONTROL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControlClass))

typedef struct _WixlMsiTableServiceControl WixlMsiTableServiceControl;
typedef struct _WixlMsiTableServiceControlClass WixlMsiTableServiceControlClass;
typedef struct _WixlMsiTableServiceControlPrivate WixlMsiTableServiceControlPrivate;
enum  {
	WIXL_MSI_TABLE_SERVICE_CONTROL_0_PROPERTY,
	WIXL_MSI_TABLE_SERVICE_CONTROL_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_service_control_properties[WIXL_MSI_TABLE_SERVICE_CONTROL_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL (wixl_msi_table_service_install_get_type ())
#define WIXL_MSI_TABLE_SERVICE_INSTALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstall))
#define WIXL_MSI_TABLE_SERVICE_INSTALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstallClass))
#define WIXL_IS_MSI_TABLE_SERVICE_INSTALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL))
#define WIXL_IS_MSI_TABLE_SERVICE_INSTALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL))
#define WIXL_MSI_TABLE_SERVICE_INSTALL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstallClass))

typedef struct _WixlMsiTableServiceInstall WixlMsiTableServiceInstall;
typedef struct _WixlMsiTableServiceInstallClass WixlMsiTableServiceInstallClass;
typedef struct _WixlMsiTableServiceInstallPrivate WixlMsiTableServiceInstallPrivate;
enum  {
	WIXL_MSI_TABLE_SERVICE_INSTALL_0_PROPERTY,
	WIXL_MSI_TABLE_SERVICE_INSTALL_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_service_install_properties[WIXL_MSI_TABLE_SERVICE_INSTALL_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_SIGNATURE (wixl_msi_table_signature_get_type ())
#define WIXL_MSI_TABLE_SIGNATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignature))
#define WIXL_MSI_TABLE_SIGNATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignatureClass))
#define WIXL_IS_MSI_TABLE_SIGNATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE))
#define WIXL_IS_MSI_TABLE_SIGNATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SIGNATURE))
#define WIXL_MSI_TABLE_SIGNATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignatureClass))

typedef struct _WixlMsiTableSignature WixlMsiTableSignature;
typedef struct _WixlMsiTableSignatureClass WixlMsiTableSignatureClass;
typedef struct _WixlMsiTableSignaturePrivate WixlMsiTableSignaturePrivate;
enum  {
	WIXL_MSI_TABLE_SIGNATURE_0_PROPERTY,
	WIXL_MSI_TABLE_SIGNATURE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_signature_properties[WIXL_MSI_TABLE_SIGNATURE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_APP_SEARCH (wixl_msi_table_app_search_get_type ())
#define WIXL_MSI_TABLE_APP_SEARCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearch))
#define WIXL_MSI_TABLE_APP_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearchClass))
#define WIXL_IS_MSI_TABLE_APP_SEARCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH))
#define WIXL_IS_MSI_TABLE_APP_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_APP_SEARCH))
#define WIXL_MSI_TABLE_APP_SEARCH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearchClass))

typedef struct _WixlMsiTableAppSearch WixlMsiTableAppSearch;
typedef struct _WixlMsiTableAppSearchClass WixlMsiTableAppSearchClass;
typedef struct _WixlMsiTableAppSearchPrivate WixlMsiTableAppSearchPrivate;
enum  {
	WIXL_MSI_TABLE_APP_SEARCH_0_PROPERTY,
	WIXL_MSI_TABLE_APP_SEARCH_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_app_search_properties[WIXL_MSI_TABLE_APP_SEARCH_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION (wixl_msi_table_custom_action_get_type ())
#define WIXL_MSI_TABLE_CUSTOM_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomAction))
#define WIXL_MSI_TABLE_CUSTOM_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomActionClass))
#define WIXL_IS_MSI_TABLE_CUSTOM_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION))
#define WIXL_IS_MSI_TABLE_CUSTOM_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION))
#define WIXL_MSI_TABLE_CUSTOM_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomActionClass))

typedef struct _WixlMsiTableCustomAction WixlMsiTableCustomAction;
typedef struct _WixlMsiTableCustomActionClass WixlMsiTableCustomActionClass;
typedef struct _WixlMsiTableCustomActionPrivate WixlMsiTableCustomActionPrivate;
enum  {
	WIXL_MSI_TABLE_CUSTOM_ACTION_0_PROPERTY,
	WIXL_MSI_TABLE_CUSTOM_ACTION_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_custom_action_properties[WIXL_MSI_TABLE_CUSTOM_ACTION_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_REG_LOCATOR (wixl_msi_table_reg_locator_get_type ())
#define WIXL_MSI_TABLE_REG_LOCATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocator))
#define WIXL_MSI_TABLE_REG_LOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocatorClass))
#define WIXL_IS_MSI_TABLE_REG_LOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR))
#define WIXL_IS_MSI_TABLE_REG_LOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REG_LOCATOR))
#define WIXL_MSI_TABLE_REG_LOCATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocatorClass))

typedef struct _WixlMsiTableRegLocator WixlMsiTableRegLocator;
typedef struct _WixlMsiTableRegLocatorClass WixlMsiTableRegLocatorClass;
typedef struct _WixlMsiTableRegLocatorPrivate WixlMsiTableRegLocatorPrivate;
enum  {
	WIXL_MSI_TABLE_REG_LOCATOR_0_PROPERTY,
	WIXL_MSI_TABLE_REG_LOCATOR_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_reg_locator_properties[WIXL_MSI_TABLE_REG_LOCATOR_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_VALIDATION (wixl_msi_table_validation_get_type ())
#define WIXL_MSI_TABLE_VALIDATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_VALIDATION, WixlMsiTableValidation))
#define WIXL_MSI_TABLE_VALIDATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_VALIDATION, WixlMsiTableValidationClass))
#define WIXL_IS_MSI_TABLE_VALIDATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_VALIDATION))
#define WIXL_IS_MSI_TABLE_VALIDATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_VALIDATION))
#define WIXL_MSI_TABLE_VALIDATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_VALIDATION, WixlMsiTableValidationClass))

typedef struct _WixlMsiTableValidation WixlMsiTableValidation;
typedef struct _WixlMsiTableValidationClass WixlMsiTableValidationClass;
typedef struct _WixlMsiTableValidationPrivate WixlMsiTableValidationPrivate;
enum  {
	WIXL_MSI_TABLE_VALIDATION_0_PROPERTY,
	WIXL_MSI_TABLE_VALIDATION_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_validation_properties[WIXL_MSI_TABLE_VALIDATION_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_STREAMS (wixl_msi_table_streams_get_type ())
#define WIXL_MSI_TABLE_STREAMS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreams))
#define WIXL_MSI_TABLE_STREAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreamsClass))
#define WIXL_IS_MSI_TABLE_STREAMS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_STREAMS))
#define WIXL_IS_MSI_TABLE_STREAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_STREAMS))
#define WIXL_MSI_TABLE_STREAMS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreamsClass))

typedef struct _WixlMsiTableStreams WixlMsiTableStreams;
typedef struct _WixlMsiTableStreamsClass WixlMsiTableStreamsClass;
typedef struct _WixlMsiTableStreamsPrivate WixlMsiTableStreamsPrivate;
enum  {
	WIXL_MSI_TABLE_STREAMS_0_PROPERTY,
	WIXL_MSI_TABLE_STREAMS_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_streams_properties[WIXL_MSI_TABLE_STREAMS_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_INI_FILE (wixl_msi_table_ini_file_get_type ())
#define WIXL_MSI_TABLE_INI_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_INI_FILE, WixlMsiTableIniFile))
#define WIXL_MSI_TABLE_INI_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_INI_FILE, WixlMsiTableIniFileClass))
#define WIXL_IS_MSI_TABLE_INI_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_INI_FILE))
#define WIXL_IS_MSI_TABLE_INI_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_INI_FILE))
#define WIXL_MSI_TABLE_INI_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_INI_FILE, WixlMsiTableIniFileClass))

typedef struct _WixlMsiTableIniFile WixlMsiTableIniFile;
typedef struct _WixlMsiTableIniFileClass WixlMsiTableIniFileClass;
typedef struct _WixlMsiTableIniFilePrivate WixlMsiTableIniFilePrivate;
enum  {
	WIXL_MSI_TABLE_INI_FILE_0_PROPERTY,
	WIXL_MSI_TABLE_INI_FILE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_ini_file_properties[WIXL_MSI_TABLE_INI_FILE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE (wixl_msi_table_remove_ini_file_get_type ())
#define WIXL_MSI_TABLE_REMOVE_INI_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE, WixlMsiTableRemoveIniFile))
#define WIXL_MSI_TABLE_REMOVE_INI_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE, WixlMsiTableRemoveIniFileClass))
#define WIXL_IS_MSI_TABLE_REMOVE_INI_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE))
#define WIXL_IS_MSI_TABLE_REMOVE_INI_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE))
#define WIXL_MSI_TABLE_REMOVE_INI_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE, WixlMsiTableRemoveIniFileClass))

typedef struct _WixlMsiTableRemoveIniFile WixlMsiTableRemoveIniFile;
typedef struct _WixlMsiTableRemoveIniFileClass WixlMsiTableRemoveIniFileClass;
typedef struct _WixlMsiTableRemoveIniFilePrivate WixlMsiTableRemoveIniFilePrivate;
enum  {
	WIXL_MSI_TABLE_REMOVE_INI_FILE_0_PROPERTY,
	WIXL_MSI_TABLE_REMOVE_INI_FILE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_remove_ini_file_properties[WIXL_MSI_TABLE_REMOVE_INI_FILE_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_ACTION_TEXT (wixl_msi_table_action_text_get_type ())
#define WIXL_MSI_TABLE_ACTION_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ACTION_TEXT, WixlMsiTableActionText))
#define WIXL_MSI_TABLE_ACTION_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ACTION_TEXT, WixlMsiTableActionTextClass))
#define WIXL_IS_MSI_TABLE_ACTION_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ACTION_TEXT))
#define WIXL_IS_MSI_TABLE_ACTION_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ACTION_TEXT))
#define WIXL_MSI_TABLE_ACTION_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ACTION_TEXT, WixlMsiTableActionTextClass))

typedef struct _WixlMsiTableActionText WixlMsiTableActionText;
typedef struct _WixlMsiTableActionTextClass WixlMsiTableActionTextClass;
typedef struct _WixlMsiTableActionTextPrivate WixlMsiTableActionTextPrivate;
enum  {
	WIXL_MSI_TABLE_ACTION_TEXT_0_PROPERTY,
	WIXL_MSI_TABLE_ACTION_TEXT_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_action_text_properties[WIXL_MSI_TABLE_ACTION_TEXT_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_TABLE_ENVIRONMENT (wixl_msi_table_environment_get_type ())
#define WIXL_MSI_TABLE_ENVIRONMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ENVIRONMENT, WixlMsiTableEnvironment))
#define WIXL_MSI_TABLE_ENVIRONMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ENVIRONMENT, WixlMsiTableEnvironmentClass))
#define WIXL_IS_MSI_TABLE_ENVIRONMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ENVIRONMENT))
#define WIXL_IS_MSI_TABLE_ENVIRONMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ENVIRONMENT))
#define WIXL_MSI_TABLE_ENVIRONMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ENVIRONMENT, WixlMsiTableEnvironmentClass))

typedef struct _WixlMsiTableEnvironment WixlMsiTableEnvironment;
typedef struct _WixlMsiTableEnvironmentClass WixlMsiTableEnvironmentClass;
typedef struct _WixlMsiTableEnvironmentPrivate WixlMsiTableEnvironmentPrivate;
enum  {
	WIXL_MSI_TABLE_ENVIRONMENT_0_PROPERTY,
	WIXL_MSI_TABLE_ENVIRONMENT_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_table_environment_properties[WIXL_MSI_TABLE_ENVIRONMENT_NUM_PROPERTIES];

#define WIXL_TYPE_MSI_SUMMARY_INFO (wixl_msi_summary_info_get_type ())
#define WIXL_MSI_SUMMARY_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfo))
#define WIXL_MSI_SUMMARY_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfoClass))
#define WIXL_IS_MSI_SUMMARY_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_SUMMARY_INFO))
#define WIXL_IS_MSI_SUMMARY_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_SUMMARY_INFO))
#define WIXL_MSI_SUMMARY_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfoClass))

typedef struct _WixlMsiSummaryInfo WixlMsiSummaryInfo;
typedef struct _WixlMsiSummaryInfoClass WixlMsiSummaryInfoClass;
typedef struct _WixlMsiSummaryInfoPrivate WixlMsiSummaryInfoPrivate;
enum  {
	WIXL_MSI_SUMMARY_INFO_0_PROPERTY,
	WIXL_MSI_SUMMARY_INFO_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_summary_info_properties[WIXL_MSI_SUMMARY_INFO_NUM_PROPERTIES];
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))

#define WIXL_TYPE_MSI_DATABASE (wixl_msi_database_get_type ())
#define WIXL_MSI_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabase))
#define WIXL_MSI_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabaseClass))
#define WIXL_IS_MSI_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_DATABASE))
#define WIXL_IS_MSI_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_DATABASE))
#define WIXL_MSI_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabaseClass))

typedef struct _WixlMsiDatabase WixlMsiDatabase;
typedef struct _WixlMsiDatabaseClass WixlMsiDatabaseClass;
typedef struct _WixlMsiDatabasePrivate WixlMsiDatabasePrivate;
typedef enum  {
	WIXL_ARCH_X86 = 0,
	WIXL_ARCH_INTEL = 0,
	WIXL_ARCH_IA64 = 1,
	WIXL_ARCH_INTEL64 = 1,
	WIXL_ARCH_X64
} WixlArch;

#define WIXL_TYPE_ARCH (wixl_arch_get_type ())
typedef enum  {
	WIXL_EXTENSION_UI = 0
} WixlExtension;

#define WIXL_TYPE_EXTENSION (wixl_extension_get_type ())
enum  {
	WIXL_MSI_DATABASE_0_PROPERTY,
	WIXL_MSI_DATABASE_NUM_PROPERTIES
};
static GParamSpec* wixl_msi_database_properties[WIXL_MSI_DATABASE_NUM_PROPERTIES];

struct _WixlMsiTableCheckBox {
	WixlMsiTable parent_instance;
	WixlMsiTableCheckBoxPrivate * priv;
};

struct _WixlMsiTableCheckBoxClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableEventMapping {
	WixlMsiTable parent_instance;
	WixlMsiTableEventMappingPrivate * priv;
};

struct _WixlMsiTableEventMappingClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableControl {
	WixlMsiTable parent_instance;
	WixlMsiTableControlPrivate * priv;
};

struct _WixlMsiTableControlClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableUIText {
	WixlMsiTable parent_instance;
	WixlMsiTableUITextPrivate * priv;
};

struct _WixlMsiTableUITextClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableTextStyle {
	WixlMsiTable parent_instance;
	WixlMsiTableTextStylePrivate * priv;
};

struct _WixlMsiTableTextStyleClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableDialog {
	WixlMsiTable parent_instance;
	WixlMsiTableDialogPrivate * priv;
};

struct _WixlMsiTableDialogClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableControlEvent {
	WixlMsiTable parent_instance;
	WixlMsiTableControlEventPrivate * priv;
};

struct _WixlMsiTableControlEventClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableControlCondition {
	WixlMsiTable parent_instance;
	WixlMsiTableControlConditionPrivate * priv;
};

struct _WixlMsiTableControlConditionClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableListBox {
	WixlMsiTable parent_instance;
	WixlMsiTableListBoxPrivate * priv;
};

struct _WixlMsiTableListBoxClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableRadioButton {
	WixlMsiTable parent_instance;
	WixlMsiTableRadioButtonPrivate * priv;
};

struct _WixlMsiTableRadioButtonClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableFileHash {
	WixlMsiTable parent_instance;
	WixlMsiTableFileHashPrivate * priv;
};

struct _WixlMsiTableFileHashClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableIcon {
	WixlMsiTable parent_instance;
	WixlMsiTableIconPrivate * priv;
};

struct _WixlMsiTableIconClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableBinary {
	WixlMsiTable parent_instance;
	WixlMsiTableBinaryPrivate * priv;
};

struct _WixlMsiTableBinaryClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableSequencePrivate {
	GHashTable* actions;
};

struct _WixlMsiTableSequenceParamSpecAction {
	GParamSpec parent_instance;
};

struct _WixlMsiTableAdminExecuteSequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableAdminExecuteSequencePrivate * priv;
};

struct _WixlMsiTableAdminExecuteSequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableAdminUISequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableAdminUISequencePrivate * priv;
};

struct _WixlMsiTableAdminUISequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableAdvtExecuteSequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableAdvtExecuteSequencePrivate * priv;
};

struct _WixlMsiTableAdvtExecuteSequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableInstallExecuteSequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableInstallExecuteSequencePrivate * priv;
};

struct _WixlMsiTableInstallExecuteSequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableInstallUISequence {
	WixlMsiTableSequence parent_instance;
	WixlMsiTableInstallUISequencePrivate * priv;
};

struct _WixlMsiTableInstallUISequenceClass {
	WixlMsiTableSequenceClass parent_class;
};

struct _WixlMsiTableError {
	WixlMsiTable parent_instance;
	WixlMsiTableErrorPrivate * priv;
};

struct _WixlMsiTableErrorClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableFile {
	WixlMsiTable parent_instance;
	WixlMsiTableFilePrivate * priv;
};

struct _WixlMsiTableFileClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableMedia {
	WixlMsiTable parent_instance;
	WixlMsiTableMediaPrivate * priv;
};

struct _WixlMsiTableMediaClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableUpgrade {
	WixlMsiTable parent_instance;
	WixlMsiTableUpgradePrivate * priv;
};

struct _WixlMsiTableUpgradeClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableLaunchCondition {
	WixlMsiTable parent_instance;
	WixlMsiTableLaunchConditionPrivate * priv;
};

struct _WixlMsiTableLaunchConditionClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableProperty {
	WixlMsiTable parent_instance;
	WixlMsiTablePropertyPrivate * priv;
};

struct _WixlMsiTablePropertyClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableDirectory {
	WixlMsiTable parent_instance;
	WixlMsiTableDirectoryPrivate * priv;
};

struct _WixlMsiTableDirectoryClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableComponent {
	WixlMsiTable parent_instance;
	WixlMsiTableComponentPrivate * priv;
};

struct _WixlMsiTableComponentClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableFeatureComponents {
	WixlMsiTable parent_instance;
	WixlMsiTableFeatureComponentsPrivate * priv;
};

struct _WixlMsiTableFeatureComponentsClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableCondition {
	WixlMsiTable parent_instance;
	WixlMsiTableConditionPrivate * priv;
};

struct _WixlMsiTableConditionClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableRegistry {
	WixlMsiTable parent_instance;
	WixlMsiTableRegistryPrivate * priv;
};

struct _WixlMsiTableRegistryClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableShortcut {
	WixlMsiTable parent_instance;
	WixlMsiTableShortcutPrivate * priv;
};

struct _WixlMsiTableShortcutClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableCreateFolder {
	WixlMsiTable parent_instance;
	WixlMsiTableCreateFolderPrivate * priv;
};

struct _WixlMsiTableCreateFolderClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableRemoveFile {
	WixlMsiTable parent_instance;
	WixlMsiTableRemoveFilePrivate * priv;
};

struct _WixlMsiTableRemoveFileClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableFeature {
	WixlMsiTable parent_instance;
	WixlMsiTableFeaturePrivate * priv;
};

struct _WixlMsiTableFeatureClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableServiceControl {
	WixlMsiTable parent_instance;
	WixlMsiTableServiceControlPrivate * priv;
};

struct _WixlMsiTableServiceControlClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableServiceInstall {
	WixlMsiTable parent_instance;
	WixlMsiTableServiceInstallPrivate * priv;
};

struct _WixlMsiTableServiceInstallClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableSignature {
	WixlMsiTable parent_instance;
	WixlMsiTableSignaturePrivate * priv;
};

struct _WixlMsiTableSignatureClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableAppSearch {
	WixlMsiTable parent_instance;
	WixlMsiTableAppSearchPrivate * priv;
};

struct _WixlMsiTableAppSearchClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableCustomAction {
	WixlMsiTable parent_instance;
	WixlMsiTableCustomActionPrivate * priv;
};

struct _WixlMsiTableCustomActionClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableRegLocator {
	WixlMsiTable parent_instance;
	WixlMsiTableRegLocatorPrivate * priv;
};

struct _WixlMsiTableRegLocatorClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableValidation {
	WixlMsiTable parent_instance;
	WixlMsiTableValidationPrivate * priv;
};

struct _WixlMsiTableValidationClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableStreams {
	WixlMsiTable parent_instance;
	WixlMsiTableStreamsPrivate * priv;
};

struct _WixlMsiTableStreamsClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableIniFile {
	WixlMsiTable parent_instance;
	WixlMsiTableIniFilePrivate * priv;
};

struct _WixlMsiTableIniFileClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableRemoveIniFile {
	WixlMsiTable parent_instance;
	WixlMsiTableRemoveIniFilePrivate * priv;
};

struct _WixlMsiTableRemoveIniFileClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableActionText {
	WixlMsiTable parent_instance;
	WixlMsiTableActionTextPrivate * priv;
};

struct _WixlMsiTableActionTextClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiTableEnvironment {
	WixlMsiTable parent_instance;
	WixlMsiTableEnvironmentPrivate * priv;
};

struct _WixlMsiTableEnvironmentClass {
	WixlMsiTableClass parent_class;
};

struct _WixlMsiSummaryInfo {
	GObject parent_instance;
	WixlMsiSummaryInfoPrivate * priv;
	LibmsiSummaryInfo* properties;
};

struct _WixlMsiSummaryInfoClass {
	GObjectClass parent_class;
};

struct _WixlMsiDatabase {
	GObject parent_instance;
	WixlMsiDatabasePrivate * priv;
	WixlArch arch;
	WixlExtension* extensions;
	gint extensions_length1;
	gint _extensions_size_;
	WixlMsiSummaryInfo* info;
	WixlMsiTableProperty* table_property;
	WixlMsiTableIcon* table_icon;
	WixlMsiTableBinary* table_binary;
	WixlMsiTableMedia* table_media;
	WixlMsiTableDirectory* table_directory;
	WixlMsiTableComponent* table_component;
	WixlMsiTableCondition* table_condition;
	WixlMsiTableFeature* table_feature;
	WixlMsiTableFeatureComponents* table_feature_components;
	WixlMsiTableRemoveFile* table_remove_file;
	WixlMsiTableRegistry* table_registry;
	WixlMsiTableServiceControl* table_service_control;
	WixlMsiTableServiceInstall* table_service_install;
	WixlMsiTableFile* table_file;
	WixlMsiTableIniFile* table_ini_file;
	WixlMsiTableRemoveIniFile* table_remove_ini_file;
	WixlMsiTableAdminExecuteSequence* table_admin_execute_sequence;
	WixlMsiTableAdminUISequence* table_admin_ui_sequence;
	WixlMsiTableAdvtExecuteSequence* table_advt_execute_sequence;
	WixlMsiTableInstallExecuteSequence* table_install_execute_sequence;
	WixlMsiTableInstallUISequence* table_install_ui_sequence;
	WixlMsiTableStreams* table_streams;
	WixlMsiTableShortcut* table_shortcut;
	WixlMsiTableUpgrade* table_upgrade;
	WixlMsiTableLaunchCondition* table_launch_condition;
	WixlMsiTableAppSearch* table_app_search;
	WixlMsiTableCustomAction* table_custom_action;
	WixlMsiTableActionText* table_action_text;
	WixlMsiTableRegLocator* table_reg_locator;
	WixlMsiTableCreateFolder* table_create_folder;
	WixlMsiTableSignature* table_signature;
	WixlMsiTableFileHash* table_file_hash;
	WixlMsiTableCheckBox* table_check_box;
	WixlMsiTableEventMapping* table_event_mapping;
	WixlMsiTableControl* table_control;
	WixlMsiTableUIText* table_ui_text;
	WixlMsiTableTextStyle* table_text_style;
	WixlMsiTableDialog* table_dialog;
	WixlMsiTableControlEvent* table_control_event;
	WixlMsiTableControlCondition* table_control_condition;
	WixlMsiTableListBox* table_list_box;
	WixlMsiTableRadioButton* table_radio_button;
	WixlMsiTableEnvironment* table_environment;
	GHashTable* tables;
};

struct _WixlMsiDatabaseClass {
	GObjectClass parent_class;
};

static gpointer wixl_msi_table_parent_class = NULL;
static gpointer wixl_msi_table_check_box_parent_class = NULL;
static gpointer wixl_msi_table_event_mapping_parent_class = NULL;
static gpointer wixl_msi_table_control_parent_class = NULL;
static gpointer wixl_msi_table_ui_text_parent_class = NULL;
static gpointer wixl_msi_table_text_style_parent_class = NULL;
static gpointer wixl_msi_table_dialog_parent_class = NULL;
static gpointer wixl_msi_table_control_event_parent_class = NULL;
static gpointer wixl_msi_table_control_condition_parent_class = NULL;
static gpointer wixl_msi_table_list_box_parent_class = NULL;
static gpointer wixl_msi_table_radio_button_parent_class = NULL;
static gpointer wixl_msi_table_file_hash_parent_class = NULL;
static gpointer wixl_msi_table_icon_parent_class = NULL;
static gpointer wixl_msi_table_binary_parent_class = NULL;
static gint WixlMsiTableSequence_private_offset;
static gpointer wixl_msi_table_sequence_parent_class = NULL;
static gpointer wixl_msi_table_sequence_action_parent_class = NULL;
static gpointer wixl_msi_table_admin_execute_sequence_parent_class = NULL;
static gpointer wixl_msi_table_admin_ui_sequence_parent_class = NULL;
static gpointer wixl_msi_table_advt_execute_sequence_parent_class = NULL;
static gpointer wixl_msi_table_install_execute_sequence_parent_class = NULL;
static gpointer wixl_msi_table_install_ui_sequence_parent_class = NULL;
static gpointer wixl_msi_table_error_parent_class = NULL;
static gpointer wixl_msi_table_file_parent_class = NULL;
static gpointer wixl_msi_table_media_parent_class = NULL;
static gpointer wixl_msi_table_upgrade_parent_class = NULL;
static gpointer wixl_msi_table_launch_condition_parent_class = NULL;
static gpointer wixl_msi_table_property_parent_class = NULL;
static gpointer wixl_msi_table_directory_parent_class = NULL;
static gpointer wixl_msi_table_component_parent_class = NULL;
static gpointer wixl_msi_table_feature_components_parent_class = NULL;
static gpointer wixl_msi_table_condition_parent_class = NULL;
static gpointer wixl_msi_table_registry_parent_class = NULL;
static gpointer wixl_msi_table_shortcut_parent_class = NULL;
static gpointer wixl_msi_table_create_folder_parent_class = NULL;
static gpointer wixl_msi_table_remove_file_parent_class = NULL;
static gpointer wixl_msi_table_feature_parent_class = NULL;
static gpointer wixl_msi_table_service_control_parent_class = NULL;
static gpointer wixl_msi_table_service_install_parent_class = NULL;
static gpointer wixl_msi_table_signature_parent_class = NULL;
static gpointer wixl_msi_table_app_search_parent_class = NULL;
static gpointer wixl_msi_table_custom_action_parent_class = NULL;
static gpointer wixl_msi_table_reg_locator_parent_class = NULL;
static gpointer wixl_msi_table_validation_parent_class = NULL;
static gpointer wixl_msi_table_streams_parent_class = NULL;
static gpointer wixl_msi_table_ini_file_parent_class = NULL;
static gpointer wixl_msi_table_remove_ini_file_parent_class = NULL;
static gpointer wixl_msi_table_action_text_parent_class = NULL;
static gpointer wixl_msi_table_environment_parent_class = NULL;
static gpointer wixl_msi_summary_info_parent_class = NULL;
static gpointer wixl_msi_database_parent_class = NULL;

static void _g_object_unref0_ (gpointer var);
static inline void _g_list_free__g_object_unref0_ (GList* self);
static void wixl_msi_table_real_create (WixlMsiTable* self,
                                 LibmsiDatabase* db,
                                 GError** error);
static void wixl_msi_table_finalize (GObject * obj);
static GType wixl_msi_table_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_check_box_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_check_box_add (WixlMsiTableCheckBox* self,
                                   const gchar* property,
                                   const gchar* value,
                                   GError** error);
VALA_EXTERN WixlMsiTableCheckBox* wixl_msi_table_check_box_new (void);
VALA_EXTERN WixlMsiTableCheckBox* wixl_msi_table_check_box_construct (GType object_type);
static GType wixl_msi_table_check_box_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_event_mapping_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_event_mapping_add (WixlMsiTableEventMapping* self,
                                       const gchar* dialog,
                                       const gchar* control,
                                       const gchar* event,
                                       const gchar* attribute,
                                       GError** error);
VALA_EXTERN WixlMsiTableEventMapping* wixl_msi_table_event_mapping_new (void);
VALA_EXTERN WixlMsiTableEventMapping* wixl_msi_table_event_mapping_construct (GType object_type);
static GType wixl_msi_table_event_mapping_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_control_get_type (void) G_GNUC_CONST ;
VALA_EXTERN gboolean wixl_msi_table_control_set_next_control (WixlMsiTableControl* self,
                                                  LibmsiRecord* rec,
                                                  const gchar* next_control);
VALA_EXTERN LibmsiRecord* wixl_msi_table_control_add (WixlMsiTableControl* self,
                                          const gchar* dialog,
                                          const gchar* control,
                                          const gchar* type,
                                          gint x,
                                          gint y,
                                          gint width,
                                          gint height,
                                          gint attributes,
                                          const gchar* property,
                                          const gchar* text,
                                          const gchar* filename,
                                          const gchar* help,
                                          GError** error);
VALA_EXTERN WixlMsiTableControl* wixl_msi_table_control_new (void);
VALA_EXTERN WixlMsiTableControl* wixl_msi_table_control_construct (GType object_type);
static GType wixl_msi_table_control_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_ui_text_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_ui_text_add (WixlMsiTableUIText* self,
                                 const gchar* key,
                                 const gchar* text,
                                 GError** error);
VALA_EXTERN WixlMsiTableUIText* wixl_msi_table_ui_text_new (void);
VALA_EXTERN WixlMsiTableUIText* wixl_msi_table_ui_text_construct (GType object_type);
static GType wixl_msi_table_ui_text_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_text_style_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_text_style_add (WixlMsiTableTextStyle* self,
                                    const gchar* textstyle,
                                    const gchar* facename,
                                    gint size,
                                    gint* color,
                                    gint stylebits,
                                    GError** error);
VALA_EXTERN WixlMsiTableTextStyle* wixl_msi_table_text_style_new (void);
VALA_EXTERN WixlMsiTableTextStyle* wixl_msi_table_text_style_construct (GType object_type);
static GType wixl_msi_table_text_style_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_dialog_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_dialog_add (WixlMsiTableDialog* self,
                                const gchar* dialog,
                                gint hcenter,
                                gint vcenter,
                                gint width,
                                gint height,
                                gint attributes,
                                const gchar* title,
                                const gchar* first,
                                const gchar* _default_,
                                const gchar* cancel,
                                GError** error);
VALA_EXTERN WixlMsiTableDialog* wixl_msi_table_dialog_new (void);
VALA_EXTERN WixlMsiTableDialog* wixl_msi_table_dialog_construct (GType object_type);
static GType wixl_msi_table_dialog_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_control_event_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_control_event_add (WixlMsiTableControlEvent* self,
                                       const gchar* dialog,
                                       const gchar* control,
                                       const gchar* event,
                                       const gchar* argument,
                                       const gchar* condition,
                                       gint* ordering,
                                       GError** error);
VALA_EXTERN WixlMsiTableControlEvent* wixl_msi_table_control_event_new (void);
VALA_EXTERN WixlMsiTableControlEvent* wixl_msi_table_control_event_construct (GType object_type);
static GType wixl_msi_table_control_event_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_control_condition_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_control_condition_add (WixlMsiTableControlCondition* self,
                                           const gchar* dialog,
                                           const gchar* control,
                                           const gchar* action,
                                           const gchar* condition,
                                           GError** error);
VALA_EXTERN WixlMsiTableControlCondition* wixl_msi_table_control_condition_new (void);
VALA_EXTERN WixlMsiTableControlCondition* wixl_msi_table_control_condition_construct (GType object_type);
static GType wixl_msi_table_control_condition_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_list_box_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiTableListBox* wixl_msi_table_list_box_new (void);
VALA_EXTERN WixlMsiTableListBox* wixl_msi_table_list_box_construct (GType object_type);
static GType wixl_msi_table_list_box_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_radio_button_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_radio_button_add (WixlMsiTableRadioButton* self,
                                      const gchar* property,
                                      gint order,
                                      const gchar* value,
                                      gint x,
                                      gint y,
                                      gint width,
                                      gint height,
                                      const gchar* text,
                                      const gchar* help,
                                      GError** error);
VALA_EXTERN WixlMsiTableRadioButton* wixl_msi_table_radio_button_new (void);
VALA_EXTERN WixlMsiTableRadioButton* wixl_msi_table_radio_button_construct (GType object_type);
static GType wixl_msi_table_radio_button_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_file_hash_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_file_hash_add (WixlMsiTableFileHash* self,
                                   const gchar* file,
                                   gint hash1,
                                   gint hash2,
                                   gint hash3,
                                   gint hash4,
                                   gint* options,
                                   GError** error);
VALA_EXTERN void wixl_msi_table_file_hash_add_with_file (WixlMsiTableFileHash* self,
                                             const gchar* FileId,
                                             GFile* file,
                                             GError** error);
VALA_EXTERN WixlMsiTableFileHash* wixl_msi_table_file_hash_new (void);
VALA_EXTERN WixlMsiTableFileHash* wixl_msi_table_file_hash_construct (GType object_type);
static GType wixl_msi_table_file_hash_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_icon_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_icon_add (WixlMsiTableIcon* self,
                              const gchar* id,
                              const gchar* filename,
                              GError** error);
VALA_EXTERN WixlMsiTableIcon* wixl_msi_table_icon_new (void);
VALA_EXTERN WixlMsiTableIcon* wixl_msi_table_icon_construct (GType object_type);
static GType wixl_msi_table_icon_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_binary_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_binary_add (WixlMsiTableBinary* self,
                                const gchar* id,
                                const gchar* filename,
                                GError** error);
VALA_EXTERN WixlMsiTableBinary* wixl_msi_table_binary_new (void);
VALA_EXTERN WixlMsiTableBinary* wixl_msi_table_binary_construct (GType object_type);
static GType wixl_msi_table_binary_get_type_once (void);
static void _g_free0_ (gpointer var);
static void _wixl_msi_table_sequence_action_unref0_ (gpointer var);
static void wixl_msi_table_sequence_add (WixlMsiTableSequence* self,
                                  const gchar* action,
                                  const gchar* condition,
                                  gint sequence,
                                  GError** error);
static void wixl_msi_table_sequence_sort_topological_visit (WixlMsiTableSequence* self,
                                                     WixlMsiTableSequenceAction* action,
                                                     GList** sorted);
static GList* wixl_msi_table_sequence_sorted_actions (WixlMsiTableSequence* self);
static gint __lambda4_ (WixlMsiTableSequenceAction* a,
                 WixlMsiTableSequenceAction* b);
static gint ___lambda4__gcompare_func (gconstpointer a,
                                gconstpointer b);
static GList* wixl_msi_table_sequence_sort_topological (WixlMsiTableSequence* self);
static void wixl_msi_table_sequence_add_implicit_deps (WixlMsiTableSequence* self);
static inline void _g_list_free__wixl_msi_table_sequence_action_unref0_ (GList* self);
static void wixl_msi_table_sequence_action_finalize (WixlMsiTableSequenceAction * obj);
static GType wixl_msi_table_sequence_action_get_type_once (void);
static void wixl_msi_table_sequence_finalize (GObject * obj);
static GType wixl_msi_table_sequence_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_admin_execute_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiTableAdminExecuteSequence* wixl_msi_table_admin_execute_sequence_new (void);
VALA_EXTERN WixlMsiTableAdminExecuteSequence* wixl_msi_table_admin_execute_sequence_construct (GType object_type);
static GType wixl_msi_table_admin_execute_sequence_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_admin_ui_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiTableAdminUISequence* wixl_msi_table_admin_ui_sequence_new (void);
VALA_EXTERN WixlMsiTableAdminUISequence* wixl_msi_table_admin_ui_sequence_construct (GType object_type);
static GType wixl_msi_table_admin_ui_sequence_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_advt_execute_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiTableAdvtExecuteSequence* wixl_msi_table_advt_execute_sequence_new (void);
VALA_EXTERN WixlMsiTableAdvtExecuteSequence* wixl_msi_table_advt_execute_sequence_construct (GType object_type);
static GType wixl_msi_table_advt_execute_sequence_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_install_execute_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiTableInstallExecuteSequence* wixl_msi_table_install_execute_sequence_new (void);
VALA_EXTERN WixlMsiTableInstallExecuteSequence* wixl_msi_table_install_execute_sequence_construct (GType object_type);
static GType wixl_msi_table_install_execute_sequence_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_install_ui_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiTableInstallUISequence* wixl_msi_table_install_ui_sequence_new (void);
VALA_EXTERN WixlMsiTableInstallUISequence* wixl_msi_table_install_ui_sequence_construct (GType object_type);
static GType wixl_msi_table_install_ui_sequence_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_error_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiTableError* wixl_msi_table_error_new (void);
VALA_EXTERN WixlMsiTableError* wixl_msi_table_error_construct (GType object_type);
static GType wixl_msi_table_error_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_file_get_type (void) G_GNUC_CONST ;
VALA_EXTERN LibmsiRecord* wixl_msi_table_file_add (WixlMsiTableFile* self,
                                       const gchar* File,
                                       const gchar* Component,
                                       const gchar* FileName,
                                       gint FileSize,
                                       gint Attributes,
                                       const gchar* Version,
                                       gint Sequence,
                                       GError** error);
VALA_EXTERN gboolean wixl_msi_table_file_set_sequence (LibmsiRecord* rec,
                                           gint Sequence);
VALA_EXTERN WixlMsiTableFile* wixl_msi_table_file_new (void);
VALA_EXTERN WixlMsiTableFile* wixl_msi_table_file_construct (GType object_type);
static GType wixl_msi_table_file_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_media_get_type (void) G_GNUC_CONST ;
VALA_EXTERN gboolean wixl_msi_table_media_set_last_sequence (WixlMsiTableMedia* self,
                                                 LibmsiRecord* rec,
                                                 gint last_sequence);
VALA_EXTERN LibmsiRecord* wixl_msi_table_media_add (WixlMsiTableMedia* self,
                                        const gchar* DiskId,
                                        const gchar* DiskPrompt,
                                        const gchar* Cabinet,
                                        GError** error);
VALA_EXTERN WixlMsiTableMedia* wixl_msi_table_media_new (void);
VALA_EXTERN WixlMsiTableMedia* wixl_msi_table_media_construct (GType object_type);
static GType wixl_msi_table_media_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_upgrade_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_upgrade_add (WixlMsiTableUpgrade* self,
                                 const gchar* UpgradeCode,
                                 const gchar* VersionMin,
                                 const gchar* VersionMax,
                                 gint Attributes,
                                 const gchar* ActionProperty,
                                 GError** error);
VALA_EXTERN WixlMsiTableUpgrade* wixl_msi_table_upgrade_new (void);
VALA_EXTERN WixlMsiTableUpgrade* wixl_msi_table_upgrade_construct (GType object_type);
static GType wixl_msi_table_upgrade_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_launch_condition_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_launch_condition_add (WixlMsiTableLaunchCondition* self,
                                          const gchar* condition,
                                          const gchar* description,
                                          GError** error);
VALA_EXTERN WixlMsiTableLaunchCondition* wixl_msi_table_launch_condition_new (void);
VALA_EXTERN WixlMsiTableLaunchCondition* wixl_msi_table_launch_condition_construct (GType object_type);
static GType wixl_msi_table_launch_condition_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_property_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_property_add (WixlMsiTableProperty* self,
                                  const gchar* prop,
                                  const gchar* value,
                                  GError** error);
VALA_EXTERN WixlMsiTableProperty* wixl_msi_table_property_new (void);
VALA_EXTERN WixlMsiTableProperty* wixl_msi_table_property_construct (GType object_type);
static GType wixl_msi_table_property_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_directory_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_directory_add (WixlMsiTableDirectory* self,
                                   const gchar* Directory,
                                   const gchar* Parent,
                                   const gchar* DefaultDir,
                                   GError** error);
VALA_EXTERN WixlMsiTableDirectory* wixl_msi_table_directory_new (void);
VALA_EXTERN WixlMsiTableDirectory* wixl_msi_table_directory_construct (GType object_type);
static GType wixl_msi_table_directory_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_component_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_component_add (WixlMsiTableComponent* self,
                                   const gchar* Component,
                                   const gchar* ComponentId,
                                   const gchar* Directory,
                                   gint Attributes,
                                   const gchar* KeyPath,
                                   const gchar* Condition,
                                   GError** error);
VALA_EXTERN WixlMsiTableComponent* wixl_msi_table_component_new (void);
VALA_EXTERN WixlMsiTableComponent* wixl_msi_table_component_construct (GType object_type);
static GType wixl_msi_table_component_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_feature_components_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_feature_components_add (WixlMsiTableFeatureComponents* self,
                                            const gchar* Feature,
                                            const gchar* Component,
                                            GError** error);
VALA_EXTERN WixlMsiTableFeatureComponents* wixl_msi_table_feature_components_new (void);
VALA_EXTERN WixlMsiTableFeatureComponents* wixl_msi_table_feature_components_construct (GType object_type);
static GType wixl_msi_table_feature_components_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_condition_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_condition_add (WixlMsiTableCondition* self,
                                   const gchar* Feature,
                                   gint Level,
                                   const gchar* Condition,
                                   GError** error);
VALA_EXTERN WixlMsiTableCondition* wixl_msi_table_condition_new (void);
VALA_EXTERN WixlMsiTableCondition* wixl_msi_table_condition_construct (GType object_type);
static GType wixl_msi_table_condition_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_registry_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_registry_add (WixlMsiTableRegistry* self,
                                  const gchar* Registry,
                                  gint Root,
                                  const gchar* Key,
                                  const gchar* Component,
                                  const gchar* Name,
                                  const gchar* Value,
                                  GError** error);
VALA_EXTERN WixlMsiTableRegistry* wixl_msi_table_registry_new (void);
VALA_EXTERN WixlMsiTableRegistry* wixl_msi_table_registry_construct (GType object_type);
static GType wixl_msi_table_registry_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_shortcut_get_type (void) G_GNUC_CONST ;
VALA_EXTERN LibmsiRecord* wixl_msi_table_shortcut_add (WixlMsiTableShortcut* self,
                                           const gchar* Shortcut,
                                           const gchar* Directory,
                                           const gchar* Name,
                                           const gchar* Component,
                                           GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_target (LibmsiRecord* rec,
                                         const gchar* Target,
                                         GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_icon (LibmsiRecord* rec,
                                       const gchar* Icon,
                                       GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_icon_index (LibmsiRecord* rec,
                                             gint IconIndex,
                                             GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_working_dir (LibmsiRecord* rec,
                                              const gchar* WkDir,
                                              GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_description (LibmsiRecord* rec,
                                              const gchar* Description,
                                              GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_arguments (LibmsiRecord* rec,
                                            const gchar* Arguments,
                                            GError** error);
VALA_EXTERN WixlMsiTableShortcut* wixl_msi_table_shortcut_new (void);
VALA_EXTERN WixlMsiTableShortcut* wixl_msi_table_shortcut_construct (GType object_type);
static GType wixl_msi_table_shortcut_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_create_folder_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_create_folder_add (WixlMsiTableCreateFolder* self,
                                       const gchar* Directory,
                                       const gchar* Component,
                                       GError** error);
VALA_EXTERN WixlMsiTableCreateFolder* wixl_msi_table_create_folder_new (void);
VALA_EXTERN WixlMsiTableCreateFolder* wixl_msi_table_create_folder_construct (GType object_type);
static GType wixl_msi_table_create_folder_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_remove_file_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_remove_file_add (WixlMsiTableRemoveFile* self,
                                     const gchar* FileKey,
                                     const gchar* Component,
                                     const gchar* DirProperty,
                                     gint InstallMode,
                                     GError** error);
VALA_EXTERN WixlMsiTableRemoveFile* wixl_msi_table_remove_file_new (void);
VALA_EXTERN WixlMsiTableRemoveFile* wixl_msi_table_remove_file_construct (GType object_type);
static GType wixl_msi_table_remove_file_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_feature_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_feature_add (WixlMsiTableFeature* self,
                                 const gchar* Feature,
                                 gint Display,
                                 gint Level,
                                 gint Attributes,
                                 const gchar* Parent,
                                 const gchar* Title,
                                 const gchar* Description,
                                 const gchar* ConfigurableDirectory,
                                 GError** error);
VALA_EXTERN WixlMsiTableFeature* wixl_msi_table_feature_new (void);
VALA_EXTERN WixlMsiTableFeature* wixl_msi_table_feature_construct (GType object_type);
static GType wixl_msi_table_feature_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_service_control_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_service_control_add (WixlMsiTableServiceControl* self,
                                         const gchar* ServiceControl,
                                         const gchar* Name,
                                         gint Event,
                                         const gchar* Arguments,
                                         gboolean* Wait,
                                         const gchar* Component,
                                         GError** error);
VALA_EXTERN WixlMsiTableServiceControl* wixl_msi_table_service_control_new (void);
VALA_EXTERN WixlMsiTableServiceControl* wixl_msi_table_service_control_construct (GType object_type);
static GType wixl_msi_table_service_control_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_service_install_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_service_install_add (WixlMsiTableServiceInstall* self,
                                         const gchar* ServiceInstall,
                                         const gchar* Name,
                                         const gchar* DisplayName,
                                         gint ServiceType,
                                         gint StartType,
                                         gint ErrorControl,
                                         const gchar* LoadOrderGroup,
                                         const gchar* Dependencies,
                                         const gchar* StartName,
                                         const gchar* Password,
                                         const gchar* Arguments,
                                         const gchar* Component,
                                         const gchar* Description,
                                         GError** error);
VALA_EXTERN WixlMsiTableServiceInstall* wixl_msi_table_service_install_new (void);
VALA_EXTERN WixlMsiTableServiceInstall* wixl_msi_table_service_install_construct (GType object_type);
static GType wixl_msi_table_service_install_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_signature_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiTableSignature* wixl_msi_table_signature_new (void);
VALA_EXTERN WixlMsiTableSignature* wixl_msi_table_signature_construct (GType object_type);
static GType wixl_msi_table_signature_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_app_search_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_app_search_add (WixlMsiTableAppSearch* self,
                                    const gchar* Property,
                                    const gchar* Signature,
                                    GError** error);
VALA_EXTERN WixlMsiTableAppSearch* wixl_msi_table_app_search_new (void);
VALA_EXTERN WixlMsiTableAppSearch* wixl_msi_table_app_search_construct (GType object_type);
static GType wixl_msi_table_app_search_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_custom_action_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_custom_action_add (WixlMsiTableCustomAction* self,
                                       const gchar* Action,
                                       gint Type,
                                       const gchar* Source,
                                       const gchar* Target,
                                       gint* ExtendedType,
                                       GError** error);
VALA_EXTERN WixlMsiTableCustomAction* wixl_msi_table_custom_action_new (void);
VALA_EXTERN WixlMsiTableCustomAction* wixl_msi_table_custom_action_construct (GType object_type);
static GType wixl_msi_table_custom_action_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_reg_locator_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_reg_locator_add (WixlMsiTableRegLocator* self,
                                     const gchar* Signature,
                                     gint Root,
                                     const gchar* Key,
                                     const gchar* Name,
                                     gint Type,
                                     GError** error);
VALA_EXTERN WixlMsiTableRegLocator* wixl_msi_table_reg_locator_new (void);
VALA_EXTERN WixlMsiTableRegLocator* wixl_msi_table_reg_locator_construct (GType object_type);
static GType wixl_msi_table_reg_locator_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_validation_get_type (void) G_GNUC_CONST ;
static void wixl_msi_table_validation_real_create (WixlMsiTable* base,
                                            LibmsiDatabase* db,
                                            GError** error);
VALA_EXTERN WixlMsiTableValidation* wixl_msi_table_validation_new (void);
VALA_EXTERN WixlMsiTableValidation* wixl_msi_table_validation_construct (GType object_type);
static GType wixl_msi_table_validation_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_streams_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_streams_add (WixlMsiTableStreams* self,
                                 const gchar* name,
                                 GInputStream* input,
                                 gsize count,
                                 GError** error);
static void wixl_msi_table_streams_real_create (WixlMsiTable* base,
                                         LibmsiDatabase* db,
                                         GError** error);
VALA_EXTERN WixlMsiTableStreams* wixl_msi_table_streams_new (void);
VALA_EXTERN WixlMsiTableStreams* wixl_msi_table_streams_construct (GType object_type);
static GType wixl_msi_table_streams_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_ini_file_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_ini_file_add (WixlMsiTableIniFile* self,
                                  const gchar* IniFile,
                                  const gchar* FileName,
                                  const gchar* DirProperty,
                                  const gchar* Section,
                                  const gchar* Key,
                                  const gchar* Value,
                                  gint Action,
                                  const gchar* Component,
                                  GError** error);
VALA_EXTERN WixlMsiTableIniFile* wixl_msi_table_ini_file_new (void);
VALA_EXTERN WixlMsiTableIniFile* wixl_msi_table_ini_file_construct (GType object_type);
static GType wixl_msi_table_ini_file_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_remove_ini_file_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_remove_ini_file_add (WixlMsiTableRemoveIniFile* self,
                                         const gchar* IniFile,
                                         const gchar* FileName,
                                         const gchar* DirProperty,
                                         const gchar* Section,
                                         const gchar* Key,
                                         const gchar* Value,
                                         gint Action,
                                         const gchar* Component,
                                         GError** error);
VALA_EXTERN WixlMsiTableRemoveIniFile* wixl_msi_table_remove_ini_file_new (void);
VALA_EXTERN WixlMsiTableRemoveIniFile* wixl_msi_table_remove_ini_file_construct (GType object_type);
static GType wixl_msi_table_remove_ini_file_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_action_text_get_type (void) G_GNUC_CONST ;
VALA_EXTERN void wixl_msi_table_action_text_add (WixlMsiTableActionText* self,
                                     const gchar* Action,
                                     const gchar* Description,
                                     const gchar* Template,
                                     GError** error);
VALA_EXTERN WixlMsiTableActionText* wixl_msi_table_action_text_new (void);
VALA_EXTERN WixlMsiTableActionText* wixl_msi_table_action_text_construct (GType object_type);
static GType wixl_msi_table_action_text_get_type_once (void);
VALA_EXTERN GType wixl_msi_table_environment_get_type (void) G_GNUC_CONST ;
VALA_EXTERN LibmsiRecord* wixl_msi_table_environment_add (WixlMsiTableEnvironment* self,
                                              const gchar* Environment,
                                              const gchar* Name,
                                              const gchar* Value,
                                              const gchar* Component,
                                              GError** error);
VALA_EXTERN WixlMsiTableEnvironment* wixl_msi_table_environment_new (void);
VALA_EXTERN WixlMsiTableEnvironment* wixl_msi_table_environment_construct (GType object_type);
static GType wixl_msi_table_environment_get_type_once (void);
VALA_EXTERN GType wixl_msi_summary_info_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlMsiSummaryInfo* wixl_msi_summary_info_new (void);
VALA_EXTERN WixlMsiSummaryInfo* wixl_msi_summary_info_construct (GType object_type);
VALA_EXTERN void wixl_msi_summary_info_set_property (WixlMsiSummaryInfo* self,
                                         LibmsiProperty prop,
                                         GValue* value,
                                         GError** error);
VALA_EXTERN void wixl_msi_summary_info_save (WixlMsiSummaryInfo* self,
                                 LibmsiDatabase* db,
                                 GError** error);
VALA_EXTERN void wixl_msi_summary_info_set_codepage (WixlMsiSummaryInfo* self,
                                         gint value,
                                         GError** error);
VALA_EXTERN void wixl_msi_summary_info_set_author (WixlMsiSummaryInfo* self,
                                       const gchar* value,
                                       GError** error);
VALA_EXTERN void wixl_msi_summary_info_set_keywords (WixlMsiSummaryInfo* self,
                                         const gchar* value,
                                         GError** error);
VALA_EXTERN void wixl_msi_summary_info_set_subject (WixlMsiSummaryInfo* self,
                                        const gchar* value,
                                        GError** error);
VALA_EXTERN gchar* wixl_msi_summary_info_get_subject (WixlMsiSummaryInfo* self);
VALA_EXTERN void wixl_msi_summary_info_set_comments (WixlMsiSummaryInfo* self,
                                         const gchar* value,
                                         GError** error);
VALA_EXTERN gchar* wixl_msi_summary_info_get_comments (WixlMsiSummaryInfo* self);
static GObject * wixl_msi_summary_info_constructor (GType type,
                                             guint n_construct_properties,
                                             GObjectConstructParam * construct_properties);
static void wixl_msi_summary_info_finalize (GObject * obj);
static GType wixl_msi_summary_info_get_type_once (void);
VALA_EXTERN GType wixl_msi_database_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_arch_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_extension_get_type (void) G_GNUC_CONST ;
static gint wixl_msi_database_get_default_version (WixlMsiDatabase* self);
static gchar* wixl_msi_database_get_arch_template (WixlMsiDatabase* self);
VALA_EXTERN WixlMsiDatabase* wixl_msi_database_new (WixlArch arch,
                                        WixlExtension* extensions,
                                        gint extensions_length1);
VALA_EXTERN WixlMsiDatabase* wixl_msi_database_construct (GType object_type,
                                              WixlArch arch,
                                              WixlExtension* extensions,
                                              gint extensions_length1);
static WixlExtension* _vala_array_dup4 (WixlExtension* self,
                                 gssize length);
static gboolean _vala_wixl_extension_array_contains (WixlExtension * stack,
                                              gssize stack_length,
                                              const WixlExtension needle);
VALA_EXTERN void wixl_msi_database_build (WixlMsiDatabase* self,
                              const gchar* filename,
                              GError** error);
static void wixl_msi_database_finalize (GObject * obj);
static GType wixl_msi_database_get_type_once (void);
static void _vala_array_destroy (gpointer array,
                          gssize array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gssize array_length,
                       GDestroyNotify destroy_func);
static inline gpointer _vala_memdup2 (gconstpointer mem,
                        gsize byte_size);

static void
_g_object_unref0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}

static inline void
_g_list_free__g_object_unref0_ (GList* self)
{
	g_list_free_full (self, (GDestroyNotify) _g_object_unref0_);
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static void
wixl_msi_table_real_create (WixlMsiTable* self,
                            LibmsiDatabase* db,
                            GError** error)
{
	LibmsiQuery* query = NULL;
	const gchar* _tmp0_;
	LibmsiQuery* _tmp1_;
	LibmsiQuery* _tmp2_;
	const gchar* _tmp3_;
	LibmsiQuery* _tmp4_ = NULL;
	const gchar* _tmp5_;
	LibmsiQuery* _tmp6_;
	LibmsiQuery* _tmp7_;
	GList* _tmp8_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (db != NULL);
	_tmp0_ = WIXL_MSI_TABLE_GET_CLASS (self)->sql_create;
	_tmp1_ = libmsi_query_new (db, _tmp0_, &_inner_error0_);
	query = _tmp1_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp2_ = query;
	libmsi_query_execute (_tmp2_, NULL, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (query);
		return;
	}
	_tmp3_ = WIXL_MSI_TABLE_GET_CLASS (self)->sql_insert;
	if (_tmp3_ == NULL) {
		_g_object_unref0 (query);
		return;
	}
	_tmp5_ = WIXL_MSI_TABLE_GET_CLASS (self)->sql_insert;
	_tmp6_ = libmsi_query_new (db, _tmp5_, &_inner_error0_);
	_tmp4_ = _tmp6_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (query);
		return;
	}
	_tmp7_ = _tmp4_;
	_tmp4_ = NULL;
	_g_object_unref0 (query);
	query = _tmp7_;
	_tmp8_ = self->records;
	{
		GList* r_collection = NULL;
		GList* r_it = NULL;
		r_collection = _tmp8_;
		for (r_it = r_collection; r_it != NULL; r_it = r_it->next) {
			LibmsiRecord* _tmp9_;
			LibmsiRecord* r = NULL;
			_tmp9_ = _g_object_ref0 ((LibmsiRecord*) r_it->data);
			r = _tmp9_;
			{
				LibmsiQuery* _tmp10_;
				LibmsiRecord* _tmp11_;
				_tmp10_ = query;
				_tmp11_ = r;
				libmsi_query_execute (_tmp10_, _tmp11_, &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (r);
					_g_object_unref0 (_tmp4_);
					_g_object_unref0 (query);
					return;
				}
				_g_object_unref0 (r);
			}
		}
	}
	_g_object_unref0 (_tmp4_);
	_g_object_unref0 (query);
}

void
wixl_msi_table_create (WixlMsiTable* self,
                       LibmsiDatabase* db,
                       GError** error)
{
	WixlMsiTableClass* _klass_;
	g_return_if_fail (self != NULL);
	_klass_ = WIXL_MSI_TABLE_GET_CLASS (self);
	if (_klass_->create) {
		_klass_->create (self, db, error);
	}
}

WixlMsiTable*
wixl_msi_table_construct (GType object_type)
{
	WixlMsiTable * self = NULL;
	self = (WixlMsiTable*) g_object_new (object_type, NULL);
	return self;
}

static void
wixl_msi_table_class_init (WixlMsiTableClass * klass,
                           gpointer klass_data)
{
	wixl_msi_table_parent_class = g_type_class_peek_parent (klass);
	((WixlMsiTableClass *) klass)->create = (void (*) (WixlMsiTable*, LibmsiDatabase*, GError**)) wixl_msi_table_real_create;
	G_OBJECT_CLASS (klass)->finalize = wixl_msi_table_finalize;
}

static void
wixl_msi_table_instance_init (WixlMsiTable * self,
                              gpointer klass)
{
}

static void
wixl_msi_table_finalize (GObject * obj)
{
	WixlMsiTable * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_TABLE, WixlMsiTable);
	(self->records == NULL) ? NULL : (self->records = (_g_list_free__g_object_unref0_ (self->records), NULL));
	G_OBJECT_CLASS (wixl_msi_table_parent_class)->finalize (obj);
}

static GType
wixl_msi_table_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTable), 0, (GInstanceInitFunc) wixl_msi_table_instance_init, NULL };
	GType wixl_msi_table_type_id;
	wixl_msi_table_type_id = g_type_register_static (G_TYPE_OBJECT, "WixlMsiTable", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
	return wixl_msi_table_type_id;
}

GType
wixl_msi_table_get_type (void)
{
	static volatile gsize wixl_msi_table_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_type_id__once)) {
		GType wixl_msi_table_type_id;
		wixl_msi_table_type_id = wixl_msi_table_get_type_once ();
		g_once_init_leave (&wixl_msi_table_type_id__once, wixl_msi_table_type_id);
	}
	return wixl_msi_table_type_id__once;
}

void
wixl_msi_table_check_box_add (WixlMsiTableCheckBox* self,
                              const gchar* property,
                              const gchar* value,
                              GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp6_;
	LibmsiRecord* _tmp7_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (property != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, property)) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp3_ = FALSE;
		if (value != NULL) {
			LibmsiRecord* _tmp4_;
			_tmp4_ = rec;
			_tmp3_ = !libmsi_record_set_string (_tmp4_, (guint) 2, value);
		} else {
			_tmp3_ = FALSE;
		}
		_tmp1_ = _tmp3_;
	}
	if (_tmp1_) {
		GError* _tmp5_;
		_tmp5_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp5_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp6_ = rec;
	_tmp7_ = _g_object_ref0 (_tmp6_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp7_);
	_g_object_unref0 (rec);
}

WixlMsiTableCheckBox*
wixl_msi_table_check_box_construct (GType object_type)
{
	WixlMsiTableCheckBox * self = NULL;
	self = (WixlMsiTableCheckBox*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableCheckBox*
wixl_msi_table_check_box_new (void)
{
	return wixl_msi_table_check_box_construct (WIXL_TYPE_MSI_TABLE_CHECK_BOX);
}

static void
wixl_msi_table_check_box_class_init (WixlMsiTableCheckBoxClass * klass,
                                     gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_check_box_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("CheckBox");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `CheckBox` (`Property` CHAR(72) NOT NULL, `Value` CHAR(64" \
") PRIMARY KEY `Property`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `CheckBox` (`Property`, `Value`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_check_box_instance_init (WixlMsiTableCheckBox * self,
                                        gpointer klass)
{
}

static GType
wixl_msi_table_check_box_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableCheckBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_check_box_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableCheckBox), 0, (GInstanceInitFunc) wixl_msi_table_check_box_instance_init, NULL };
	GType wixl_msi_table_check_box_type_id;
	wixl_msi_table_check_box_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableCheckBox", &g_define_type_info, 0);
	return wixl_msi_table_check_box_type_id;
}

GType
wixl_msi_table_check_box_get_type (void)
{
	static volatile gsize wixl_msi_table_check_box_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_check_box_type_id__once)) {
		GType wixl_msi_table_check_box_type_id;
		wixl_msi_table_check_box_type_id = wixl_msi_table_check_box_get_type_once ();
		g_once_init_leave (&wixl_msi_table_check_box_type_id__once, wixl_msi_table_check_box_type_id);
	}
	return wixl_msi_table_check_box_type_id__once;
}

void
wixl_msi_table_event_mapping_add (WixlMsiTableEventMapping* self,
                                  const gchar* dialog,
                                  const gchar* control,
                                  const gchar* event,
                                  const gchar* attribute,
                                  GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_;
	LibmsiRecord* _tmp9_;
	LibmsiRecord* _tmp10_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (dialog != NULL);
	g_return_if_fail (control != NULL);
	g_return_if_fail (event != NULL);
	g_return_if_fail (attribute != NULL);
	_tmp0_ = libmsi_record_new ((guint) 4);
	rec = _tmp0_;
	_tmp4_ = rec;
	if (!libmsi_record_set_string (_tmp4_, (guint) 1, dialog)) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_;
		_tmp5_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp5_, (guint) 2, control);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_;
		_tmp6_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp6_, (guint) 3, event);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp7_, (guint) 4, attribute);
	}
	if (_tmp1_) {
		GError* _tmp8_;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp8_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}

WixlMsiTableEventMapping*
wixl_msi_table_event_mapping_construct (GType object_type)
{
	WixlMsiTableEventMapping * self = NULL;
	self = (WixlMsiTableEventMapping*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableEventMapping*
wixl_msi_table_event_mapping_new (void)
{
	return wixl_msi_table_event_mapping_construct (WIXL_TYPE_MSI_TABLE_EVENT_MAPPING);
}

static void
wixl_msi_table_event_mapping_class_init (WixlMsiTableEventMappingClass * klass,
                                         gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_event_mapping_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("EventMapping");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `EventMapping` (`Dialog_` CHAR(72) NOT NULL, `Control_` C" \
"HAR(50) NOT NULL, `Event` CHAR(50) NOT NULL, `Attribute` CHAR(50) NOT " \
"NULL PRIMARY KEY `Dialog_`, `Control_`, `Event`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `EventMapping` (`Dialog_`, `Control_`, `Event`, `Attribute" \
"`) VALUES (?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_event_mapping_instance_init (WixlMsiTableEventMapping * self,
                                            gpointer klass)
{
}

static GType
wixl_msi_table_event_mapping_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableEventMappingClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_event_mapping_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableEventMapping), 0, (GInstanceInitFunc) wixl_msi_table_event_mapping_instance_init, NULL };
	GType wixl_msi_table_event_mapping_type_id;
	wixl_msi_table_event_mapping_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableEventMapping", &g_define_type_info, 0);
	return wixl_msi_table_event_mapping_type_id;
}

GType
wixl_msi_table_event_mapping_get_type (void)
{
	static volatile gsize wixl_msi_table_event_mapping_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_event_mapping_type_id__once)) {
		GType wixl_msi_table_event_mapping_type_id;
		wixl_msi_table_event_mapping_type_id = wixl_msi_table_event_mapping_get_type_once ();
		g_once_init_leave (&wixl_msi_table_event_mapping_type_id__once, wixl_msi_table_event_mapping_type_id);
	}
	return wixl_msi_table_event_mapping_type_id__once;
}

gboolean
wixl_msi_table_control_set_next_control (WixlMsiTableControl* self,
                                         LibmsiRecord* rec,
                                         const gchar* next_control)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (rec != NULL, FALSE);
	g_return_val_if_fail (next_control != NULL, FALSE);
	result = libmsi_record_set_string (rec, (guint) 11, next_control);
	return result;
}

LibmsiRecord*
wixl_msi_table_control_add (WixlMsiTableControl* self,
                            const gchar* dialog,
                            const gchar* control,
                            const gchar* type,
                            gint x,
                            gint y,
                            gint width,
                            gint height,
                            gint attributes,
                            const gchar* property,
                            const gchar* text,
                            const gchar* filename,
                            const gchar* help,
                            GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp9_ = FALSE;
	gboolean _tmp10_ = FALSE;
	gboolean _tmp11_ = FALSE;
	gboolean _tmp12_ = FALSE;
	gboolean _tmp13_ = FALSE;
	LibmsiRecord* _tmp14_;
	LibmsiRecord* _tmp28_;
	LibmsiRecord* _tmp29_;
	GError* _inner_error0_ = NULL;
	LibmsiRecord* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (dialog != NULL, NULL);
	g_return_val_if_fail (control != NULL, NULL);
	g_return_val_if_fail (type != NULL, NULL);
	_tmp0_ = libmsi_record_new ((guint) 12);
	rec = _tmp0_;
	if (text != NULL) {
		LibmsiRecord* _tmp1_;
		_tmp1_ = rec;
		if (!libmsi_record_set_string (_tmp1_, (guint) 10, text)) {
			GError* _tmp2_;
			_tmp2_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
			_inner_error0_ = _tmp2_;
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			return NULL;
		}
	} else {
		if (filename != NULL) {
			LibmsiRecord* _tmp3_;
			_tmp3_ = rec;
			if (!libmsi_record_load_stream (_tmp3_, (guint) 10, filename)) {
				GError* _tmp4_;
				_tmp4_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
				_inner_error0_ = _tmp4_;
				g_propagate_error (error, _inner_error0_);
				_g_object_unref0 (rec);
				return NULL;
			}
		}
	}
	_tmp14_ = rec;
	if (!libmsi_record_set_string (_tmp14_, (guint) 1, dialog)) {
		_tmp13_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_;
		_tmp15_ = rec;
		_tmp13_ = !libmsi_record_set_string (_tmp15_, (guint) 2, control);
	}
	if (_tmp13_) {
		_tmp12_ = TRUE;
	} else {
		LibmsiRecord* _tmp16_;
		_tmp16_ = rec;
		_tmp12_ = !libmsi_record_set_string (_tmp16_, (guint) 3, type);
	}
	if (_tmp12_) {
		_tmp11_ = TRUE;
	} else {
		LibmsiRecord* _tmp17_;
		_tmp17_ = rec;
		_tmp11_ = !libmsi_record_set_int (_tmp17_, (guint) 4, x);
	}
	if (_tmp11_) {
		_tmp10_ = TRUE;
	} else {
		LibmsiRecord* _tmp18_;
		_tmp18_ = rec;
		_tmp10_ = !libmsi_record_set_int (_tmp18_, (guint) 5, y);
	}
	if (_tmp10_) {
		_tmp9_ = TRUE;
	} else {
		LibmsiRecord* _tmp19_;
		_tmp19_ = rec;
		_tmp9_ = !libmsi_record_set_int (_tmp19_, (guint) 6, width);
	}
	if (_tmp9_) {
		_tmp8_ = TRUE;
	} else {
		LibmsiRecord* _tmp20_;
		_tmp20_ = rec;
		_tmp8_ = !libmsi_record_set_int (_tmp20_, (guint) 7, height);
	}
	if (_tmp8_) {
		_tmp7_ = TRUE;
	} else {
		gboolean _tmp21_ = FALSE;
		if (attributes > 0) {
			LibmsiRecord* _tmp22_;
			_tmp22_ = rec;
			_tmp21_ = !libmsi_record_set_int (_tmp22_, (guint) 8, attributes);
		} else {
			_tmp21_ = FALSE;
		}
		_tmp7_ = _tmp21_;
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		gboolean _tmp23_ = FALSE;
		if (property != NULL) {
			LibmsiRecord* _tmp24_;
			_tmp24_ = rec;
			_tmp23_ = !libmsi_record_set_string (_tmp24_, (guint) 9, property);
		} else {
			_tmp23_ = FALSE;
		}
		_tmp6_ = _tmp23_;
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		gboolean _tmp25_ = FALSE;
		if (help != NULL) {
			LibmsiRecord* _tmp26_;
			_tmp26_ = rec;
			_tmp25_ = !libmsi_record_set_string (_tmp26_, (guint) 12, help);
		} else {
			_tmp25_ = FALSE;
		}
		_tmp5_ = _tmp25_;
	}
	if (_tmp5_) {
		GError* _tmp27_;
		_tmp27_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp27_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return NULL;
	}
	_tmp28_ = rec;
	_tmp29_ = _g_object_ref0 (_tmp28_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp29_);
	result = rec;
	return result;
}

WixlMsiTableControl*
wixl_msi_table_control_construct (GType object_type)
{
	WixlMsiTableControl * self = NULL;
	self = (WixlMsiTableControl*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableControl*
wixl_msi_table_control_new (void)
{
	return wixl_msi_table_control_construct (WIXL_TYPE_MSI_TABLE_CONTROL);
}

static void
wixl_msi_table_control_class_init (WixlMsiTableControlClass * klass,
                                   gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_control_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Control");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Control` (`Dialog_` CHAR(72) NOT NULL, `Control` CHAR(50" \
") NOT NULL, `Type` CHAR(20) NOT NULL, `X` INT NOT NULL, `Y` INT NOT NU" \
"LL, `Width` INT NOT NULL, `Height` INT NOT NULL, `Attributes` LONG, `P" \
"roperty` CHAR(72), `Text` CHAR(0) LOCALIZABLE, `Control_Next` CHAR(50)" \
", `Help` CHAR(50) LOCALIZABLE PRIMARY KEY `Dialog_`, `Control`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Control` (`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`" \
", `Height`, `Attributes`, `Property`, `Text`, `Control_Next`, `Help`) " \
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_control_instance_init (WixlMsiTableControl * self,
                                      gpointer klass)
{
}

static GType
wixl_msi_table_control_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableControlClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_control_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableControl), 0, (GInstanceInitFunc) wixl_msi_table_control_instance_init, NULL };
	GType wixl_msi_table_control_type_id;
	wixl_msi_table_control_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableControl", &g_define_type_info, 0);
	return wixl_msi_table_control_type_id;
}

GType
wixl_msi_table_control_get_type (void)
{
	static volatile gsize wixl_msi_table_control_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_control_type_id__once)) {
		GType wixl_msi_table_control_type_id;
		wixl_msi_table_control_type_id = wixl_msi_table_control_get_type_once ();
		g_once_init_leave (&wixl_msi_table_control_type_id__once, wixl_msi_table_control_type_id);
	}
	return wixl_msi_table_control_type_id__once;
}

void
wixl_msi_table_ui_text_add (WixlMsiTableUIText* self,
                            const gchar* key,
                            const gchar* text,
                            GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp6_;
	LibmsiRecord* _tmp7_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (key != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, key)) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp3_ = FALSE;
		if (text != NULL) {
			LibmsiRecord* _tmp4_;
			_tmp4_ = rec;
			_tmp3_ = !libmsi_record_set_string (_tmp4_, (guint) 2, text);
		} else {
			_tmp3_ = FALSE;
		}
		_tmp1_ = _tmp3_;
	}
	if (_tmp1_) {
		GError* _tmp5_;
		_tmp5_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp5_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp6_ = rec;
	_tmp7_ = _g_object_ref0 (_tmp6_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp7_);
	_g_object_unref0 (rec);
}

WixlMsiTableUIText*
wixl_msi_table_ui_text_construct (GType object_type)
{
	WixlMsiTableUIText * self = NULL;
	self = (WixlMsiTableUIText*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableUIText*
wixl_msi_table_ui_text_new (void)
{
	return wixl_msi_table_ui_text_construct (WIXL_TYPE_MSI_TABLE_UI_TEXT);
}

static void
wixl_msi_table_ui_text_class_init (WixlMsiTableUITextClass * klass,
                                   gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_ui_text_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("UIText");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `UIText` (`Key` CHAR(72) NOT NULL, `Text` CHAR(255) LOCAL" \
"IZABLE PRIMARY KEY `Key`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `UIText` (`Key`, `Text`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_ui_text_instance_init (WixlMsiTableUIText * self,
                                      gpointer klass)
{
}

static GType
wixl_msi_table_ui_text_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableUITextClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_ui_text_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableUIText), 0, (GInstanceInitFunc) wixl_msi_table_ui_text_instance_init, NULL };
	GType wixl_msi_table_ui_text_type_id;
	wixl_msi_table_ui_text_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableUIText", &g_define_type_info, 0);
	return wixl_msi_table_ui_text_type_id;
}

GType
wixl_msi_table_ui_text_get_type (void)
{
	static volatile gsize wixl_msi_table_ui_text_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_ui_text_type_id__once)) {
		GType wixl_msi_table_ui_text_type_id;
		wixl_msi_table_ui_text_type_id = wixl_msi_table_ui_text_get_type_once ();
		g_once_init_leave (&wixl_msi_table_ui_text_type_id__once, wixl_msi_table_ui_text_type_id);
	}
	return wixl_msi_table_ui_text_type_id__once;
}

void
wixl_msi_table_text_style_add (WixlMsiTableTextStyle* self,
                               const gchar* textstyle,
                               const gchar* facename,
                               gint size,
                               gint* color,
                               gint stylebits,
                               GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp13_;
	LibmsiRecord* _tmp14_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (textstyle != NULL);
	g_return_if_fail (facename != NULL);
	_tmp0_ = libmsi_record_new ((guint) 5);
	rec = _tmp0_;
	_tmp5_ = rec;
	if (!libmsi_record_set_string (_tmp5_, (guint) 1, textstyle)) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_;
		_tmp6_ = rec;
		_tmp4_ = !libmsi_record_set_string (_tmp6_, (guint) 2, facename);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp3_ = !libmsi_record_set_int (_tmp7_, (guint) 3, size);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp8_ = FALSE;
		if (color != NULL) {
			LibmsiRecord* _tmp9_;
			_tmp9_ = rec;
			_tmp8_ = !libmsi_record_set_int (_tmp9_, (guint) 4, *color);
		} else {
			_tmp8_ = FALSE;
		}
		_tmp2_ = _tmp8_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp10_ = FALSE;
		if (stylebits > 0) {
			LibmsiRecord* _tmp11_;
			_tmp11_ = rec;
			_tmp10_ = !libmsi_record_set_int (_tmp11_, (guint) 5, stylebits);
		} else {
			_tmp10_ = FALSE;
		}
		_tmp1_ = _tmp10_;
	}
	if (_tmp1_) {
		GError* _tmp12_;
		_tmp12_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp12_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp13_ = rec;
	_tmp14_ = _g_object_ref0 (_tmp13_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp14_);
	_g_object_unref0 (rec);
}

WixlMsiTableTextStyle*
wixl_msi_table_text_style_construct (GType object_type)
{
	WixlMsiTableTextStyle * self = NULL;
	self = (WixlMsiTableTextStyle*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableTextStyle*
wixl_msi_table_text_style_new (void)
{
	return wixl_msi_table_text_style_construct (WIXL_TYPE_MSI_TABLE_TEXT_STYLE);
}

static void
wixl_msi_table_text_style_class_init (WixlMsiTableTextStyleClass * klass,
                                      gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_text_style_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("TextStyle");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `TextStyle` (`TextStyle` CHAR(72) NOT NULL, `FaceName` CH" \
"AR(32) NOT NULL, `Size` INT NOT NULL, `Color` LONG, `StyleBits` INT PR" \
"IMARY KEY `TextStyle`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `TextStyle` (`TextStyle`, `FaceName`, `Size`, `Color`, `St" \
"yleBits`) VALUES (?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_text_style_instance_init (WixlMsiTableTextStyle * self,
                                         gpointer klass)
{
}

static GType
wixl_msi_table_text_style_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableTextStyleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_text_style_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableTextStyle), 0, (GInstanceInitFunc) wixl_msi_table_text_style_instance_init, NULL };
	GType wixl_msi_table_text_style_type_id;
	wixl_msi_table_text_style_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableTextStyle", &g_define_type_info, 0);
	return wixl_msi_table_text_style_type_id;
}

GType
wixl_msi_table_text_style_get_type (void)
{
	static volatile gsize wixl_msi_table_text_style_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_text_style_type_id__once)) {
		GType wixl_msi_table_text_style_type_id;
		wixl_msi_table_text_style_type_id = wixl_msi_table_text_style_get_type_once ();
		g_once_init_leave (&wixl_msi_table_text_style_type_id__once, wixl_msi_table_text_style_type_id);
	}
	return wixl_msi_table_text_style_type_id__once;
}

void
wixl_msi_table_dialog_add (WixlMsiTableDialog* self,
                           const gchar* dialog,
                           gint hcenter,
                           gint vcenter,
                           gint width,
                           gint height,
                           gint attributes,
                           const gchar* title,
                           const gchar* first,
                           const gchar* _default_,
                           const gchar* cancel,
                           GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp9_ = FALSE;
	LibmsiRecord* _tmp10_;
	LibmsiRecord* _tmp24_;
	LibmsiRecord* _tmp25_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (dialog != NULL);
	g_return_if_fail (first != NULL);
	_tmp0_ = libmsi_record_new ((guint) 10);
	rec = _tmp0_;
	_tmp10_ = rec;
	if (!libmsi_record_set_string (_tmp10_, (guint) 1, dialog)) {
		_tmp9_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_;
		_tmp11_ = rec;
		_tmp9_ = !libmsi_record_set_int (_tmp11_, (guint) 2, hcenter);
	}
	if (_tmp9_) {
		_tmp8_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_;
		_tmp12_ = rec;
		_tmp8_ = !libmsi_record_set_int (_tmp12_, (guint) 3, vcenter);
	}
	if (_tmp8_) {
		_tmp7_ = TRUE;
	} else {
		LibmsiRecord* _tmp13_;
		_tmp13_ = rec;
		_tmp7_ = !libmsi_record_set_int (_tmp13_, (guint) 4, width);
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_;
		_tmp14_ = rec;
		_tmp6_ = !libmsi_record_set_int (_tmp14_, (guint) 5, height);
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_;
		_tmp15_ = rec;
		_tmp5_ = !libmsi_record_set_int (_tmp15_, (guint) 6, attributes);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		gboolean _tmp16_ = FALSE;
		if (title != NULL) {
			LibmsiRecord* _tmp17_;
			_tmp17_ = rec;
			_tmp16_ = !libmsi_record_set_string (_tmp17_, (guint) 7, title);
		} else {
			_tmp16_ = FALSE;
		}
		_tmp4_ = _tmp16_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp18_;
		_tmp18_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp18_, (guint) 8, first);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp19_ = FALSE;
		if (_default_ != NULL) {
			LibmsiRecord* _tmp20_;
			_tmp20_ = rec;
			_tmp19_ = !libmsi_record_set_string (_tmp20_, (guint) 9, _default_);
		} else {
			_tmp19_ = FALSE;
		}
		_tmp2_ = _tmp19_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp21_ = FALSE;
		if (cancel != NULL) {
			LibmsiRecord* _tmp22_;
			_tmp22_ = rec;
			_tmp21_ = !libmsi_record_set_string (_tmp22_, (guint) 10, cancel);
		} else {
			_tmp21_ = FALSE;
		}
		_tmp1_ = _tmp21_;
	}
	if (_tmp1_) {
		GError* _tmp23_;
		_tmp23_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp23_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp24_ = rec;
	_tmp25_ = _g_object_ref0 (_tmp24_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp25_);
	_g_object_unref0 (rec);
}

WixlMsiTableDialog*
wixl_msi_table_dialog_construct (GType object_type)
{
	WixlMsiTableDialog * self = NULL;
	self = (WixlMsiTableDialog*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableDialog*
wixl_msi_table_dialog_new (void)
{
	return wixl_msi_table_dialog_construct (WIXL_TYPE_MSI_TABLE_DIALOG);
}

static void
wixl_msi_table_dialog_class_init (WixlMsiTableDialogClass * klass,
                                  gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_dialog_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Dialog");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Dialog` (`Dialog` CHAR(72) NOT NULL, `HCentering` INT NO" \
"T NULL, `VCentering` INT NOT NULL, `Width` INT NOT NULL, `Height` INT " \
"NOT NULL, `Attributes` LONG, `Title` CHAR(128) LOCALIZABLE, `Control_F" \
"irst` CHAR(50) NOT NULL, `Control_Default` CHAR(50), `Control_Cancel` " \
"CHAR(50) PRIMARY KEY `Dialog`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Dialog` (`Dialog`, `HCentering`, `VCentering`, `Width`, `" \
"Height`, `Attributes`, `Title`, `Control_First`, `Control_Default`, `C" \
"ontrol_Cancel`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_dialog_instance_init (WixlMsiTableDialog * self,
                                     gpointer klass)
{
}

static GType
wixl_msi_table_dialog_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableDialog), 0, (GInstanceInitFunc) wixl_msi_table_dialog_instance_init, NULL };
	GType wixl_msi_table_dialog_type_id;
	wixl_msi_table_dialog_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableDialog", &g_define_type_info, 0);
	return wixl_msi_table_dialog_type_id;
}

GType
wixl_msi_table_dialog_get_type (void)
{
	static volatile gsize wixl_msi_table_dialog_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_dialog_type_id__once)) {
		GType wixl_msi_table_dialog_type_id;
		wixl_msi_table_dialog_type_id = wixl_msi_table_dialog_get_type_once ();
		g_once_init_leave (&wixl_msi_table_dialog_type_id__once, wixl_msi_table_dialog_type_id);
	}
	return wixl_msi_table_dialog_type_id__once;
}

void
wixl_msi_table_control_event_add (WixlMsiTableControlEvent* self,
                                  const gchar* dialog,
                                  const gchar* control,
                                  const gchar* event,
                                  const gchar* argument,
                                  const gchar* condition,
                                  gint* ordering,
                                  GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_;
	LibmsiRecord* _tmp15_;
	LibmsiRecord* _tmp16_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (dialog != NULL);
	g_return_if_fail (control != NULL);
	g_return_if_fail (event != NULL);
	g_return_if_fail (argument != NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	if (!libmsi_record_set_string (_tmp6_, (guint) 1, dialog)) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp5_ = !libmsi_record_set_string (_tmp7_, (guint) 2, control);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp4_ = !libmsi_record_set_string (_tmp8_, (guint) 3, event);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp9_, (guint) 4, argument);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp10_ = FALSE;
		if (condition != NULL) {
			LibmsiRecord* _tmp11_;
			_tmp11_ = rec;
			_tmp10_ = !libmsi_record_set_string (_tmp11_, (guint) 5, condition);
		} else {
			_tmp10_ = FALSE;
		}
		_tmp2_ = _tmp10_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp12_ = FALSE;
		if (ordering != NULL) {
			LibmsiRecord* _tmp13_;
			_tmp13_ = rec;
			_tmp12_ = !libmsi_record_set_int (_tmp13_, (guint) 6, *ordering);
		} else {
			_tmp12_ = FALSE;
		}
		_tmp1_ = _tmp12_;
	}
	if (_tmp1_) {
		GError* _tmp14_;
		_tmp14_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp14_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp15_ = rec;
	_tmp16_ = _g_object_ref0 (_tmp15_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp16_);
	_g_object_unref0 (rec);
}

WixlMsiTableControlEvent*
wixl_msi_table_control_event_construct (GType object_type)
{
	WixlMsiTableControlEvent * self = NULL;
	self = (WixlMsiTableControlEvent*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableControlEvent*
wixl_msi_table_control_event_new (void)
{
	return wixl_msi_table_control_event_construct (WIXL_TYPE_MSI_TABLE_CONTROL_EVENT);
}

static void
wixl_msi_table_control_event_class_init (WixlMsiTableControlEventClass * klass,
                                         gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_control_event_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("ControlEvent");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `ControlEvent` (`Dialog_` CHAR(72) NOT NULL, `Control_` C" \
"HAR(50) NOT NULL, `Event` CHAR(50) NOT NULL, `Argument` CHAR(255) NOT " \
"NULL, `Condition` CHAR(255), `Ordering` INT PRIMARY KEY `Dialog_`, `Co" \
"ntrol_`, `Event`, `Argument`, `Condition`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `ControlEvent` (`Dialog_`, `Control_`, `Event`, `Argument`" \
", `Condition`, `Ordering`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_control_event_instance_init (WixlMsiTableControlEvent * self,
                                            gpointer klass)
{
}

static GType
wixl_msi_table_control_event_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableControlEventClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_control_event_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableControlEvent), 0, (GInstanceInitFunc) wixl_msi_table_control_event_instance_init, NULL };
	GType wixl_msi_table_control_event_type_id;
	wixl_msi_table_control_event_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableControlEvent", &g_define_type_info, 0);
	return wixl_msi_table_control_event_type_id;
}

GType
wixl_msi_table_control_event_get_type (void)
{
	static volatile gsize wixl_msi_table_control_event_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_control_event_type_id__once)) {
		GType wixl_msi_table_control_event_type_id;
		wixl_msi_table_control_event_type_id = wixl_msi_table_control_event_get_type_once ();
		g_once_init_leave (&wixl_msi_table_control_event_type_id__once, wixl_msi_table_control_event_type_id);
	}
	return wixl_msi_table_control_event_type_id__once;
}

void
wixl_msi_table_control_condition_add (WixlMsiTableControlCondition* self,
                                      const gchar* dialog,
                                      const gchar* control,
                                      const gchar* action,
                                      const gchar* condition,
                                      GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_;
	LibmsiRecord* _tmp9_;
	LibmsiRecord* _tmp10_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (dialog != NULL);
	g_return_if_fail (control != NULL);
	g_return_if_fail (action != NULL);
	g_return_if_fail (condition != NULL);
	_tmp0_ = libmsi_record_new ((guint) 4);
	rec = _tmp0_;
	_tmp4_ = rec;
	if (!libmsi_record_set_string (_tmp4_, (guint) 1, dialog)) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_;
		_tmp5_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp5_, (guint) 2, control);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_;
		_tmp6_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp6_, (guint) 3, action);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp7_, (guint) 4, condition);
	}
	if (_tmp1_) {
		GError* _tmp8_;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp8_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}

WixlMsiTableControlCondition*
wixl_msi_table_control_condition_construct (GType object_type)
{
	WixlMsiTableControlCondition * self = NULL;
	self = (WixlMsiTableControlCondition*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableControlCondition*
wixl_msi_table_control_condition_new (void)
{
	return wixl_msi_table_control_condition_construct (WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION);
}

static void
wixl_msi_table_control_condition_class_init (WixlMsiTableControlConditionClass * klass,
                                             gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_control_condition_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("ControlCondition");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `ControlCondition` (`Dialog_` CHAR(72) NOT NULL, `Control" \
"_` CHAR(50) NOT NULL, `Action` CHAR(50) NOT NULL, `Condition` CHAR(255" \
") NOT NULL PRIMARY KEY `Dialog_`, `Control_`, `Action`, `Condition`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `ControlCondition` (`Dialog_`, `Control_`, `Action`, `Cond" \
"ition`) VALUES (?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_control_condition_instance_init (WixlMsiTableControlCondition * self,
                                                gpointer klass)
{
}

static GType
wixl_msi_table_control_condition_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableControlConditionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_control_condition_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableControlCondition), 0, (GInstanceInitFunc) wixl_msi_table_control_condition_instance_init, NULL };
	GType wixl_msi_table_control_condition_type_id;
	wixl_msi_table_control_condition_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableControlCondition", &g_define_type_info, 0);
	return wixl_msi_table_control_condition_type_id;
}

GType
wixl_msi_table_control_condition_get_type (void)
{
	static volatile gsize wixl_msi_table_control_condition_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_control_condition_type_id__once)) {
		GType wixl_msi_table_control_condition_type_id;
		wixl_msi_table_control_condition_type_id = wixl_msi_table_control_condition_get_type_once ();
		g_once_init_leave (&wixl_msi_table_control_condition_type_id__once, wixl_msi_table_control_condition_type_id);
	}
	return wixl_msi_table_control_condition_type_id__once;
}

WixlMsiTableListBox*
wixl_msi_table_list_box_construct (GType object_type)
{
	WixlMsiTableListBox * self = NULL;
	self = (WixlMsiTableListBox*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableListBox*
wixl_msi_table_list_box_new (void)
{
	return wixl_msi_table_list_box_construct (WIXL_TYPE_MSI_TABLE_LIST_BOX);
}

static void
wixl_msi_table_list_box_class_init (WixlMsiTableListBoxClass * klass,
                                    gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_list_box_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("ListBox");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `ListBox` (`Property` CHAR(72) NOT NULL, `Order` INT NOT " \
"NULL, `Value` CHAR(64) NOT NULL, `Text` CHAR(64) LOCALIZABLE PRIMARY K" \
"EY `Property`, `Order`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `ListBox` (`Property`, `Order`, `Value`, `Text`) VALUES (?" \
", ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_list_box_instance_init (WixlMsiTableListBox * self,
                                       gpointer klass)
{
}

static GType
wixl_msi_table_list_box_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableListBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_list_box_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableListBox), 0, (GInstanceInitFunc) wixl_msi_table_list_box_instance_init, NULL };
	GType wixl_msi_table_list_box_type_id;
	wixl_msi_table_list_box_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableListBox", &g_define_type_info, 0);
	return wixl_msi_table_list_box_type_id;
}

GType
wixl_msi_table_list_box_get_type (void)
{
	static volatile gsize wixl_msi_table_list_box_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_list_box_type_id__once)) {
		GType wixl_msi_table_list_box_type_id;
		wixl_msi_table_list_box_type_id = wixl_msi_table_list_box_get_type_once ();
		g_once_init_leave (&wixl_msi_table_list_box_type_id__once, wixl_msi_table_list_box_type_id);
	}
	return wixl_msi_table_list_box_type_id__once;
}

void
wixl_msi_table_radio_button_add (WixlMsiTableRadioButton* self,
                                 const gchar* property,
                                 gint order,
                                 const gchar* value,
                                 gint x,
                                 gint y,
                                 gint width,
                                 gint height,
                                 const gchar* text,
                                 const gchar* help,
                                 GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	LibmsiRecord* _tmp9_;
	LibmsiRecord* _tmp21_;
	LibmsiRecord* _tmp22_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (property != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = libmsi_record_new ((guint) 9);
	rec = _tmp0_;
	_tmp9_ = rec;
	if (!libmsi_record_set_string (_tmp9_, (guint) 1, property)) {
		_tmp8_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_;
		_tmp10_ = rec;
		_tmp8_ = !libmsi_record_set_int (_tmp10_, (guint) 2, order);
	}
	if (_tmp8_) {
		_tmp7_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_;
		_tmp11_ = rec;
		_tmp7_ = !libmsi_record_set_string (_tmp11_, (guint) 3, value);
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_;
		_tmp12_ = rec;
		_tmp6_ = !libmsi_record_set_int (_tmp12_, (guint) 4, x);
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp13_;
		_tmp13_ = rec;
		_tmp5_ = !libmsi_record_set_int (_tmp13_, (guint) 5, y);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_;
		_tmp14_ = rec;
		_tmp4_ = !libmsi_record_set_int (_tmp14_, (guint) 6, width);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_;
		_tmp15_ = rec;
		_tmp3_ = !libmsi_record_set_int (_tmp15_, (guint) 7, height);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp16_ = FALSE;
		if (text != NULL) {
			LibmsiRecord* _tmp17_;
			_tmp17_ = rec;
			_tmp16_ = !libmsi_record_set_string (_tmp17_, (guint) 8, text);
		} else {
			_tmp16_ = FALSE;
		}
		_tmp2_ = _tmp16_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp18_ = FALSE;
		if (help != NULL) {
			LibmsiRecord* _tmp19_;
			_tmp19_ = rec;
			_tmp18_ = !libmsi_record_set_string (_tmp19_, (guint) 9, help);
		} else {
			_tmp18_ = FALSE;
		}
		_tmp1_ = _tmp18_;
	}
	if (_tmp1_) {
		GError* _tmp20_;
		_tmp20_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp20_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp21_ = rec;
	_tmp22_ = _g_object_ref0 (_tmp21_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp22_);
	_g_object_unref0 (rec);
}

WixlMsiTableRadioButton*
wixl_msi_table_radio_button_construct (GType object_type)
{
	WixlMsiTableRadioButton * self = NULL;
	self = (WixlMsiTableRadioButton*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableRadioButton*
wixl_msi_table_radio_button_new (void)
{
	return wixl_msi_table_radio_button_construct (WIXL_TYPE_MSI_TABLE_RADIO_BUTTON);
}

static void
wixl_msi_table_radio_button_class_init (WixlMsiTableRadioButtonClass * klass,
                                        gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_radio_button_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("RadioButton");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `RadioButton` (`Property` CHAR(72) NOT NULL, `Order` INT " \
"NOT NULL, `Value` CHAR(64) NOT NULL, `X` INT NOT NULL, `Y` INT NOT NUL" \
"L, `Width` INT NOT NULL, `Height` INT NOT NULL, `Text` CHAR(0) LOCALIZ" \
"ABLE, `Help` CHAR(50) LOCALIZABLE PRIMARY KEY `Property`, `Order`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `RadioButton` (`Property`, `Order`, `Value`, `X`, `Y`, `Wi" \
"dth`, `Height`, `Text`, `Help`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_radio_button_instance_init (WixlMsiTableRadioButton * self,
                                           gpointer klass)
{
}

static GType
wixl_msi_table_radio_button_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableRadioButtonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_radio_button_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableRadioButton), 0, (GInstanceInitFunc) wixl_msi_table_radio_button_instance_init, NULL };
	GType wixl_msi_table_radio_button_type_id;
	wixl_msi_table_radio_button_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableRadioButton", &g_define_type_info, 0);
	return wixl_msi_table_radio_button_type_id;
}

GType
wixl_msi_table_radio_button_get_type (void)
{
	static volatile gsize wixl_msi_table_radio_button_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_radio_button_type_id__once)) {
		GType wixl_msi_table_radio_button_type_id;
		wixl_msi_table_radio_button_type_id = wixl_msi_table_radio_button_get_type_once ();
		g_once_init_leave (&wixl_msi_table_radio_button_type_id__once, wixl_msi_table_radio_button_type_id);
	}
	return wixl_msi_table_radio_button_type_id__once;
}

void
wixl_msi_table_file_hash_add (WixlMsiTableFileHash* self,
                              const gchar* file,
                              gint hash1,
                              gint hash2,
                              gint hash3,
                              gint hash4,
                              gint* options,
                              GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_;
	LibmsiRecord* _tmp13_;
	LibmsiRecord* _tmp14_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (file != NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	if (!libmsi_record_set_string (_tmp6_, (guint) 1, file)) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp5_ = !libmsi_record_set_int (_tmp7_, (guint) 2, *options);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp4_ = !libmsi_record_set_int (_tmp8_, (guint) 3, hash1);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp3_ = !libmsi_record_set_int (_tmp9_, (guint) 4, hash2);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_;
		_tmp10_ = rec;
		_tmp2_ = !libmsi_record_set_int (_tmp10_, (guint) 5, hash3);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_;
		_tmp11_ = rec;
		_tmp1_ = !libmsi_record_set_int (_tmp11_, (guint) 6, hash4);
	}
	if (_tmp1_) {
		GError* _tmp12_;
		_tmp12_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp12_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp13_ = rec;
	_tmp14_ = _g_object_ref0 (_tmp13_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp14_);
	_g_object_unref0 (rec);
}

void
wixl_msi_table_file_hash_add_with_file (WixlMsiTableFileHash* self,
                                        const gchar* FileId,
                                        GFile* file,
                                        GError** error)
{
	gint hash1 = 0;
	gint hash2 = 0;
	gint hash3 = 0;
	gint hash4 = 0;
	gint _tmp0_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (FileId != NULL);
	g_return_if_fail (file != NULL);
	hash1 = 0;
	hash2 = 0;
	hash3 = 0;
	hash4 = 0;
	wixl_compute_md5 (file, &hash1, &hash2, &hash3, &hash4, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp0_ = 0;
	wixl_msi_table_file_hash_add (self, FileId, hash1, hash2, hash3, hash4, &_tmp0_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

WixlMsiTableFileHash*
wixl_msi_table_file_hash_construct (GType object_type)
{
	WixlMsiTableFileHash * self = NULL;
	self = (WixlMsiTableFileHash*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableFileHash*
wixl_msi_table_file_hash_new (void)
{
	return wixl_msi_table_file_hash_construct (WIXL_TYPE_MSI_TABLE_FILE_HASH);
}

static void
wixl_msi_table_file_hash_class_init (WixlMsiTableFileHashClass * klass,
                                     gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_file_hash_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("MsiFileHash");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `MsiFileHash` (`File_` CHAR(72) NOT NULL, `Options` INT N" \
"OT NULL, `HashPart1` LONG NOT NULL, `HashPart2` LONG NOT NULL, `HashPa" \
"rt3` LONG NOT NULL, `HashPart4` LONG NOT NULL PRIMARY KEY `File_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `MsiFileHash` (`File_`, `Options`, `HashPart1`, `HashPart2" \
"`, `HashPart3`, `HashPart4`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_file_hash_instance_init (WixlMsiTableFileHash * self,
                                        gpointer klass)
{
}

static GType
wixl_msi_table_file_hash_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableFileHashClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_file_hash_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableFileHash), 0, (GInstanceInitFunc) wixl_msi_table_file_hash_instance_init, NULL };
	GType wixl_msi_table_file_hash_type_id;
	wixl_msi_table_file_hash_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableFileHash", &g_define_type_info, 0);
	return wixl_msi_table_file_hash_type_id;
}

GType
wixl_msi_table_file_hash_get_type (void)
{
	static volatile gsize wixl_msi_table_file_hash_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_file_hash_type_id__once)) {
		GType wixl_msi_table_file_hash_type_id;
		wixl_msi_table_file_hash_type_id = wixl_msi_table_file_hash_get_type_once ();
		g_once_init_leave (&wixl_msi_table_file_hash_type_id__once, wixl_msi_table_file_hash_type_id);
	}
	return wixl_msi_table_file_hash_type_id__once;
}

void
wixl_msi_table_icon_add (WixlMsiTableIcon* self,
                         const gchar* id,
                         const gchar* filename,
                         GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp6_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (id != NULL);
	g_return_if_fail (filename != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, id)) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp3_;
		_tmp3_ = rec;
		_tmp1_ = !libmsi_record_load_stream (_tmp3_, (guint) 2, filename);
	}
	if (_tmp1_) {
		GError* _tmp4_;
		_tmp4_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp4_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp5_ = rec;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp6_);
	_g_object_unref0 (rec);
}

WixlMsiTableIcon*
wixl_msi_table_icon_construct (GType object_type)
{
	WixlMsiTableIcon * self = NULL;
	self = (WixlMsiTableIcon*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableIcon*
wixl_msi_table_icon_new (void)
{
	return wixl_msi_table_icon_construct (WIXL_TYPE_MSI_TABLE_ICON);
}

static void
wixl_msi_table_icon_class_init (WixlMsiTableIconClass * klass,
                                gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_icon_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Icon");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL " \
"PRIMARY KEY `Name`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Icon` (`Name`, `Data`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_icon_instance_init (WixlMsiTableIcon * self,
                                   gpointer klass)
{
}

static GType
wixl_msi_table_icon_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableIconClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_icon_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableIcon), 0, (GInstanceInitFunc) wixl_msi_table_icon_instance_init, NULL };
	GType wixl_msi_table_icon_type_id;
	wixl_msi_table_icon_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableIcon", &g_define_type_info, 0);
	return wixl_msi_table_icon_type_id;
}

GType
wixl_msi_table_icon_get_type (void)
{
	static volatile gsize wixl_msi_table_icon_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_icon_type_id__once)) {
		GType wixl_msi_table_icon_type_id;
		wixl_msi_table_icon_type_id = wixl_msi_table_icon_get_type_once ();
		g_once_init_leave (&wixl_msi_table_icon_type_id__once, wixl_msi_table_icon_type_id);
	}
	return wixl_msi_table_icon_type_id__once;
}

void
wixl_msi_table_binary_add (WixlMsiTableBinary* self,
                           const gchar* id,
                           const gchar* filename,
                           GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp6_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (id != NULL);
	g_return_if_fail (filename != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, id)) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp3_;
		_tmp3_ = rec;
		_tmp1_ = !libmsi_record_load_stream (_tmp3_, (guint) 2, filename);
	}
	if (_tmp1_) {
		GError* _tmp4_;
		_tmp4_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp4_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp5_ = rec;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp6_);
	_g_object_unref0 (rec);
}

WixlMsiTableBinary*
wixl_msi_table_binary_construct (GType object_type)
{
	WixlMsiTableBinary * self = NULL;
	self = (WixlMsiTableBinary*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableBinary*
wixl_msi_table_binary_new (void)
{
	return wixl_msi_table_binary_construct (WIXL_TYPE_MSI_TABLE_BINARY);
}

static void
wixl_msi_table_binary_class_init (WixlMsiTableBinaryClass * klass,
                                  gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_binary_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Binary");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Binary` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NUL" \
"L PRIMARY KEY `Name`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Binary` (`Name`, `Data`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_binary_instance_init (WixlMsiTableBinary * self,
                                     gpointer klass)
{
}

static GType
wixl_msi_table_binary_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableBinaryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_binary_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableBinary), 0, (GInstanceInitFunc) wixl_msi_table_binary_instance_init, NULL };
	GType wixl_msi_table_binary_type_id;
	wixl_msi_table_binary_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableBinary", &g_define_type_info, 0);
	return wixl_msi_table_binary_type_id;
}

GType
wixl_msi_table_binary_get_type (void)
{
	static volatile gsize wixl_msi_table_binary_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_binary_type_id__once)) {
		GType wixl_msi_table_binary_type_id;
		wixl_msi_table_binary_type_id = wixl_msi_table_binary_get_type_once ();
		g_once_init_leave (&wixl_msi_table_binary_type_id__once, wixl_msi_table_binary_type_id);
	}
	return wixl_msi_table_binary_type_id__once;
}

static inline gpointer
wixl_msi_table_sequence_get_instance_private (WixlMsiTableSequence* self)
{
	return G_STRUCT_MEMBER_P (self, WixlMsiTableSequence_private_offset);
}

static void
_g_free0_ (gpointer var)
{
	var = (g_free (var), NULL);
}

static void
_wixl_msi_table_sequence_action_unref0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (wixl_msi_table_sequence_action_unref (var), NULL));
}

static void
wixl_msi_table_sequence_add (WixlMsiTableSequence* self,
                             const gchar* action,
                             const gchar* condition,
                             gint sequence,
                             GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	LibmsiRecord* _tmp3_;
	LibmsiRecord* _tmp8_;
	LibmsiRecord* _tmp9_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (action != NULL);
	_tmp0_ = libmsi_record_new ((guint) 3);
	rec = _tmp0_;
	_tmp3_ = rec;
	if (!libmsi_record_set_string (_tmp3_, (guint) 1, action)) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp4_ = FALSE;
		if (condition != NULL) {
			LibmsiRecord* _tmp5_;
			_tmp5_ = rec;
			_tmp4_ = !libmsi_record_set_string (_tmp5_, (guint) 2, condition);
		} else {
			_tmp4_ = FALSE;
		}
		_tmp2_ = _tmp4_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_;
		_tmp6_ = rec;
		_tmp1_ = !libmsi_record_set_int (_tmp6_, (guint) 3, sequence);
	}
	if (_tmp1_) {
		GError* _tmp7_;
		_tmp7_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp7_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp8_ = rec;
	_tmp9_ = _g_object_ref0 (_tmp8_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp9_);
	_g_object_unref0 (rec);
}

void
wixl_msi_table_sequence_set_sequence_table_name (WixlMsiTableSequenceClass* klass,
                                                 const gchar* table)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	g_return_if_fail (table != NULL);
	_tmp0_ = g_strdup (table);
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup_printf ("CREATE TABLE `%s` (`Action` CHAR(72) NOT NULL, `Condition` CHAR(255), " \
"`Sequence` INT PRIMARY KEY `Action`)", table);
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup_printf ("INSERT INTO `%s` (`Action`, `Condition`, `Sequence`) VALUES (?, ?, ?)", table);
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static gpointer
_wixl_msi_table_sequence_action_ref0 (gpointer self)
{
	return self ? wixl_msi_table_sequence_action_ref (self) : NULL;
}

static void
wixl_msi_table_sequence_sort_topological_visit (WixlMsiTableSequence* self,
                                                WixlMsiTableSequenceAction* action,
                                                GList** sorted)
{
	WixlMsiTableSequenceAction* dep = NULL;
	GHashTableIter it = {0};
	GHashTable* _tmp0_;
	WixlMsiTableSequenceAction* _tmp5_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (action != NULL);
	if (action->visited) {
		return;
	}
	action->visited = TRUE;
	_tmp0_ = action->depends_on;
	g_hash_table_iter_init (&it, _tmp0_);
	while (TRUE) {
		gconstpointer _tmp1_ = NULL;
		gboolean _tmp2_;
		WixlMsiTableSequenceAction* _tmp3_;
		WixlMsiTableSequenceAction* _tmp4_;
		_tmp2_ = g_hash_table_iter_next (&it, (gpointer*) NULL, (gpointer*) (&_tmp1_));
		_wixl_msi_table_sequence_action_unref0 (dep);
		_tmp3_ = _wixl_msi_table_sequence_action_ref0 (_tmp1_);
		dep = _tmp3_;
		if (!_tmp2_) {
			break;
		}
		_tmp4_ = dep;
		wixl_msi_table_sequence_sort_topological_visit (self, _tmp4_, sorted);
	}
	_tmp5_ = _wixl_msi_table_sequence_action_ref0 (action);
	*sorted = g_list_append (*sorted, _tmp5_);
	_wixl_msi_table_sequence_action_unref0 (dep);
}

static gint
__lambda4_ (WixlMsiTableSequenceAction* a,
            WixlMsiTableSequenceAction* b)
{
	gint result;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	if (a->sequence == b->sequence) {
		gint a_dep = 0;
		gint b_dep = 0;
		a_dep = wixl_msi_table_sequence_action_dep_max (a);
		b_dep = wixl_msi_table_sequence_action_dep_max (b);
		result = a_dep - b_dep;
		return result;
	}
	result = a->sequence - b->sequence;
	return result;
}

static gint
___lambda4__gcompare_func (gconstpointer a,
                           gconstpointer b)
{
	gint result;
	result = __lambda4_ ((WixlMsiTableSequenceAction*) a, (WixlMsiTableSequenceAction*) b);
	return result;
}

static GList*
wixl_msi_table_sequence_sorted_actions (WixlMsiTableSequence* self)
{
	GCompareFunc cmp = NULL;
	GList* list = NULL;
	GHashTable* _tmp0_;
	GList* _tmp1_;
	GList* result;
	g_return_val_if_fail (self != NULL, NULL);
	cmp = ___lambda4__gcompare_func;
	_tmp0_ = self->priv->actions;
	_tmp1_ = g_hash_table_get_values (_tmp0_);
	list = _tmp1_;
	list = g_list_sort (list, cmp);
	result = list;
	return result;
}

static GList*
wixl_msi_table_sequence_sort_topological (WixlMsiTableSequence* self)
{
	GList* sorted = NULL;
	GList* _tmp0_;
	GList* result;
	g_return_val_if_fail (self != NULL, NULL);
	sorted = NULL;
	_tmp0_ = wixl_msi_table_sequence_sorted_actions (self);
	{
		GList* action_collection = NULL;
		GList* action_it = NULL;
		action_collection = _tmp0_;
		for (action_it = action_collection; action_it != NULL; action_it = action_it->next) {
			WixlMsiTableSequenceAction* action = NULL;
			action = (WixlMsiTableSequenceAction*) action_it->data;
			{
				WixlMsiTableSequenceAction* _tmp1_;
				WixlMsiTableSequenceAction* _tmp2_;
				_tmp1_ = action;
				if (_tmp1_->incoming_deps) {
					continue;
				}
				_tmp2_ = action;
				wixl_msi_table_sequence_sort_topological_visit (self, _tmp2_, &sorted);
			}
		}
		(action_collection == NULL) ? NULL : (action_collection = (g_list_free (action_collection), NULL));
	}
	result = sorted;
	return result;
}

static void
wixl_msi_table_sequence_add_implicit_deps (WixlMsiTableSequence* self)
{
	WixlMsiTableSequenceAction* prev = NULL;
	GList* _tmp0_;
	g_return_if_fail (self != NULL);
	prev = NULL;
	_tmp0_ = wixl_msi_table_sequence_sorted_actions (self);
	{
		GList* a_collection = NULL;
		GList* a_it = NULL;
		a_collection = _tmp0_;
		for (a_it = a_collection; a_it != NULL; a_it = a_it->next) {
			WixlMsiTableSequenceAction* a = NULL;
			a = (WixlMsiTableSequenceAction*) a_it->data;
			{
				WixlMsiTableSequenceAction* _tmp1_;
				WixlMsiTableSequenceAction* _tmp2_;
				WixlMsiTableSequenceAction* _tmp5_;
				WixlMsiTableSequenceAction* _tmp6_;
				_tmp1_ = a;
				if (_tmp1_->sequence == -999) {
					continue;
				}
				_tmp2_ = prev;
				if (_tmp2_ != NULL) {
					WixlMsiTableSequenceAction* _tmp3_;
					WixlMsiTableSequenceAction* _tmp4_;
					_tmp3_ = a;
					_tmp4_ = prev;
					wixl_msi_table_sequence_action_add_dep (_tmp3_, _tmp4_);
				}
				_tmp5_ = a;
				_tmp6_ = _wixl_msi_table_sequence_action_ref0 (_tmp5_);
				_wixl_msi_table_sequence_action_unref0 (prev);
				prev = _tmp6_;
			}
		}
		(a_collection == NULL) ? NULL : (a_collection = (g_list_free (a_collection), NULL));
	}
	_wixl_msi_table_sequence_action_unref0 (prev);
}

static inline void
_g_list_free__wixl_msi_table_sequence_action_unref0_ (GList* self)
{
	g_list_free_full (self, (GDestroyNotify) _wixl_msi_table_sequence_action_unref0_);
}

void
wixl_msi_table_sequence_add_sorted_actions (WixlMsiTableSequence* self,
                                            GError** error)
{
	GList* sorted = NULL;
	GList* _tmp0_;
	gint sequence = 0;
	GList* _tmp1_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	wixl_msi_table_sequence_add_implicit_deps (self);
	_tmp0_ = wixl_msi_table_sequence_sort_topological (self);
	sorted = _tmp0_;
	sequence = 0;
	_tmp1_ = sorted;
	{
		GList* action_collection = NULL;
		GList* action_it = NULL;
		action_collection = _tmp1_;
		for (action_it = action_collection; action_it != NULL; action_it = action_it->next) {
			WixlMsiTableSequenceAction* _tmp2_;
			WixlMsiTableSequenceAction* action = NULL;
			_tmp2_ = _wixl_msi_table_sequence_action_ref0 ((WixlMsiTableSequenceAction*) action_it->data);
			action = _tmp2_;
			{
				WixlMsiTableSequenceAction* _tmp3_;
				WixlMsiTableSequenceAction* _tmp6_;
				WixlMsiTableSequenceAction* _tmp7_;
				const gchar* _tmp8_;
				WixlMsiTableSequenceAction* _tmp9_;
				const gchar* _tmp10_;
				WixlMsiTableSequenceAction* _tmp11_;
				_tmp3_ = action;
				if (_tmp3_->sequence == -999) {
					WixlMsiTableSequenceAction* _tmp4_;
					gint _tmp5_;
					_tmp4_ = action;
					sequence = sequence + 1;
					_tmp5_ = sequence;
					_tmp4_->sequence = _tmp5_;
				}
				_tmp6_ = action;
				sequence = _tmp6_->sequence;
				_tmp7_ = action;
				_tmp8_ = _tmp7_->name;
				_tmp9_ = action;
				_tmp10_ = _tmp9_->condition;
				_tmp11_ = action;
				wixl_msi_table_sequence_add (self, _tmp8_, _tmp10_, _tmp11_->sequence, &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_wixl_msi_table_sequence_action_unref0 (action);
					(sorted == NULL) ? NULL : (sorted = (_g_list_free__wixl_msi_table_sequence_action_unref0_ (sorted), NULL));
					return;
				}
				_wixl_msi_table_sequence_action_unref0 (action);
			}
		}
	}
	(sorted == NULL) ? NULL : (sorted = (_g_list_free__wixl_msi_table_sequence_action_unref0_ (sorted), NULL));
}

WixlMsiTableSequenceAction*
wixl_msi_table_sequence_get_action (WixlMsiTableSequence* self,
                                    const gchar* name)
{
	WixlMsiTableSequenceAction* action = NULL;
	GHashTable* _tmp0_;
	gconstpointer _tmp1_;
	WixlMsiTableSequenceAction* _tmp2_;
	WixlMsiTableSequenceAction* _tmp3_;
	WixlMsiTableSequenceAction* _tmp4_;
	GHashTable* _tmp5_;
	gchar* _tmp6_;
	WixlMsiTableSequenceAction* _tmp7_;
	WixlMsiTableSequenceAction* _tmp8_;
	WixlMsiTableSequenceAction* _tmp9_;
	gchar* _tmp10_;
	WixlMSIDefaultActionInfo* _default_ = NULL;
	WixlMSIDefaultActionInfo* _tmp11_;
	WixlMSIDefaultActionInfo* _tmp12_;
	WixlMsiTableSequenceAction* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	_tmp0_ = self->priv->actions;
	_tmp1_ = g_hash_table_lookup (_tmp0_, name);
	_tmp2_ = _wixl_msi_table_sequence_action_ref0 ((WixlMsiTableSequenceAction*) _tmp1_);
	action = _tmp2_;
	_tmp3_ = action;
	if (_tmp3_ != NULL) {
		result = action;
		return result;
	}
	_tmp4_ = wixl_msi_table_sequence_action_new ();
	_wixl_msi_table_sequence_action_unref0 (action);
	action = _tmp4_;
	_tmp5_ = self->priv->actions;
	_tmp6_ = g_strdup (name);
	_tmp7_ = action;
	_tmp8_ = _wixl_msi_table_sequence_action_ref0 (_tmp7_);
	g_hash_table_insert (_tmp5_, _tmp6_, _tmp8_);
	_tmp9_ = action;
	_tmp10_ = g_strdup (name);
	_g_free0 (_tmp9_->name);
	_tmp9_->name = _tmp10_;
	_tmp11_ = wixl_msi_default_get_action_by_name (name);
	_default_ = _tmp11_;
	_tmp12_ = _default_;
	if (_tmp12_ != NULL) {
		WixlMsiTableSequenceAction* _tmp13_;
		WixlMSIDefaultActionInfo* _tmp14_;
		_tmp13_ = action;
		_tmp14_ = _default_;
		_tmp13_->sequence = (*_tmp14_).sequence;
	}
	result = action;
	_wixl_msi_default_action_info_free0 (_default_);
	return result;
}

void
wixl_msi_table_sequence_add_default_action (WixlMsiTableSequence* self,
                                            WixlMSIDefaultAction action)
{
	WixlMSIDefaultActionInfo _default_ = {0};
	WixlMSIDefaultActionInfo _tmp0_ = {0};
	WixlMSIDefaultActionInfo _tmp1_;
	WixlMsiTableSequenceAction* seq = NULL;
	GHashTable* _tmp5_;
	WixlMSIDefaultActionInfo _tmp6_;
	const gchar* _tmp7_;
	gconstpointer _tmp8_;
	WixlMsiTableSequenceAction* _tmp9_;
	WixlMsiTableSequenceAction* _tmp10_;
	WixlMsiTableSequenceAction* _tmp11_;
	GHashTable* _tmp12_;
	WixlMSIDefaultActionInfo _tmp13_;
	const gchar* _tmp14_;
	gchar* _tmp15_;
	WixlMsiTableSequenceAction* _tmp16_;
	WixlMsiTableSequenceAction* _tmp17_;
	WixlMsiTableSequenceAction* _tmp18_;
	WixlMSIDefaultActionInfo _tmp19_;
	const gchar* _tmp20_;
	gchar* _tmp21_;
	WixlMsiTableSequenceAction* _tmp22_;
	WixlMSIDefaultActionInfo _tmp23_;
	WixlMsiTableSequenceAction* _tmp24_;
	WixlMSIDefaultActionInfo _tmp25_;
	const gchar* _tmp26_;
	gchar* _tmp27_;
	g_return_if_fail (self != NULL);
	wixl_msi_default_get_action (action, &_tmp0_);
	_default_ = _tmp0_;
	_tmp1_ = _default_;
	if (!((_tmp1_.flags & WIXL_MSI_TABLE_SEQUENCE_GET_CLASS (self)->flags) == WIXL_MSI_TABLE_SEQUENCE_GET_CLASS (self)->flags)) {
		WixlMSIDefaultActionInfo _tmp2_;
		const gchar* _tmp3_;
		const gchar* _tmp4_;
		_tmp2_ = _default_;
		_tmp3_ = _tmp2_.name;
		_tmp4_ = WIXL_MSI_TABLE_GET_CLASS (self)->name;
		g_critical ("msi.vala:458: Action %s shouldn't be added in %s", _tmp3_, _tmp4_);
	}
	_tmp5_ = self->priv->actions;
	_tmp6_ = _default_;
	_tmp7_ = _tmp6_.name;
	_tmp8_ = g_hash_table_lookup (_tmp5_, _tmp7_);
	_tmp9_ = _wixl_msi_table_sequence_action_ref0 ((WixlMsiTableSequenceAction*) _tmp8_);
	seq = _tmp9_;
	_tmp10_ = seq;
	if (_tmp10_ != NULL) {
		_wixl_msi_table_sequence_action_unref0 (seq);
		wixl_msi_default_action_info_destroy (&_default_);
		return;
	}
	_tmp11_ = wixl_msi_table_sequence_action_new ();
	_wixl_msi_table_sequence_action_unref0 (seq);
	seq = _tmp11_;
	_tmp12_ = self->priv->actions;
	_tmp13_ = _default_;
	_tmp14_ = _tmp13_.name;
	_tmp15_ = g_strdup (_tmp14_);
	_tmp16_ = seq;
	_tmp17_ = _wixl_msi_table_sequence_action_ref0 (_tmp16_);
	g_hash_table_insert (_tmp12_, _tmp15_, _tmp17_);
	_tmp18_ = seq;
	_tmp19_ = _default_;
	_tmp20_ = _tmp19_.name;
	_tmp21_ = g_strdup (_tmp20_);
	_g_free0 (_tmp18_->name);
	_tmp18_->name = _tmp21_;
	_tmp22_ = seq;
	_tmp23_ = _default_;
	_tmp22_->sequence = _tmp23_.sequence;
	_tmp24_ = seq;
	_tmp25_ = _default_;
	_tmp26_ = _tmp25_.condition;
	_tmp27_ = g_strdup (_tmp26_);
	_g_free0 (_tmp24_->condition);
	_tmp24_->condition = _tmp27_;
	_wixl_msi_table_sequence_action_unref0 (seq);
	wixl_msi_default_action_info_destroy (&_default_);
}

WixlMsiTableSequence*
wixl_msi_table_sequence_construct (GType object_type)
{
	WixlMsiTableSequence * self = NULL;
	self = (WixlMsiTableSequence*) wixl_msi_table_construct (object_type);
	return self;
}

void
wixl_msi_table_sequence_action_add_dep (WixlMsiTableSequenceAction* self,
                                        WixlMsiTableSequenceAction* a)
{
	GHashTable* _tmp0_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (a != NULL);
	_tmp0_ = self->depends_on;
	wixl_hash_table_add (WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION, (GBoxedCopyFunc) wixl_msi_table_sequence_action_ref, (GDestroyNotify) wixl_msi_table_sequence_action_unref, _tmp0_, a);
	a->incoming_deps = TRUE;
}

gint
wixl_msi_table_sequence_action_dep_max (WixlMsiTableSequenceAction* self)
{
	gint ret = 0;
	GHashTableIter it = {0};
	GHashTable* _tmp0_;
	WixlMsiTableSequenceAction* dep = NULL;
	gint result;
	g_return_val_if_fail (self != NULL, 0);
	ret = -1;
	_tmp0_ = self->depends_on;
	g_hash_table_iter_init (&it, _tmp0_);
	while (TRUE) {
		gconstpointer _tmp1_ = NULL;
		gboolean _tmp2_;
		WixlMsiTableSequenceAction* _tmp3_;
		WixlMsiTableSequenceAction* _tmp4_;
		_tmp2_ = g_hash_table_iter_next (&it, (gpointer*) NULL, (gpointer*) (&_tmp1_));
		_wixl_msi_table_sequence_action_unref0 (dep);
		_tmp3_ = _wixl_msi_table_sequence_action_ref0 (_tmp1_);
		dep = _tmp3_;
		if (!_tmp2_) {
			break;
		}
		_tmp4_ = dep;
		if (_tmp4_->sequence > ret) {
			WixlMsiTableSequenceAction* _tmp5_;
			_tmp5_ = dep;
			ret = _tmp5_->sequence;
		}
	}
	result = ret;
	_wixl_msi_table_sequence_action_unref0 (dep);
	return result;
}

WixlMsiTableSequenceAction*
wixl_msi_table_sequence_action_construct (GType object_type)
{
	WixlMsiTableSequenceAction* self = NULL;
	self = (WixlMsiTableSequenceAction*) g_type_create_instance (object_type);
	return self;
}

WixlMsiTableSequenceAction*
wixl_msi_table_sequence_action_new (void)
{
	return wixl_msi_table_sequence_action_construct (WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION);
}

static void
wixl_msi_table_sequence_value_action_init (GValue* value)
{
	value->data[0].v_pointer = NULL;
}

static void
wixl_msi_table_sequence_value_action_free_value (GValue* value)
{
	if (value->data[0].v_pointer) {
		wixl_msi_table_sequence_action_unref (value->data[0].v_pointer);
	}
}

static void
wixl_msi_table_sequence_value_action_copy_value (const GValue* src_value,
                                                 GValue* dest_value)
{
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = wixl_msi_table_sequence_action_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}

static gpointer
wixl_msi_table_sequence_value_action_peek_pointer (const GValue* value)
{
	return value->data[0].v_pointer;
}

static gchar*
wixl_msi_table_sequence_value_action_collect_value (GValue* value,
                                                    guint n_collect_values,
                                                    GTypeCValue* collect_values,
                                                    guint collect_flags)
{
	if (collect_values[0].v_pointer) {
		WixlMsiTableSequenceAction * object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = wixl_msi_table_sequence_action_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}

static gchar*
wixl_msi_table_sequence_value_action_lcopy_value (const GValue* value,
                                                  guint n_collect_values,
                                                  GTypeCValue* collect_values,
                                                  guint collect_flags)
{
	WixlMsiTableSequenceAction ** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = wixl_msi_table_sequence_action_ref (value->data[0].v_pointer);
	}
	return NULL;
}

GParamSpec*
wixl_msi_table_sequence_param_spec_action (const gchar* name,
                                           const gchar* nick,
                                           const gchar* blurb,
                                           GType object_type,
                                           GParamFlags flags)
{
	WixlMsiTableSequenceParamSpecAction* spec;
	g_return_val_if_fail (g_type_is_a (object_type, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}

gpointer
wixl_msi_table_sequence_value_get_action (const GValue* value)
{
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION), NULL);
	return value->data[0].v_pointer;
}

void
wixl_msi_table_sequence_value_set_action (GValue* value,
                                          gpointer v_object)
{
	WixlMsiTableSequenceAction * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		wixl_msi_table_sequence_action_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		wixl_msi_table_sequence_action_unref (old);
	}
}

void
wixl_msi_table_sequence_value_take_action (GValue* value,
                                           gpointer v_object)
{
	WixlMsiTableSequenceAction * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		wixl_msi_table_sequence_action_unref (old);
	}
}

static void
wixl_msi_table_sequence_action_class_init (WixlMsiTableSequenceActionClass * klass,
                                           gpointer klass_data)
{
	wixl_msi_table_sequence_action_parent_class = g_type_class_peek_parent (klass);
	((WixlMsiTableSequenceActionClass *) klass)->finalize = wixl_msi_table_sequence_action_finalize;
}

static void
wixl_msi_table_sequence_action_instance_init (WixlMsiTableSequenceAction * self,
                                              gpointer klass)
{
	GHashFunc _tmp0_;
	GEqualFunc _tmp1_;
	GHashTable* _tmp2_;
	self->sequence = -999;
	self->visited = FALSE;
	self->incoming_deps = FALSE;
	_tmp0_ = g_direct_hash;
	_tmp1_ = g_direct_equal;
	_tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _wixl_msi_table_sequence_action_unref0_, NULL);
	self->depends_on = _tmp2_;
	self->ref_count = 1;
}

static void
wixl_msi_table_sequence_action_finalize (WixlMsiTableSequenceAction * obj)
{
	WixlMsiTableSequenceAction * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_MSI_TABLE_SEQUENCE_TYPE_ACTION, WixlMsiTableSequenceAction);
	g_signal_handlers_destroy (self);
	_g_free0 (self->name);
	_g_free0 (self->condition);
	_g_object_unref0 (self->action);
	_g_hash_table_unref0 (self->depends_on);
}

static GType
wixl_msi_table_sequence_action_get_type_once (void)
{
	static const GTypeValueTable g_define_type_value_table = { wixl_msi_table_sequence_value_action_init, wixl_msi_table_sequence_value_action_free_value, wixl_msi_table_sequence_value_action_copy_value, wixl_msi_table_sequence_value_action_peek_pointer, "p", wixl_msi_table_sequence_value_action_collect_value, "p", wixl_msi_table_sequence_value_action_lcopy_value };
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableSequenceActionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_sequence_action_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableSequenceAction), 0, (GInstanceInitFunc) wixl_msi_table_sequence_action_instance_init, &g_define_type_value_table };
	static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
	GType wixl_msi_table_sequence_action_type_id;
	wixl_msi_table_sequence_action_type_id = g_type_register_fundamental (g_type_fundamental_next (), "WixlMsiTableSequenceAction", &g_define_type_info, &g_define_type_fundamental_info, 0);
	return wixl_msi_table_sequence_action_type_id;
}

GType
wixl_msi_table_sequence_action_get_type (void)
{
	static volatile gsize wixl_msi_table_sequence_action_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_sequence_action_type_id__once)) {
		GType wixl_msi_table_sequence_action_type_id;
		wixl_msi_table_sequence_action_type_id = wixl_msi_table_sequence_action_get_type_once ();
		g_once_init_leave (&wixl_msi_table_sequence_action_type_id__once, wixl_msi_table_sequence_action_type_id);
	}
	return wixl_msi_table_sequence_action_type_id__once;
}

gpointer
wixl_msi_table_sequence_action_ref (gpointer instance)
{
	WixlMsiTableSequenceAction * self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}

void
wixl_msi_table_sequence_action_unref (gpointer instance)
{
	WixlMsiTableSequenceAction * self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		WIXL_MSI_TABLE_SEQUENCE_ACTION_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}

static void
wixl_msi_table_sequence_class_init (WixlMsiTableSequenceClass * klass,
                                    gpointer klass_data)
{
	wixl_msi_table_sequence_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &WixlMsiTableSequence_private_offset);
	G_OBJECT_CLASS (klass)->finalize = wixl_msi_table_sequence_finalize;
}

static void
wixl_msi_table_sequence_instance_init (WixlMsiTableSequence * self,
                                       gpointer klass)
{
	GHashFunc _tmp0_;
	GEqualFunc _tmp1_;
	GHashTable* _tmp2_;
	self->priv = wixl_msi_table_sequence_get_instance_private (self);
	_tmp0_ = g_str_hash;
	_tmp1_ = g_str_equal;
	_tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, _wixl_msi_table_sequence_action_unref0_);
	self->priv->actions = _tmp2_;
}

static void
wixl_msi_table_sequence_finalize (GObject * obj)
{
	WixlMsiTableSequence * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_TABLE_SEQUENCE, WixlMsiTableSequence);
	_g_hash_table_unref0 (self->priv->actions);
	G_OBJECT_CLASS (wixl_msi_table_sequence_parent_class)->finalize (obj);
}

static GType
wixl_msi_table_sequence_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableSequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableSequence), 0, (GInstanceInitFunc) wixl_msi_table_sequence_instance_init, NULL };
	GType wixl_msi_table_sequence_type_id;
	wixl_msi_table_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableSequence", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
	WixlMsiTableSequence_private_offset = g_type_add_instance_private (wixl_msi_table_sequence_type_id, sizeof (WixlMsiTableSequencePrivate));
	return wixl_msi_table_sequence_type_id;
}

GType
wixl_msi_table_sequence_get_type (void)
{
	static volatile gsize wixl_msi_table_sequence_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_sequence_type_id__once)) {
		GType wixl_msi_table_sequence_type_id;
		wixl_msi_table_sequence_type_id = wixl_msi_table_sequence_get_type_once ();
		g_once_init_leave (&wixl_msi_table_sequence_type_id__once, wixl_msi_table_sequence_type_id);
	}
	return wixl_msi_table_sequence_type_id__once;
}

WixlMsiTableAdminExecuteSequence*
wixl_msi_table_admin_execute_sequence_construct (GType object_type)
{
	WixlMsiTableAdminExecuteSequence * self = NULL;
	self = (WixlMsiTableAdminExecuteSequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}

WixlMsiTableAdminExecuteSequence*
wixl_msi_table_admin_execute_sequence_new (void)
{
	return wixl_msi_table_admin_execute_sequence_construct (WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE);
}

static void
wixl_msi_table_admin_execute_sequence_class_init (WixlMsiTableAdminExecuteSequenceClass * klass,
                                                  gpointer klass_data)
{
	wixl_msi_table_admin_execute_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "AdminExecuteSequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_ADMIN_EXECUTE_SEQUENCE;
}

static void
wixl_msi_table_admin_execute_sequence_instance_init (WixlMsiTableAdminExecuteSequence * self,
                                                     gpointer klass)
{
}

static GType
wixl_msi_table_admin_execute_sequence_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableAdminExecuteSequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_admin_execute_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableAdminExecuteSequence), 0, (GInstanceInitFunc) wixl_msi_table_admin_execute_sequence_instance_init, NULL };
	GType wixl_msi_table_admin_execute_sequence_type_id;
	wixl_msi_table_admin_execute_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableAdminExecuteSequence", &g_define_type_info, 0);
	return wixl_msi_table_admin_execute_sequence_type_id;
}

GType
wixl_msi_table_admin_execute_sequence_get_type (void)
{
	static volatile gsize wixl_msi_table_admin_execute_sequence_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_admin_execute_sequence_type_id__once)) {
		GType wixl_msi_table_admin_execute_sequence_type_id;
		wixl_msi_table_admin_execute_sequence_type_id = wixl_msi_table_admin_execute_sequence_get_type_once ();
		g_once_init_leave (&wixl_msi_table_admin_execute_sequence_type_id__once, wixl_msi_table_admin_execute_sequence_type_id);
	}
	return wixl_msi_table_admin_execute_sequence_type_id__once;
}

WixlMsiTableAdminUISequence*
wixl_msi_table_admin_ui_sequence_construct (GType object_type)
{
	WixlMsiTableAdminUISequence * self = NULL;
	self = (WixlMsiTableAdminUISequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}

WixlMsiTableAdminUISequence*
wixl_msi_table_admin_ui_sequence_new (void)
{
	return wixl_msi_table_admin_ui_sequence_construct (WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE);
}

static void
wixl_msi_table_admin_ui_sequence_class_init (WixlMsiTableAdminUISequenceClass * klass,
                                             gpointer klass_data)
{
	wixl_msi_table_admin_ui_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "AdminUISequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_ADMIN_UI_SEQUENCE;
}

static void
wixl_msi_table_admin_ui_sequence_instance_init (WixlMsiTableAdminUISequence * self,
                                                gpointer klass)
{
}

static GType
wixl_msi_table_admin_ui_sequence_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableAdminUISequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_admin_ui_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableAdminUISequence), 0, (GInstanceInitFunc) wixl_msi_table_admin_ui_sequence_instance_init, NULL };
	GType wixl_msi_table_admin_ui_sequence_type_id;
	wixl_msi_table_admin_ui_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableAdminUISequence", &g_define_type_info, 0);
	return wixl_msi_table_admin_ui_sequence_type_id;
}

GType
wixl_msi_table_admin_ui_sequence_get_type (void)
{
	static volatile gsize wixl_msi_table_admin_ui_sequence_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_admin_ui_sequence_type_id__once)) {
		GType wixl_msi_table_admin_ui_sequence_type_id;
		wixl_msi_table_admin_ui_sequence_type_id = wixl_msi_table_admin_ui_sequence_get_type_once ();
		g_once_init_leave (&wixl_msi_table_admin_ui_sequence_type_id__once, wixl_msi_table_admin_ui_sequence_type_id);
	}
	return wixl_msi_table_admin_ui_sequence_type_id__once;
}

WixlMsiTableAdvtExecuteSequence*
wixl_msi_table_advt_execute_sequence_construct (GType object_type)
{
	WixlMsiTableAdvtExecuteSequence * self = NULL;
	self = (WixlMsiTableAdvtExecuteSequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}

WixlMsiTableAdvtExecuteSequence*
wixl_msi_table_advt_execute_sequence_new (void)
{
	return wixl_msi_table_advt_execute_sequence_construct (WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE);
}

static void
wixl_msi_table_advt_execute_sequence_class_init (WixlMsiTableAdvtExecuteSequenceClass * klass,
                                                 gpointer klass_data)
{
	wixl_msi_table_advt_execute_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "AdvtExecuteSequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_ADVT_EXECUTE_SEQUENCE;
}

static void
wixl_msi_table_advt_execute_sequence_instance_init (WixlMsiTableAdvtExecuteSequence * self,
                                                    gpointer klass)
{
}

static GType
wixl_msi_table_advt_execute_sequence_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableAdvtExecuteSequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_advt_execute_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableAdvtExecuteSequence), 0, (GInstanceInitFunc) wixl_msi_table_advt_execute_sequence_instance_init, NULL };
	GType wixl_msi_table_advt_execute_sequence_type_id;
	wixl_msi_table_advt_execute_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableAdvtExecuteSequence", &g_define_type_info, 0);
	return wixl_msi_table_advt_execute_sequence_type_id;
}

GType
wixl_msi_table_advt_execute_sequence_get_type (void)
{
	static volatile gsize wixl_msi_table_advt_execute_sequence_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_advt_execute_sequence_type_id__once)) {
		GType wixl_msi_table_advt_execute_sequence_type_id;
		wixl_msi_table_advt_execute_sequence_type_id = wixl_msi_table_advt_execute_sequence_get_type_once ();
		g_once_init_leave (&wixl_msi_table_advt_execute_sequence_type_id__once, wixl_msi_table_advt_execute_sequence_type_id);
	}
	return wixl_msi_table_advt_execute_sequence_type_id__once;
}

WixlMsiTableInstallExecuteSequence*
wixl_msi_table_install_execute_sequence_construct (GType object_type)
{
	WixlMsiTableInstallExecuteSequence * self = NULL;
	self = (WixlMsiTableInstallExecuteSequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}

WixlMsiTableInstallExecuteSequence*
wixl_msi_table_install_execute_sequence_new (void)
{
	return wixl_msi_table_install_execute_sequence_construct (WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE);
}

static void
wixl_msi_table_install_execute_sequence_class_init (WixlMsiTableInstallExecuteSequenceClass * klass,
                                                    gpointer klass_data)
{
	wixl_msi_table_install_execute_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "InstallExecuteSequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_INSTALL_EXECUTE_SEQUENCE;
}

static void
wixl_msi_table_install_execute_sequence_instance_init (WixlMsiTableInstallExecuteSequence * self,
                                                       gpointer klass)
{
}

static GType
wixl_msi_table_install_execute_sequence_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableInstallExecuteSequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_install_execute_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableInstallExecuteSequence), 0, (GInstanceInitFunc) wixl_msi_table_install_execute_sequence_instance_init, NULL };
	GType wixl_msi_table_install_execute_sequence_type_id;
	wixl_msi_table_install_execute_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableInstallExecuteSequence", &g_define_type_info, 0);
	return wixl_msi_table_install_execute_sequence_type_id;
}

GType
wixl_msi_table_install_execute_sequence_get_type (void)
{
	static volatile gsize wixl_msi_table_install_execute_sequence_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_install_execute_sequence_type_id__once)) {
		GType wixl_msi_table_install_execute_sequence_type_id;
		wixl_msi_table_install_execute_sequence_type_id = wixl_msi_table_install_execute_sequence_get_type_once ();
		g_once_init_leave (&wixl_msi_table_install_execute_sequence_type_id__once, wixl_msi_table_install_execute_sequence_type_id);
	}
	return wixl_msi_table_install_execute_sequence_type_id__once;
}

WixlMsiTableInstallUISequence*
wixl_msi_table_install_ui_sequence_construct (GType object_type)
{
	WixlMsiTableInstallUISequence * self = NULL;
	self = (WixlMsiTableInstallUISequence*) wixl_msi_table_sequence_construct (object_type);
	return self;
}

WixlMsiTableInstallUISequence*
wixl_msi_table_install_ui_sequence_new (void)
{
	return wixl_msi_table_install_ui_sequence_construct (WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE);
}

static void
wixl_msi_table_install_ui_sequence_class_init (WixlMsiTableInstallUISequenceClass * klass,
                                               gpointer klass_data)
{
	wixl_msi_table_install_ui_sequence_parent_class = g_type_class_peek_parent (klass);
	wixl_msi_table_sequence_set_sequence_table_name (WIXL_MSI_TABLE_SEQUENCE_CLASS (klass), "InstallUISequence");
	WIXL_MSI_TABLE_SEQUENCE_CLASS (klass)->flags = WIXL_MSI_DEFAULT_ACTION_FLAGS_INSTALL_UI_SEQUENCE;
}

static void
wixl_msi_table_install_ui_sequence_instance_init (WixlMsiTableInstallUISequence * self,
                                                  gpointer klass)
{
}

static GType
wixl_msi_table_install_ui_sequence_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableInstallUISequenceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_install_ui_sequence_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableInstallUISequence), 0, (GInstanceInitFunc) wixl_msi_table_install_ui_sequence_instance_init, NULL };
	GType wixl_msi_table_install_ui_sequence_type_id;
	wixl_msi_table_install_ui_sequence_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE_SEQUENCE, "WixlMsiTableInstallUISequence", &g_define_type_info, 0);
	return wixl_msi_table_install_ui_sequence_type_id;
}

GType
wixl_msi_table_install_ui_sequence_get_type (void)
{
	static volatile gsize wixl_msi_table_install_ui_sequence_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_install_ui_sequence_type_id__once)) {
		GType wixl_msi_table_install_ui_sequence_type_id;
		wixl_msi_table_install_ui_sequence_type_id = wixl_msi_table_install_ui_sequence_get_type_once ();
		g_once_init_leave (&wixl_msi_table_install_ui_sequence_type_id__once, wixl_msi_table_install_ui_sequence_type_id);
	}
	return wixl_msi_table_install_ui_sequence_type_id__once;
}

WixlMsiTableError*
wixl_msi_table_error_construct (GType object_type)
{
	WixlMsiTableError * self = NULL;
	self = (WixlMsiTableError*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableError*
wixl_msi_table_error_new (void)
{
	return wixl_msi_table_error_construct (WIXL_TYPE_MSI_TABLE_ERROR);
}

static void
wixl_msi_table_error_class_init (WixlMsiTableErrorClass * klass,
                                 gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	wixl_msi_table_error_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Error");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Error` (`Error` INT NOT NULL, `Message` CHAR(0) LOCALIZA" \
"BLE PRIMARY KEY `Error`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
}

static void
wixl_msi_table_error_instance_init (WixlMsiTableError * self,
                                    gpointer klass)
{
}

static GType
wixl_msi_table_error_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableErrorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_error_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableError), 0, (GInstanceInitFunc) wixl_msi_table_error_instance_init, NULL };
	GType wixl_msi_table_error_type_id;
	wixl_msi_table_error_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableError", &g_define_type_info, 0);
	return wixl_msi_table_error_type_id;
}

GType
wixl_msi_table_error_get_type (void)
{
	static volatile gsize wixl_msi_table_error_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_error_type_id__once)) {
		GType wixl_msi_table_error_type_id;
		wixl_msi_table_error_type_id = wixl_msi_table_error_get_type_once ();
		g_once_init_leave (&wixl_msi_table_error_type_id__once, wixl_msi_table_error_type_id);
	}
	return wixl_msi_table_error_type_id__once;
}

LibmsiRecord*
wixl_msi_table_file_add (WixlMsiTableFile* self,
                         const gchar* File,
                         const gchar* Component,
                         const gchar* FileName,
                         gint FileSize,
                         gint Attributes,
                         const gchar* Version,
                         gint Sequence,
                         GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	LibmsiRecord* _tmp7_;
	LibmsiRecord* _tmp16_;
	LibmsiRecord* _tmp17_;
	GError* _inner_error0_ = NULL;
	LibmsiRecord* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (File != NULL, NULL);
	g_return_val_if_fail (Component != NULL, NULL);
	g_return_val_if_fail (FileName != NULL, NULL);
	_tmp0_ = libmsi_record_new ((guint) 7);
	rec = _tmp0_;
	_tmp7_ = rec;
	if (!libmsi_record_set_string (_tmp7_, (guint) 1, File)) {
		_tmp6_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp6_ = !libmsi_record_set_string (_tmp8_, (guint) 2, Component);
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp5_ = !libmsi_record_set_string (_tmp9_, (guint) 3, FileName);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_;
		_tmp10_ = rec;
		_tmp4_ = !libmsi_record_set_int (_tmp10_, (guint) 4, FileSize);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		gboolean _tmp11_ = FALSE;
		if (Version != NULL) {
			LibmsiRecord* _tmp12_;
			_tmp12_ = rec;
			_tmp11_ = !libmsi_record_set_string (_tmp12_, (guint) 5, Version);
		} else {
			_tmp11_ = FALSE;
		}
		_tmp3_ = _tmp11_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp13_;
		_tmp13_ = rec;
		_tmp2_ = !libmsi_record_set_int (_tmp13_, (guint) 6, Attributes);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_;
		_tmp14_ = rec;
		_tmp1_ = !libmsi_record_set_int (_tmp14_, (guint) 7, Sequence);
	}
	if (_tmp1_) {
		GError* _tmp15_;
		_tmp15_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp15_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return NULL;
	}
	_tmp16_ = rec;
	_tmp17_ = _g_object_ref0 (_tmp16_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp17_);
	result = rec;
	return result;
}

gboolean
wixl_msi_table_file_set_sequence (LibmsiRecord* rec,
                                  gint Sequence)
{
	gboolean result;
	g_return_val_if_fail (rec != NULL, FALSE);
	result = libmsi_record_set_int (rec, (guint) 7, Sequence);
	return result;
}

WixlMsiTableFile*
wixl_msi_table_file_construct (GType object_type)
{
	WixlMsiTableFile * self = NULL;
	self = (WixlMsiTableFile*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableFile*
wixl_msi_table_file_new (void)
{
	return wixl_msi_table_file_construct (WIXL_TYPE_MSI_TABLE_FILE);
}

static void
wixl_msi_table_file_class_init (WixlMsiTableFileClass * klass,
                                gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_file_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("File");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `File` (`File` CHAR(72) NOT NULL, `Component_` CHAR(72) N" \
"OT NULL, `FileName` CHAR(255) NOT NULL LOCALIZABLE, `FileSize` LONG NO" \
"T NULL, `Version` CHAR(72), `Language` CHAR(20), `Attributes` INT, `Se" \
"quence` LONG NOT NULL PRIMARY KEY `File`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `File` (`File`, `Component_`, `FileName`, `FileSize`, `Ver" \
"sion`, `Attributes`, `Sequence`) VALUES (?, ?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_file_instance_init (WixlMsiTableFile * self,
                                   gpointer klass)
{
}

static GType
wixl_msi_table_file_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableFileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_file_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableFile), 0, (GInstanceInitFunc) wixl_msi_table_file_instance_init, NULL };
	GType wixl_msi_table_file_type_id;
	wixl_msi_table_file_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableFile", &g_define_type_info, 0);
	return wixl_msi_table_file_type_id;
}

GType
wixl_msi_table_file_get_type (void)
{
	static volatile gsize wixl_msi_table_file_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_file_type_id__once)) {
		GType wixl_msi_table_file_type_id;
		wixl_msi_table_file_type_id = wixl_msi_table_file_get_type_once ();
		g_once_init_leave (&wixl_msi_table_file_type_id__once, wixl_msi_table_file_type_id);
	}
	return wixl_msi_table_file_type_id__once;
}

gboolean
wixl_msi_table_media_set_last_sequence (WixlMsiTableMedia* self,
                                        LibmsiRecord* rec,
                                        gint last_sequence)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (rec != NULL, FALSE);
	result = libmsi_record_set_int (rec, (guint) 2, last_sequence);
	return result;
}

LibmsiRecord*
wixl_msi_table_media_add (WixlMsiTableMedia* self,
                          const gchar* DiskId,
                          const gchar* DiskPrompt,
                          const gchar* Cabinet,
                          GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_;
	LibmsiRecord* _tmp10_;
	LibmsiRecord* _tmp11_;
	GError* _inner_error0_ = NULL;
	LibmsiRecord* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (DiskId != NULL, NULL);
	g_return_val_if_fail (Cabinet != NULL, NULL);
	_tmp0_ = libmsi_record_new ((guint) 4);
	rec = _tmp0_;
	_tmp4_ = rec;
	if (!libmsi_record_set_int (_tmp4_, (guint) 1, atoi (DiskId))) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_;
		_tmp5_ = rec;
		_tmp3_ = !libmsi_record_set_int (_tmp5_, (guint) 2, 0);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp6_ = FALSE;
		if (DiskPrompt != NULL) {
			LibmsiRecord* _tmp7_;
			_tmp7_ = rec;
			_tmp6_ = !libmsi_record_set_string (_tmp7_, (guint) 3, DiskPrompt);
		} else {
			_tmp6_ = FALSE;
		}
		_tmp2_ = _tmp6_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp8_, (guint) 4, Cabinet);
	}
	if (_tmp1_) {
		GError* _tmp9_;
		_tmp9_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp9_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return NULL;
	}
	_tmp10_ = rec;
	_tmp11_ = _g_object_ref0 (_tmp10_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp11_);
	result = rec;
	return result;
}

WixlMsiTableMedia*
wixl_msi_table_media_construct (GType object_type)
{
	WixlMsiTableMedia * self = NULL;
	self = (WixlMsiTableMedia*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableMedia*
wixl_msi_table_media_new (void)
{
	return wixl_msi_table_media_construct (WIXL_TYPE_MSI_TABLE_MEDIA);
}

static void
wixl_msi_table_media_class_init (WixlMsiTableMediaClass * klass,
                                 gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_media_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Media");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Media` (`DiskId` INT NOT NULL, `LastSequence` LONG NOT N" \
"ULL, `DiskPrompt` CHAR(64) LOCALIZABLE, `Cabinet` CHAR(255), `VolumeLa" \
"bel` CHAR(32), `Source` CHAR(72) PRIMARY KEY `DiskId`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Media` (`DiskId`, `LastSequence`, `DiskPrompt`, `Cabinet`" \
") VALUES (?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_media_instance_init (WixlMsiTableMedia * self,
                                    gpointer klass)
{
}

static GType
wixl_msi_table_media_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableMediaClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_media_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableMedia), 0, (GInstanceInitFunc) wixl_msi_table_media_instance_init, NULL };
	GType wixl_msi_table_media_type_id;
	wixl_msi_table_media_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableMedia", &g_define_type_info, 0);
	return wixl_msi_table_media_type_id;
}

GType
wixl_msi_table_media_get_type (void)
{
	static volatile gsize wixl_msi_table_media_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_media_type_id__once)) {
		GType wixl_msi_table_media_type_id;
		wixl_msi_table_media_type_id = wixl_msi_table_media_get_type_once ();
		g_once_init_leave (&wixl_msi_table_media_type_id__once, wixl_msi_table_media_type_id);
	}
	return wixl_msi_table_media_type_id__once;
}

void
wixl_msi_table_upgrade_add (WixlMsiTableUpgrade* self,
                            const gchar* UpgradeCode,
                            const gchar* VersionMin,
                            const gchar* VersionMax,
                            gint Attributes,
                            const gchar* ActionProperty,
                            GError** error)
{
	gboolean _tmp0_ = FALSE;
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp2_;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	LibmsiRecord* _tmp7_;
	LibmsiRecord* _tmp15_;
	LibmsiRecord* _tmp16_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (UpgradeCode != NULL);
	g_return_if_fail (ActionProperty != NULL);
	if (VersionMin == NULL) {
		_tmp0_ = VersionMax == NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		GError* _tmp1_;
		_tmp1_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "VersionMin and VersionMax must not both be null");
		_inner_error0_ = _tmp1_;
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp2_ = libmsi_record_new ((guint) 5);
	rec = _tmp2_;
	_tmp7_ = rec;
	if (!libmsi_record_set_string (_tmp7_, (guint) 1, UpgradeCode)) {
		_tmp6_ = TRUE;
	} else {
		gboolean _tmp8_ = FALSE;
		if (VersionMin != NULL) {
			LibmsiRecord* _tmp9_;
			_tmp9_ = rec;
			_tmp8_ = !libmsi_record_set_string (_tmp9_, (guint) 2, VersionMin);
		} else {
			_tmp8_ = FALSE;
		}
		_tmp6_ = _tmp8_;
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		gboolean _tmp10_ = FALSE;
		if (VersionMax != NULL) {
			LibmsiRecord* _tmp11_;
			_tmp11_ = rec;
			_tmp10_ = !libmsi_record_set_string (_tmp11_, (guint) 3, VersionMax);
		} else {
			_tmp10_ = FALSE;
		}
		_tmp5_ = _tmp10_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_;
		_tmp12_ = rec;
		_tmp4_ = !libmsi_record_set_int (_tmp12_, (guint) 4, Attributes);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp13_;
		_tmp13_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp13_, (guint) 5, ActionProperty);
	}
	if (_tmp3_) {
		GError* _tmp14_;
		_tmp14_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp14_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp15_ = rec;
	_tmp16_ = _g_object_ref0 (_tmp15_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp16_);
	_g_object_unref0 (rec);
}

WixlMsiTableUpgrade*
wixl_msi_table_upgrade_construct (GType object_type)
{
	WixlMsiTableUpgrade * self = NULL;
	self = (WixlMsiTableUpgrade*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableUpgrade*
wixl_msi_table_upgrade_new (void)
{
	return wixl_msi_table_upgrade_construct (WIXL_TYPE_MSI_TABLE_UPGRADE);
}

static void
wixl_msi_table_upgrade_class_init (WixlMsiTableUpgradeClass * klass,
                                   gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_upgrade_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Upgrade");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Upgrade` (`UpgradeCode` CHAR(38) NOT NULL, `VersionMin` " \
"CHAR(20), `VersionMax` CHAR(20), `Language` CHAR(255), `Attributes` LO" \
"NG NOT NULL, `Remove` CHAR(255), `ActionProperty` CHAR(72) NOT NULL PR" \
"IMARY KEY `UpgradeCode`, `VersionMin`, `VersionMax`, `Language`, `Attr" \
"ibutes`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Upgrade` (`UpgradeCode`, `VersionMin`, `VersionMax`, `Att" \
"ributes`, `ActionProperty`) VALUES (?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_upgrade_instance_init (WixlMsiTableUpgrade * self,
                                      gpointer klass)
{
}

static GType
wixl_msi_table_upgrade_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableUpgradeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_upgrade_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableUpgrade), 0, (GInstanceInitFunc) wixl_msi_table_upgrade_instance_init, NULL };
	GType wixl_msi_table_upgrade_type_id;
	wixl_msi_table_upgrade_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableUpgrade", &g_define_type_info, 0);
	return wixl_msi_table_upgrade_type_id;
}

GType
wixl_msi_table_upgrade_get_type (void)
{
	static volatile gsize wixl_msi_table_upgrade_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_upgrade_type_id__once)) {
		GType wixl_msi_table_upgrade_type_id;
		wixl_msi_table_upgrade_type_id = wixl_msi_table_upgrade_get_type_once ();
		g_once_init_leave (&wixl_msi_table_upgrade_type_id__once, wixl_msi_table_upgrade_type_id);
	}
	return wixl_msi_table_upgrade_type_id__once;
}

void
wixl_msi_table_launch_condition_add (WixlMsiTableLaunchCondition* self,
                                     const gchar* condition,
                                     const gchar* description,
                                     GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp6_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (condition != NULL);
	g_return_if_fail (description != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, condition)) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp3_;
		_tmp3_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp3_, (guint) 2, description);
	}
	if (_tmp1_) {
		GError* _tmp4_;
		_tmp4_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp4_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp5_ = rec;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp6_);
	_g_object_unref0 (rec);
}

WixlMsiTableLaunchCondition*
wixl_msi_table_launch_condition_construct (GType object_type)
{
	WixlMsiTableLaunchCondition * self = NULL;
	self = (WixlMsiTableLaunchCondition*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableLaunchCondition*
wixl_msi_table_launch_condition_new (void)
{
	return wixl_msi_table_launch_condition_construct (WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION);
}

static void
wixl_msi_table_launch_condition_class_init (WixlMsiTableLaunchConditionClass * klass,
                                            gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_launch_condition_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("LaunchCondition");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `LaunchCondition` (`Condition` CHAR(255) NOT NULL, `Descr" \
"iption` CHAR(255) NOT NULL LOCALIZABLE PRIMARY KEY `Condition`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `LaunchCondition` (`Condition`, `Description`) VALUES (?, " \
"?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_launch_condition_instance_init (WixlMsiTableLaunchCondition * self,
                                               gpointer klass)
{
}

static GType
wixl_msi_table_launch_condition_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableLaunchConditionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_launch_condition_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableLaunchCondition), 0, (GInstanceInitFunc) wixl_msi_table_launch_condition_instance_init, NULL };
	GType wixl_msi_table_launch_condition_type_id;
	wixl_msi_table_launch_condition_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableLaunchCondition", &g_define_type_info, 0);
	return wixl_msi_table_launch_condition_type_id;
}

GType
wixl_msi_table_launch_condition_get_type (void)
{
	static volatile gsize wixl_msi_table_launch_condition_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_launch_condition_type_id__once)) {
		GType wixl_msi_table_launch_condition_type_id;
		wixl_msi_table_launch_condition_type_id = wixl_msi_table_launch_condition_get_type_once ();
		g_once_init_leave (&wixl_msi_table_launch_condition_type_id__once, wixl_msi_table_launch_condition_type_id);
	}
	return wixl_msi_table_launch_condition_type_id__once;
}

void
wixl_msi_table_property_add (WixlMsiTableProperty* self,
                             const gchar* prop,
                             const gchar* value,
                             GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp6_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (prop != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, prop)) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp3_;
		_tmp3_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp3_, (guint) 2, value);
	}
	if (_tmp1_) {
		GError* _tmp4_;
		_tmp4_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp4_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp5_ = rec;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp6_);
	_g_object_unref0 (rec);
}

WixlMsiTableProperty*
wixl_msi_table_property_construct (GType object_type)
{
	WixlMsiTableProperty * self = NULL;
	self = (WixlMsiTableProperty*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableProperty*
wixl_msi_table_property_new (void)
{
	return wixl_msi_table_property_construct (WIXL_TYPE_MSI_TABLE_PROPERTY);
}

static void
wixl_msi_table_property_class_init (WixlMsiTablePropertyClass * klass,
                                    gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_property_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Property");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Property` (`Property` CHAR(72) NOT NULL, `Value` CHAR(0)" \
" NOT NULL LOCALIZABLE PRIMARY KEY `Property`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Property` (`Property`, `Value`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_property_instance_init (WixlMsiTableProperty * self,
                                       gpointer klass)
{
}

static GType
wixl_msi_table_property_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTablePropertyClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_property_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableProperty), 0, (GInstanceInitFunc) wixl_msi_table_property_instance_init, NULL };
	GType wixl_msi_table_property_type_id;
	wixl_msi_table_property_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableProperty", &g_define_type_info, 0);
	return wixl_msi_table_property_type_id;
}

GType
wixl_msi_table_property_get_type (void)
{
	static volatile gsize wixl_msi_table_property_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_property_type_id__once)) {
		GType wixl_msi_table_property_type_id;
		wixl_msi_table_property_type_id = wixl_msi_table_property_get_type_once ();
		g_once_init_leave (&wixl_msi_table_property_type_id__once, wixl_msi_table_property_type_id);
	}
	return wixl_msi_table_property_type_id__once;
}

void
wixl_msi_table_directory_add (WixlMsiTableDirectory* self,
                              const gchar* Directory,
                              const gchar* Parent,
                              const gchar* DefaultDir,
                              GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	LibmsiRecord* _tmp3_;
	LibmsiRecord* _tmp7_;
	LibmsiRecord* _tmp8_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Directory != NULL);
	g_return_if_fail (DefaultDir != NULL);
	_tmp0_ = libmsi_record_new ((guint) 3);
	rec = _tmp0_;
	_tmp3_ = rec;
	if (!libmsi_record_set_string (_tmp3_, (guint) 1, Directory)) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp4_;
		_tmp4_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp4_, (guint) 2, Parent);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_;
		_tmp5_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp5_, (guint) 3, DefaultDir);
	}
	if (_tmp1_) {
		GError* _tmp6_;
		_tmp6_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp6_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp7_ = rec;
	_tmp8_ = _g_object_ref0 (_tmp7_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp8_);
	_g_object_unref0 (rec);
}

WixlMsiTableDirectory*
wixl_msi_table_directory_construct (GType object_type)
{
	WixlMsiTableDirectory * self = NULL;
	self = (WixlMsiTableDirectory*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableDirectory*
wixl_msi_table_directory_new (void)
{
	return wixl_msi_table_directory_construct (WIXL_TYPE_MSI_TABLE_DIRECTORY);
}

static void
wixl_msi_table_directory_class_init (WixlMsiTableDirectoryClass * klass,
                                     gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_directory_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Directory");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Directory` (`Directory` CHAR(72) NOT NULL, `Directory_Pa" \
"rent` CHAR(72), `DefaultDir` CHAR(255) NOT NULL LOCALIZABLE PRIMARY KE" \
"Y `Directory`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Directory` (`Directory`, `Directory_Parent`, `DefaultDir`" \
") VALUES (?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_directory_instance_init (WixlMsiTableDirectory * self,
                                        gpointer klass)
{
}

static GType
wixl_msi_table_directory_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableDirectoryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_directory_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableDirectory), 0, (GInstanceInitFunc) wixl_msi_table_directory_instance_init, NULL };
	GType wixl_msi_table_directory_type_id;
	wixl_msi_table_directory_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableDirectory", &g_define_type_info, 0);
	return wixl_msi_table_directory_type_id;
}

GType
wixl_msi_table_directory_get_type (void)
{
	static volatile gsize wixl_msi_table_directory_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_directory_type_id__once)) {
		GType wixl_msi_table_directory_type_id;
		wixl_msi_table_directory_type_id = wixl_msi_table_directory_get_type_once ();
		g_once_init_leave (&wixl_msi_table_directory_type_id__once, wixl_msi_table_directory_type_id);
	}
	return wixl_msi_table_directory_type_id__once;
}

void
wixl_msi_table_component_add (WixlMsiTableComponent* self,
                              const gchar* Component,
                              const gchar* ComponentId,
                              const gchar* Directory,
                              gint Attributes,
                              const gchar* KeyPath,
                              const gchar* Condition,
                              GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_;
	LibmsiRecord* _tmp15_;
	LibmsiRecord* _tmp16_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Component != NULL);
	g_return_if_fail (Directory != NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	if (!libmsi_record_set_string (_tmp6_, (guint) 1, Component)) {
		_tmp5_ = TRUE;
	} else {
		gboolean _tmp7_ = FALSE;
		if (ComponentId != NULL) {
			LibmsiRecord* _tmp8_;
			_tmp8_ = rec;
			_tmp7_ = !libmsi_record_set_string (_tmp8_, (guint) 2, ComponentId);
		} else {
			_tmp7_ = FALSE;
		}
		_tmp5_ = _tmp7_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp4_ = !libmsi_record_set_string (_tmp9_, (guint) 3, Directory);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_;
		_tmp10_ = rec;
		_tmp3_ = !libmsi_record_set_int (_tmp10_, (guint) 4, Attributes);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_;
		_tmp11_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp11_, (guint) 5, KeyPath);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp12_ = FALSE;
		if (Condition != NULL) {
			LibmsiRecord* _tmp13_;
			_tmp13_ = rec;
			_tmp12_ = !libmsi_record_set_string (_tmp13_, (guint) 6, Condition);
		} else {
			_tmp12_ = FALSE;
		}
		_tmp1_ = _tmp12_;
	}
	if (_tmp1_) {
		GError* _tmp14_;
		_tmp14_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp14_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp15_ = rec;
	_tmp16_ = _g_object_ref0 (_tmp15_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp16_);
	_g_object_unref0 (rec);
}

WixlMsiTableComponent*
wixl_msi_table_component_construct (GType object_type)
{
	WixlMsiTableComponent * self = NULL;
	self = (WixlMsiTableComponent*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableComponent*
wixl_msi_table_component_new (void)
{
	return wixl_msi_table_component_construct (WIXL_TYPE_MSI_TABLE_COMPONENT);
}

static void
wixl_msi_table_component_class_init (WixlMsiTableComponentClass * klass,
                                     gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_component_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Component");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Component` (`Component` CHAR(72) NOT NULL, `ComponentId`" \
" CHAR(38), `Directory_` CHAR(72) NOT NULL, `Attributes` INT NOT NULL, " \
"`Condition` CHAR(255), `KeyPath` CHAR(72) PRIMARY KEY `Component`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Component` (`Component`, `ComponentId`, `Directory_`, `At" \
"tributes`, `KeyPath`, `Condition`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_component_instance_init (WixlMsiTableComponent * self,
                                        gpointer klass)
{
}

static GType
wixl_msi_table_component_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableComponentClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_component_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableComponent), 0, (GInstanceInitFunc) wixl_msi_table_component_instance_init, NULL };
	GType wixl_msi_table_component_type_id;
	wixl_msi_table_component_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableComponent", &g_define_type_info, 0);
	return wixl_msi_table_component_type_id;
}

GType
wixl_msi_table_component_get_type (void)
{
	static volatile gsize wixl_msi_table_component_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_component_type_id__once)) {
		GType wixl_msi_table_component_type_id;
		wixl_msi_table_component_type_id = wixl_msi_table_component_get_type_once ();
		g_once_init_leave (&wixl_msi_table_component_type_id__once, wixl_msi_table_component_type_id);
	}
	return wixl_msi_table_component_type_id__once;
}

void
wixl_msi_table_feature_components_add (WixlMsiTableFeatureComponents* self,
                                       const gchar* Feature,
                                       const gchar* Component,
                                       GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp6_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Feature != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, Feature)) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp3_;
		_tmp3_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp3_, (guint) 2, Component);
	}
	if (_tmp1_) {
		GError* _tmp4_;
		_tmp4_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp4_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp5_ = rec;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp6_);
	_g_object_unref0 (rec);
}

WixlMsiTableFeatureComponents*
wixl_msi_table_feature_components_construct (GType object_type)
{
	WixlMsiTableFeatureComponents * self = NULL;
	self = (WixlMsiTableFeatureComponents*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableFeatureComponents*
wixl_msi_table_feature_components_new (void)
{
	return wixl_msi_table_feature_components_construct (WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS);
}

static void
wixl_msi_table_feature_components_class_init (WixlMsiTableFeatureComponentsClass * klass,
                                              gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_feature_components_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("FeatureComponents");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `FeatureComponents` (`Feature_` CHAR(38) NOT NULL, `Compo" \
"nent_` CHAR(72) NOT NULL PRIMARY KEY `Feature_`, `Component_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `FeatureComponents` (`Feature_`, `Component_`) VALUES (?, " \
"?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_feature_components_instance_init (WixlMsiTableFeatureComponents * self,
                                                 gpointer klass)
{
}

static GType
wixl_msi_table_feature_components_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableFeatureComponentsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_feature_components_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableFeatureComponents), 0, (GInstanceInitFunc) wixl_msi_table_feature_components_instance_init, NULL };
	GType wixl_msi_table_feature_components_type_id;
	wixl_msi_table_feature_components_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableFeatureComponents", &g_define_type_info, 0);
	return wixl_msi_table_feature_components_type_id;
}

GType
wixl_msi_table_feature_components_get_type (void)
{
	static volatile gsize wixl_msi_table_feature_components_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_feature_components_type_id__once)) {
		GType wixl_msi_table_feature_components_type_id;
		wixl_msi_table_feature_components_type_id = wixl_msi_table_feature_components_get_type_once ();
		g_once_init_leave (&wixl_msi_table_feature_components_type_id__once, wixl_msi_table_feature_components_type_id);
	}
	return wixl_msi_table_feature_components_type_id__once;
}

void
wixl_msi_table_condition_add (WixlMsiTableCondition* self,
                              const gchar* Feature,
                              gint Level,
                              const gchar* Condition,
                              GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	LibmsiRecord* _tmp3_;
	LibmsiRecord* _tmp8_;
	LibmsiRecord* _tmp9_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Feature != NULL);
	_tmp0_ = libmsi_record_new ((guint) 3);
	rec = _tmp0_;
	_tmp3_ = rec;
	if (!libmsi_record_set_string (_tmp3_, (guint) 1, Feature)) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp4_;
		_tmp4_ = rec;
		_tmp2_ = !libmsi_record_set_int (_tmp4_, (guint) 2, Level);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp5_ = FALSE;
		if (Condition != NULL) {
			LibmsiRecord* _tmp6_;
			_tmp6_ = rec;
			_tmp5_ = !libmsi_record_set_string (_tmp6_, (guint) 3, Condition);
		} else {
			_tmp5_ = FALSE;
		}
		_tmp1_ = _tmp5_;
	}
	if (_tmp1_) {
		GError* _tmp7_;
		_tmp7_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp7_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp8_ = rec;
	_tmp9_ = _g_object_ref0 (_tmp8_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp9_);
	_g_object_unref0 (rec);
}

WixlMsiTableCondition*
wixl_msi_table_condition_construct (GType object_type)
{
	WixlMsiTableCondition * self = NULL;
	self = (WixlMsiTableCondition*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableCondition*
wixl_msi_table_condition_new (void)
{
	return wixl_msi_table_condition_construct (WIXL_TYPE_MSI_TABLE_CONDITION);
}

static void
wixl_msi_table_condition_class_init (WixlMsiTableConditionClass * klass,
                                     gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_condition_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Condition");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Condition` (`Feature_` CHAR(38) NOT NULL, `Level` INT NO" \
"T NULL, `Condition` CHAR(255) PRIMARY KEY `Feature_`, `Level`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Condition` (`Feature_`, `Level`, `Condition`) VALUES (?, " \
"?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_condition_instance_init (WixlMsiTableCondition * self,
                                        gpointer klass)
{
}

static GType
wixl_msi_table_condition_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableConditionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_condition_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableCondition), 0, (GInstanceInitFunc) wixl_msi_table_condition_instance_init, NULL };
	GType wixl_msi_table_condition_type_id;
	wixl_msi_table_condition_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableCondition", &g_define_type_info, 0);
	return wixl_msi_table_condition_type_id;
}

GType
wixl_msi_table_condition_get_type (void)
{
	static volatile gsize wixl_msi_table_condition_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_condition_type_id__once)) {
		GType wixl_msi_table_condition_type_id;
		wixl_msi_table_condition_type_id = wixl_msi_table_condition_get_type_once ();
		g_once_init_leave (&wixl_msi_table_condition_type_id__once, wixl_msi_table_condition_type_id);
	}
	return wixl_msi_table_condition_type_id__once;
}

void
wixl_msi_table_registry_add (WixlMsiTableRegistry* self,
                             const gchar* Registry,
                             gint Root,
                             const gchar* Key,
                             const gchar* Component,
                             const gchar* Name,
                             const gchar* Value,
                             GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_;
	LibmsiRecord* _tmp15_;
	LibmsiRecord* _tmp16_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Registry != NULL);
	g_return_if_fail (Key != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	if (!libmsi_record_set_string (_tmp6_, (guint) 1, Registry)) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp5_ = !libmsi_record_set_int (_tmp7_, (guint) 2, Root);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp4_ = !libmsi_record_set_string (_tmp8_, (guint) 3, Key);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp9_, (guint) 4, Component);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp10_ = FALSE;
		if (Name != NULL) {
			LibmsiRecord* _tmp11_;
			_tmp11_ = rec;
			_tmp10_ = !libmsi_record_set_string (_tmp11_, (guint) 5, Name);
		} else {
			_tmp10_ = FALSE;
		}
		_tmp2_ = _tmp10_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp12_ = FALSE;
		if (Value != NULL) {
			LibmsiRecord* _tmp13_;
			_tmp13_ = rec;
			_tmp12_ = !libmsi_record_set_string (_tmp13_, (guint) 6, Value);
		} else {
			_tmp12_ = FALSE;
		}
		_tmp1_ = _tmp12_;
	}
	if (_tmp1_) {
		GError* _tmp14_;
		_tmp14_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp14_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp15_ = rec;
	_tmp16_ = _g_object_ref0 (_tmp15_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp16_);
	_g_object_unref0 (rec);
}

WixlMsiTableRegistry*
wixl_msi_table_registry_construct (GType object_type)
{
	WixlMsiTableRegistry * self = NULL;
	self = (WixlMsiTableRegistry*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableRegistry*
wixl_msi_table_registry_new (void)
{
	return wixl_msi_table_registry_construct (WIXL_TYPE_MSI_TABLE_REGISTRY);
}

static void
wixl_msi_table_registry_class_init (WixlMsiTableRegistryClass * klass,
                                    gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_registry_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Registry");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Registry` (`Registry` CHAR(72) NOT NULL, `Root` INT NOT " \
"NULL, `Key` CHAR(255) NOT NULL LOCALIZABLE, `Name` CHAR(255) LOCALIZAB" \
"LE, `Value` CHAR(0) LOCALIZABLE, `Component_` CHAR(72) NOT NULL PRIMAR" \
"Y KEY `Registry`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Registry` (`Registry`, `Root`, `Key`, `Component_`, `Name" \
"`, `Value`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_registry_instance_init (WixlMsiTableRegistry * self,
                                       gpointer klass)
{
}

static GType
wixl_msi_table_registry_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableRegistryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_registry_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableRegistry), 0, (GInstanceInitFunc) wixl_msi_table_registry_instance_init, NULL };
	GType wixl_msi_table_registry_type_id;
	wixl_msi_table_registry_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableRegistry", &g_define_type_info, 0);
	return wixl_msi_table_registry_type_id;
}

GType
wixl_msi_table_registry_get_type (void)
{
	static volatile gsize wixl_msi_table_registry_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_registry_type_id__once)) {
		GType wixl_msi_table_registry_type_id;
		wixl_msi_table_registry_type_id = wixl_msi_table_registry_get_type_once ();
		g_once_init_leave (&wixl_msi_table_registry_type_id__once, wixl_msi_table_registry_type_id);
	}
	return wixl_msi_table_registry_type_id__once;
}

LibmsiRecord*
wixl_msi_table_shortcut_add (WixlMsiTableShortcut* self,
                             const gchar* Shortcut,
                             const gchar* Directory,
                             const gchar* Name,
                             const gchar* Component,
                             GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_;
	LibmsiRecord* _tmp9_;
	LibmsiRecord* _tmp10_;
	GError* _inner_error0_ = NULL;
	LibmsiRecord* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (Shortcut != NULL, NULL);
	g_return_val_if_fail (Directory != NULL, NULL);
	g_return_val_if_fail (Name != NULL, NULL);
	g_return_val_if_fail (Component != NULL, NULL);
	_tmp0_ = libmsi_record_new ((guint) 10);
	rec = _tmp0_;
	_tmp4_ = rec;
	if (!libmsi_record_set_string (_tmp4_, (guint) 1, Shortcut)) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_;
		_tmp5_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp5_, (guint) 2, Directory);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_;
		_tmp6_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp6_, (guint) 3, Name);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp7_, (guint) 4, Component);
	}
	if (_tmp1_) {
		GError* _tmp8_;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp8_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return NULL;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	result = rec;
	return result;
}

void
wixl_msi_table_shortcut_set_target (LibmsiRecord* rec,
                                    const gchar* Target,
                                    GError** error)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (Target != NULL);
	if (!libmsi_record_set_string (rec, (guint) 5, Target)) {
		GError* _tmp0_;
		_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error0_ = _tmp0_;
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_table_shortcut_set_icon (LibmsiRecord* rec,
                                  const gchar* Icon,
                                  GError** error)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (Icon != NULL);
	if (!libmsi_record_set_string (rec, (guint) 6, Icon)) {
		GError* _tmp0_;
		_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error0_ = _tmp0_;
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_table_shortcut_set_icon_index (LibmsiRecord* rec,
                                        gint IconIndex,
                                        GError** error)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (rec != NULL);
	if (!libmsi_record_set_int (rec, (guint) 7, IconIndex)) {
		GError* _tmp0_;
		_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error0_ = _tmp0_;
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_table_shortcut_set_working_dir (LibmsiRecord* rec,
                                         const gchar* WkDir,
                                         GError** error)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (WkDir != NULL);
	if (!libmsi_record_set_string (rec, (guint) 8, WkDir)) {
		GError* _tmp0_;
		_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error0_ = _tmp0_;
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_table_shortcut_set_description (LibmsiRecord* rec,
                                         const gchar* Description,
                                         GError** error)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (Description != NULL);
	if (!libmsi_record_set_string (rec, (guint) 9, Description)) {
		GError* _tmp0_;
		_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error0_ = _tmp0_;
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_table_shortcut_set_arguments (LibmsiRecord* rec,
                                       const gchar* Arguments,
                                       GError** error)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (rec != NULL);
	g_return_if_fail (Arguments != NULL);
	if (!libmsi_record_set_string (rec, (guint) 10, Arguments)) {
		GError* _tmp0_;
		_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to set record");
		_inner_error0_ = _tmp0_;
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

WixlMsiTableShortcut*
wixl_msi_table_shortcut_construct (GType object_type)
{
	WixlMsiTableShortcut * self = NULL;
	self = (WixlMsiTableShortcut*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableShortcut*
wixl_msi_table_shortcut_new (void)
{
	return wixl_msi_table_shortcut_construct (WIXL_TYPE_MSI_TABLE_SHORTCUT);
}

static void
wixl_msi_table_shortcut_class_init (WixlMsiTableShortcutClass * klass,
                                    gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_shortcut_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Shortcut");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Shortcut` (`Shortcut` CHAR(72) NOT NULL, `Directory_` CH" \
"AR(72) NOT NULL, `Name` CHAR(128) NOT NULL LOCALIZABLE, `Component_` C" \
"HAR(72) NOT NULL, `Target` CHAR(72) NOT NULL, `Arguments` CHAR(255), `" \
"Description` CHAR(255) LOCALIZABLE, `Hotkey` INT, `Icon_` CHAR(72), `I" \
"conIndex` INT, `ShowCmd` INT, `WkDir` CHAR(72), `DisplayResourceDLL` C" \
"HAR(255), `DisplayResourceId` INT, `DescriptionResourceDLL` CHAR(255)," \
" `DescriptionResourceId` INT PRIMARY KEY `Shortcut`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Shortcut` (`Shortcut`, `Directory_`, `Name`, `Component_`" \
", `Target`, `Icon_`, `IconIndex`, `WkDir`, `Description`, `Arguments`)" \
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_shortcut_instance_init (WixlMsiTableShortcut * self,
                                       gpointer klass)
{
}

static GType
wixl_msi_table_shortcut_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableShortcutClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_shortcut_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableShortcut), 0, (GInstanceInitFunc) wixl_msi_table_shortcut_instance_init, NULL };
	GType wixl_msi_table_shortcut_type_id;
	wixl_msi_table_shortcut_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableShortcut", &g_define_type_info, 0);
	return wixl_msi_table_shortcut_type_id;
}

GType
wixl_msi_table_shortcut_get_type (void)
{
	static volatile gsize wixl_msi_table_shortcut_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_shortcut_type_id__once)) {
		GType wixl_msi_table_shortcut_type_id;
		wixl_msi_table_shortcut_type_id = wixl_msi_table_shortcut_get_type_once ();
		g_once_init_leave (&wixl_msi_table_shortcut_type_id__once, wixl_msi_table_shortcut_type_id);
	}
	return wixl_msi_table_shortcut_type_id__once;
}

void
wixl_msi_table_create_folder_add (WixlMsiTableCreateFolder* self,
                                  const gchar* Directory,
                                  const gchar* Component,
                                  GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp6_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Directory != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, Directory)) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp3_;
		_tmp3_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp3_, (guint) 2, Component);
	}
	if (_tmp1_) {
		GError* _tmp4_;
		_tmp4_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp4_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp5_ = rec;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp6_);
	_g_object_unref0 (rec);
}

WixlMsiTableCreateFolder*
wixl_msi_table_create_folder_construct (GType object_type)
{
	WixlMsiTableCreateFolder * self = NULL;
	self = (WixlMsiTableCreateFolder*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableCreateFolder*
wixl_msi_table_create_folder_new (void)
{
	return wixl_msi_table_create_folder_construct (WIXL_TYPE_MSI_TABLE_CREATE_FOLDER);
}

static void
wixl_msi_table_create_folder_class_init (WixlMsiTableCreateFolderClass * klass,
                                         gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_create_folder_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("CreateFolder");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `CreateFolder` (`Directory_` CHAR(72) NOT NULL, `Componen" \
"t_` CHAR(72) NOT NULL PRIMARY KEY `Directory_`, `Component_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `CreateFolder` (`Directory_`, `Component_`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_create_folder_instance_init (WixlMsiTableCreateFolder * self,
                                            gpointer klass)
{
}

static GType
wixl_msi_table_create_folder_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableCreateFolderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_create_folder_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableCreateFolder), 0, (GInstanceInitFunc) wixl_msi_table_create_folder_instance_init, NULL };
	GType wixl_msi_table_create_folder_type_id;
	wixl_msi_table_create_folder_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableCreateFolder", &g_define_type_info, 0);
	return wixl_msi_table_create_folder_type_id;
}

GType
wixl_msi_table_create_folder_get_type (void)
{
	static volatile gsize wixl_msi_table_create_folder_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_create_folder_type_id__once)) {
		GType wixl_msi_table_create_folder_type_id;
		wixl_msi_table_create_folder_type_id = wixl_msi_table_create_folder_get_type_once ();
		g_once_init_leave (&wixl_msi_table_create_folder_type_id__once, wixl_msi_table_create_folder_type_id);
	}
	return wixl_msi_table_create_folder_type_id__once;
}

void
wixl_msi_table_remove_file_add (WixlMsiTableRemoveFile* self,
                                const gchar* FileKey,
                                const gchar* Component,
                                const gchar* DirProperty,
                                gint InstallMode,
                                GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_;
	LibmsiRecord* _tmp9_;
	LibmsiRecord* _tmp10_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (FileKey != NULL);
	g_return_if_fail (Component != NULL);
	g_return_if_fail (DirProperty != NULL);
	_tmp0_ = libmsi_record_new ((guint) 4);
	rec = _tmp0_;
	_tmp4_ = rec;
	if (!libmsi_record_set_string (_tmp4_, (guint) 1, FileKey)) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_;
		_tmp5_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp5_, (guint) 2, Component);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_;
		_tmp6_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp6_, (guint) 3, DirProperty);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp1_ = !libmsi_record_set_int (_tmp7_, (guint) 4, InstallMode);
	}
	if (_tmp1_) {
		GError* _tmp8_;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp8_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}

WixlMsiTableRemoveFile*
wixl_msi_table_remove_file_construct (GType object_type)
{
	WixlMsiTableRemoveFile * self = NULL;
	self = (WixlMsiTableRemoveFile*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableRemoveFile*
wixl_msi_table_remove_file_new (void)
{
	return wixl_msi_table_remove_file_construct (WIXL_TYPE_MSI_TABLE_REMOVE_FILE);
}

static void
wixl_msi_table_remove_file_class_init (WixlMsiTableRemoveFileClass * klass,
                                       gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_remove_file_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("RemoveFile");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `RemoveFile` (`FileKey` CHAR(72) NOT NULL, `Component_` C" \
"HAR(72) NOT NULL, `FileName` CHAR(255) LOCALIZABLE, `DirProperty` CHAR" \
"(72) NOT NULL, `InstallMode` INT NOT NULL PRIMARY KEY `FileKey`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `RemoveFile` (`FileKey`, `Component_`, `DirProperty`, `Ins" \
"tallMode`) VALUES (?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_remove_file_instance_init (WixlMsiTableRemoveFile * self,
                                          gpointer klass)
{
}

static GType
wixl_msi_table_remove_file_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableRemoveFileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_remove_file_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableRemoveFile), 0, (GInstanceInitFunc) wixl_msi_table_remove_file_instance_init, NULL };
	GType wixl_msi_table_remove_file_type_id;
	wixl_msi_table_remove_file_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableRemoveFile", &g_define_type_info, 0);
	return wixl_msi_table_remove_file_type_id;
}

GType
wixl_msi_table_remove_file_get_type (void)
{
	static volatile gsize wixl_msi_table_remove_file_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_remove_file_type_id__once)) {
		GType wixl_msi_table_remove_file_type_id;
		wixl_msi_table_remove_file_type_id = wixl_msi_table_remove_file_get_type_once ();
		g_once_init_leave (&wixl_msi_table_remove_file_type_id__once, wixl_msi_table_remove_file_type_id);
	}
	return wixl_msi_table_remove_file_type_id__once;
}

void
wixl_msi_table_feature_add (WixlMsiTableFeature* self,
                            const gchar* Feature,
                            gint Display,
                            gint Level,
                            gint Attributes,
                            const gchar* Parent,
                            const gchar* Title,
                            const gchar* Description,
                            const gchar* ConfigurableDirectory,
                            GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp8_;
	LibmsiRecord* _tmp21_;
	LibmsiRecord* _tmp22_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Feature != NULL);
	_tmp0_ = libmsi_record_new ((guint) 8);
	rec = _tmp0_;
	_tmp8_ = rec;
	if (!libmsi_record_set_string (_tmp8_, (guint) 1, Feature)) {
		_tmp7_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp7_ = !libmsi_record_set_int (_tmp9_, (guint) 2, Display);
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_;
		_tmp10_ = rec;
		_tmp6_ = !libmsi_record_set_int (_tmp10_, (guint) 3, Level);
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_;
		_tmp11_ = rec;
		_tmp5_ = !libmsi_record_set_int (_tmp11_, (guint) 4, Attributes);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		gboolean _tmp12_ = FALSE;
		if (Parent != NULL) {
			LibmsiRecord* _tmp13_;
			_tmp13_ = rec;
			_tmp12_ = !libmsi_record_set_string (_tmp13_, (guint) 5, Parent);
		} else {
			_tmp12_ = FALSE;
		}
		_tmp4_ = _tmp12_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		gboolean _tmp14_ = FALSE;
		if (Title != NULL) {
			LibmsiRecord* _tmp15_;
			_tmp15_ = rec;
			_tmp14_ = !libmsi_record_set_string (_tmp15_, (guint) 6, Title);
		} else {
			_tmp14_ = FALSE;
		}
		_tmp3_ = _tmp14_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp16_ = FALSE;
		if (Description != NULL) {
			LibmsiRecord* _tmp17_;
			_tmp17_ = rec;
			_tmp16_ = !libmsi_record_set_string (_tmp17_, (guint) 7, Description);
		} else {
			_tmp16_ = FALSE;
		}
		_tmp2_ = _tmp16_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp18_ = FALSE;
		if (ConfigurableDirectory != NULL) {
			LibmsiRecord* _tmp19_;
			_tmp19_ = rec;
			_tmp18_ = !libmsi_record_set_string (_tmp19_, (guint) 8, ConfigurableDirectory);
		} else {
			_tmp18_ = FALSE;
		}
		_tmp1_ = _tmp18_;
	}
	if (_tmp1_) {
		GError* _tmp20_;
		_tmp20_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp20_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp21_ = rec;
	_tmp22_ = _g_object_ref0 (_tmp21_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp22_);
	_g_object_unref0 (rec);
}

WixlMsiTableFeature*
wixl_msi_table_feature_construct (GType object_type)
{
	WixlMsiTableFeature * self = NULL;
	self = (WixlMsiTableFeature*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableFeature*
wixl_msi_table_feature_new (void)
{
	return wixl_msi_table_feature_construct (WIXL_TYPE_MSI_TABLE_FEATURE);
}

static void
wixl_msi_table_feature_class_init (WixlMsiTableFeatureClass * klass,
                                   gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_feature_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Feature");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Feature` (`Feature` CHAR(38) NOT NULL, `Feature_Parent` " \
"CHAR(38), `Title` CHAR(64) LOCALIZABLE, `Description` CHAR(255) LOCALI" \
"ZABLE, `Display` INT, `Level` INT NOT NULL, `Directory_` CHAR(72), `At" \
"tributes` INT NOT NULL PRIMARY KEY `Feature`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Feature` (`Feature`, `Display`, `Level`, `Attributes`, `F" \
"eature_Parent`, `Title`, `Description`, `Directory_`) VALUES (?, ?, ?," \
" ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_feature_instance_init (WixlMsiTableFeature * self,
                                      gpointer klass)
{
}

static GType
wixl_msi_table_feature_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableFeatureClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_feature_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableFeature), 0, (GInstanceInitFunc) wixl_msi_table_feature_instance_init, NULL };
	GType wixl_msi_table_feature_type_id;
	wixl_msi_table_feature_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableFeature", &g_define_type_info, 0);
	return wixl_msi_table_feature_type_id;
}

GType
wixl_msi_table_feature_get_type (void)
{
	static volatile gsize wixl_msi_table_feature_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_feature_type_id__once)) {
		GType wixl_msi_table_feature_type_id;
		wixl_msi_table_feature_type_id = wixl_msi_table_feature_get_type_once ();
		g_once_init_leave (&wixl_msi_table_feature_type_id__once, wixl_msi_table_feature_type_id);
	}
	return wixl_msi_table_feature_type_id__once;
}

void
wixl_msi_table_service_control_add (WixlMsiTableServiceControl* self,
                                    const gchar* ServiceControl,
                                    const gchar* Name,
                                    gint Event,
                                    const gchar* Arguments,
                                    gboolean* Wait,
                                    const gchar* Component,
                                    GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	LibmsiRecord* _tmp6_;
	LibmsiRecord* _tmp16_;
	LibmsiRecord* _tmp17_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (ServiceControl != NULL);
	g_return_if_fail (Name != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 6);
	rec = _tmp0_;
	_tmp6_ = rec;
	if (!libmsi_record_set_string (_tmp6_, (guint) 1, ServiceControl)) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp5_ = !libmsi_record_set_string (_tmp7_, (guint) 2, Name);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp4_ = !libmsi_record_set_int (_tmp8_, (guint) 3, Event);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		gboolean _tmp9_ = FALSE;
		if (Arguments != NULL) {
			LibmsiRecord* _tmp10_;
			_tmp10_ = rec;
			_tmp9_ = !libmsi_record_set_string (_tmp10_, (guint) 4, Arguments);
		} else {
			_tmp9_ = FALSE;
		}
		_tmp3_ = _tmp9_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp11_ = FALSE;
		if (Wait != NULL) {
			gint _tmp12_ = 0;
			LibmsiRecord* _tmp13_;
			if (*Wait) {
				_tmp12_ = 1;
			} else {
				_tmp12_ = 0;
			}
			_tmp13_ = rec;
			_tmp11_ = !libmsi_record_set_int (_tmp13_, (guint) 5, _tmp12_);
		} else {
			_tmp11_ = FALSE;
		}
		_tmp2_ = _tmp11_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_;
		_tmp14_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp14_, (guint) 6, Component);
	}
	if (_tmp1_) {
		GError* _tmp15_;
		_tmp15_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp15_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp16_ = rec;
	_tmp17_ = _g_object_ref0 (_tmp16_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp17_);
	_g_object_unref0 (rec);
}

WixlMsiTableServiceControl*
wixl_msi_table_service_control_construct (GType object_type)
{
	WixlMsiTableServiceControl * self = NULL;
	self = (WixlMsiTableServiceControl*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableServiceControl*
wixl_msi_table_service_control_new (void)
{
	return wixl_msi_table_service_control_construct (WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL);
}

static void
wixl_msi_table_service_control_class_init (WixlMsiTableServiceControlClass * klass,
                                           gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_service_control_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("ServiceControl");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `ServiceControl` (`ServiceControl` CHAR(72) NOT NULL, `Na" \
"me` CHAR(255) NOT NULL LOCALIZABLE, `Event` INT NOT NULL, `Arguments` " \
"CHAR(255) LOCALIZABLE, `Wait` INT, `Component_` CHAR(72) NOT NULL PRIM" \
"ARY KEY `ServiceControl`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `ServiceControl` (`ServiceControl`, `Name`, `Event`, `Argu" \
"ments`, `Wait`, `Component_`) VALUES (?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_service_control_instance_init (WixlMsiTableServiceControl * self,
                                              gpointer klass)
{
}

static GType
wixl_msi_table_service_control_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableServiceControlClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_service_control_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableServiceControl), 0, (GInstanceInitFunc) wixl_msi_table_service_control_instance_init, NULL };
	GType wixl_msi_table_service_control_type_id;
	wixl_msi_table_service_control_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableServiceControl", &g_define_type_info, 0);
	return wixl_msi_table_service_control_type_id;
}

GType
wixl_msi_table_service_control_get_type (void)
{
	static volatile gsize wixl_msi_table_service_control_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_service_control_type_id__once)) {
		GType wixl_msi_table_service_control_type_id;
		wixl_msi_table_service_control_type_id = wixl_msi_table_service_control_get_type_once ();
		g_once_init_leave (&wixl_msi_table_service_control_type_id__once, wixl_msi_table_service_control_type_id);
	}
	return wixl_msi_table_service_control_type_id__once;
}

void
wixl_msi_table_service_install_add (WixlMsiTableServiceInstall* self,
                                    const gchar* ServiceInstall,
                                    const gchar* Name,
                                    const gchar* DisplayName,
                                    gint ServiceType,
                                    gint StartType,
                                    gint ErrorControl,
                                    const gchar* LoadOrderGroup,
                                    const gchar* Dependencies,
                                    const gchar* StartName,
                                    const gchar* Password,
                                    const gchar* Arguments,
                                    const gchar* Component,
                                    const gchar* Description,
                                    GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp9_ = FALSE;
	gboolean _tmp10_ = FALSE;
	gboolean _tmp11_ = FALSE;
	gboolean _tmp12_ = FALSE;
	LibmsiRecord* _tmp13_;
	LibmsiRecord* _tmp34_;
	LibmsiRecord* _tmp35_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (ServiceInstall != NULL);
	g_return_if_fail (Name != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 13);
	rec = _tmp0_;
	_tmp13_ = rec;
	if (!libmsi_record_set_string (_tmp13_, (guint) 1, ServiceInstall)) {
		_tmp12_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_;
		_tmp14_ = rec;
		_tmp12_ = !libmsi_record_set_string (_tmp14_, (guint) 2, Name);
	}
	if (_tmp12_) {
		_tmp11_ = TRUE;
	} else {
		gboolean _tmp15_ = FALSE;
		if (DisplayName != NULL) {
			LibmsiRecord* _tmp16_;
			_tmp16_ = rec;
			_tmp15_ = !libmsi_record_set_string (_tmp16_, (guint) 3, DisplayName);
		} else {
			_tmp15_ = FALSE;
		}
		_tmp11_ = _tmp15_;
	}
	if (_tmp11_) {
		_tmp10_ = TRUE;
	} else {
		LibmsiRecord* _tmp17_;
		_tmp17_ = rec;
		_tmp10_ = !libmsi_record_set_int (_tmp17_, (guint) 4, ServiceType);
	}
	if (_tmp10_) {
		_tmp9_ = TRUE;
	} else {
		LibmsiRecord* _tmp18_;
		_tmp18_ = rec;
		_tmp9_ = !libmsi_record_set_int (_tmp18_, (guint) 5, StartType);
	}
	if (_tmp9_) {
		_tmp8_ = TRUE;
	} else {
		LibmsiRecord* _tmp19_;
		_tmp19_ = rec;
		_tmp8_ = !libmsi_record_set_int (_tmp19_, (guint) 6, ErrorControl);
	}
	if (_tmp8_) {
		_tmp7_ = TRUE;
	} else {
		gboolean _tmp20_ = FALSE;
		if (LoadOrderGroup != NULL) {
			LibmsiRecord* _tmp21_;
			_tmp21_ = rec;
			_tmp20_ = !libmsi_record_set_string (_tmp21_, (guint) 7, LoadOrderGroup);
		} else {
			_tmp20_ = FALSE;
		}
		_tmp7_ = _tmp20_;
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		gboolean _tmp22_ = FALSE;
		if (Dependencies != NULL) {
			LibmsiRecord* _tmp23_;
			_tmp23_ = rec;
			_tmp22_ = !libmsi_record_set_string (_tmp23_, (guint) 8, Dependencies);
		} else {
			_tmp22_ = FALSE;
		}
		_tmp6_ = _tmp22_;
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		gboolean _tmp24_ = FALSE;
		if (StartName != NULL) {
			LibmsiRecord* _tmp25_;
			_tmp25_ = rec;
			_tmp24_ = !libmsi_record_set_string (_tmp25_, (guint) 9, StartName);
		} else {
			_tmp24_ = FALSE;
		}
		_tmp5_ = _tmp24_;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		gboolean _tmp26_ = FALSE;
		if (Password != NULL) {
			LibmsiRecord* _tmp27_;
			_tmp27_ = rec;
			_tmp26_ = !libmsi_record_set_string (_tmp27_, (guint) 10, Password);
		} else {
			_tmp26_ = FALSE;
		}
		_tmp4_ = _tmp26_;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		gboolean _tmp28_ = FALSE;
		if (Arguments != NULL) {
			LibmsiRecord* _tmp29_;
			_tmp29_ = rec;
			_tmp28_ = !libmsi_record_set_string (_tmp29_, (guint) 11, Arguments);
		} else {
			_tmp28_ = FALSE;
		}
		_tmp3_ = _tmp28_;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp30_;
		_tmp30_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp30_, (guint) 12, Component);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp31_ = FALSE;
		if (Description != NULL) {
			LibmsiRecord* _tmp32_;
			_tmp32_ = rec;
			_tmp31_ = !libmsi_record_set_string (_tmp32_, (guint) 13, Description);
		} else {
			_tmp31_ = FALSE;
		}
		_tmp1_ = _tmp31_;
	}
	if (_tmp1_) {
		GError* _tmp33_;
		_tmp33_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp33_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp34_ = rec;
	_tmp35_ = _g_object_ref0 (_tmp34_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp35_);
	_g_object_unref0 (rec);
}

WixlMsiTableServiceInstall*
wixl_msi_table_service_install_construct (GType object_type)
{
	WixlMsiTableServiceInstall * self = NULL;
	self = (WixlMsiTableServiceInstall*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableServiceInstall*
wixl_msi_table_service_install_new (void)
{
	return wixl_msi_table_service_install_construct (WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL);
}

static void
wixl_msi_table_service_install_class_init (WixlMsiTableServiceInstallClass * klass,
                                           gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_service_install_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("ServiceInstall");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `ServiceInstall` (`ServiceInstall` CHAR(72) NOT NULL, `Na" \
"me` CHAR(255) NOT NULL, `DisplayName` CHAR(255) LOCALIZABLE, `ServiceT" \
"ype` LONG NOT NULL, `StartType` LONG NOT NULL, `ErrorControl` LONG NOT" \
" NULL, `LoadOrderGroup` CHAR(255), `Dependencies` CHAR(255), `StartNam" \
"e` CHAR(255), `Password` CHAR(255), `Arguments` CHAR(255), `Component_" \
"` CHAR(72) NOT NULL, `Description` CHAR(255) LOCALIZABLE PRIMARY KEY `" \
"ServiceInstall`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `ServiceInstall` (`ServiceInstall`, `Name`, `DisplayName`," \
" `ServiceType`, `StartType`, `ErrorControl`, `LoadOrderGroup`, `Depend" \
"encies`, `StartName`, `Password`, `Arguments`, `Component_`, `Descript" \
"ion`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_service_install_instance_init (WixlMsiTableServiceInstall * self,
                                              gpointer klass)
{
}

static GType
wixl_msi_table_service_install_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableServiceInstallClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_service_install_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableServiceInstall), 0, (GInstanceInitFunc) wixl_msi_table_service_install_instance_init, NULL };
	GType wixl_msi_table_service_install_type_id;
	wixl_msi_table_service_install_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableServiceInstall", &g_define_type_info, 0);
	return wixl_msi_table_service_install_type_id;
}

GType
wixl_msi_table_service_install_get_type (void)
{
	static volatile gsize wixl_msi_table_service_install_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_service_install_type_id__once)) {
		GType wixl_msi_table_service_install_type_id;
		wixl_msi_table_service_install_type_id = wixl_msi_table_service_install_get_type_once ();
		g_once_init_leave (&wixl_msi_table_service_install_type_id__once, wixl_msi_table_service_install_type_id);
	}
	return wixl_msi_table_service_install_type_id__once;
}

WixlMsiTableSignature*
wixl_msi_table_signature_construct (GType object_type)
{
	WixlMsiTableSignature * self = NULL;
	self = (WixlMsiTableSignature*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableSignature*
wixl_msi_table_signature_new (void)
{
	return wixl_msi_table_signature_construct (WIXL_TYPE_MSI_TABLE_SIGNATURE);
}

static void
wixl_msi_table_signature_class_init (WixlMsiTableSignatureClass * klass,
                                     gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	wixl_msi_table_signature_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Signature");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Signature` (`Signature` CHAR(72) NOT NULL, `FileName` CH" \
"AR(255) NOT NULL, `MinVersion` CHAR(20), `MaxVersion` CHAR(20), `MinSi" \
"ze` LONG, `MaxSize` LONG, `MinDate` LONG, `MaxDate` LONG, `Languages` " \
"CHAR(255) PRIMARY KEY `Signature`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
}

static void
wixl_msi_table_signature_instance_init (WixlMsiTableSignature * self,
                                        gpointer klass)
{
}

static GType
wixl_msi_table_signature_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableSignatureClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_signature_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableSignature), 0, (GInstanceInitFunc) wixl_msi_table_signature_instance_init, NULL };
	GType wixl_msi_table_signature_type_id;
	wixl_msi_table_signature_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableSignature", &g_define_type_info, 0);
	return wixl_msi_table_signature_type_id;
}

GType
wixl_msi_table_signature_get_type (void)
{
	static volatile gsize wixl_msi_table_signature_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_signature_type_id__once)) {
		GType wixl_msi_table_signature_type_id;
		wixl_msi_table_signature_type_id = wixl_msi_table_signature_get_type_once ();
		g_once_init_leave (&wixl_msi_table_signature_type_id__once, wixl_msi_table_signature_type_id);
	}
	return wixl_msi_table_signature_type_id__once;
}

void
wixl_msi_table_app_search_add (WixlMsiTableAppSearch* self,
                               const gchar* Property,
                               const gchar* Signature,
                               GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp6_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Property != NULL);
	g_return_if_fail (Signature != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, Property)) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp3_;
		_tmp3_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp3_, (guint) 2, Signature);
	}
	if (_tmp1_) {
		GError* _tmp4_;
		_tmp4_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp4_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp5_ = rec;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp6_);
	_g_object_unref0 (rec);
}

WixlMsiTableAppSearch*
wixl_msi_table_app_search_construct (GType object_type)
{
	WixlMsiTableAppSearch * self = NULL;
	self = (WixlMsiTableAppSearch*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableAppSearch*
wixl_msi_table_app_search_new (void)
{
	return wixl_msi_table_app_search_construct (WIXL_TYPE_MSI_TABLE_APP_SEARCH);
}

static void
wixl_msi_table_app_search_class_init (WixlMsiTableAppSearchClass * klass,
                                      gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_app_search_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("AppSearch");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `AppSearch` (`Property` CHAR(72) NOT NULL, `Signature_` C" \
"HAR(72) NOT NULL PRIMARY KEY `Property`, `Signature_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `AppSearch` (`Property`, `Signature_`) VALUES (?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_app_search_instance_init (WixlMsiTableAppSearch * self,
                                         gpointer klass)
{
}

static GType
wixl_msi_table_app_search_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableAppSearchClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_app_search_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableAppSearch), 0, (GInstanceInitFunc) wixl_msi_table_app_search_instance_init, NULL };
	GType wixl_msi_table_app_search_type_id;
	wixl_msi_table_app_search_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableAppSearch", &g_define_type_info, 0);
	return wixl_msi_table_app_search_type_id;
}

GType
wixl_msi_table_app_search_get_type (void)
{
	static volatile gsize wixl_msi_table_app_search_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_app_search_type_id__once)) {
		GType wixl_msi_table_app_search_type_id;
		wixl_msi_table_app_search_type_id = wixl_msi_table_app_search_get_type_once ();
		g_once_init_leave (&wixl_msi_table_app_search_type_id__once, wixl_msi_table_app_search_type_id);
	}
	return wixl_msi_table_app_search_type_id__once;
}

void
wixl_msi_table_custom_action_add (WixlMsiTableCustomAction* self,
                                  const gchar* Action,
                                  gint Type,
                                  const gchar* Source,
                                  const gchar* Target,
                                  gint* ExtendedType,
                                  GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp12_;
	LibmsiRecord* _tmp13_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Action != NULL);
	g_return_if_fail (Source != NULL);
	g_return_if_fail (Target != NULL);
	_tmp0_ = libmsi_record_new ((guint) 5);
	rec = _tmp0_;
	_tmp5_ = rec;
	if (!libmsi_record_set_string (_tmp5_, (guint) 1, Action)) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_;
		_tmp6_ = rec;
		_tmp4_ = !libmsi_record_set_int (_tmp6_, (guint) 2, Type);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp7_, (guint) 3, Source);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp8_, (guint) 4, Target);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp9_ = FALSE;
		if (ExtendedType != NULL) {
			LibmsiRecord* _tmp10_;
			_tmp10_ = rec;
			_tmp9_ = !libmsi_record_set_int (_tmp10_, (guint) 5, *ExtendedType);
		} else {
			_tmp9_ = FALSE;
		}
		_tmp1_ = _tmp9_;
	}
	if (_tmp1_) {
		GError* _tmp11_;
		_tmp11_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp11_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp12_ = rec;
	_tmp13_ = _g_object_ref0 (_tmp12_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp13_);
	_g_object_unref0 (rec);
}

WixlMsiTableCustomAction*
wixl_msi_table_custom_action_construct (GType object_type)
{
	WixlMsiTableCustomAction * self = NULL;
	self = (WixlMsiTableCustomAction*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableCustomAction*
wixl_msi_table_custom_action_new (void)
{
	return wixl_msi_table_custom_action_construct (WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION);
}

static void
wixl_msi_table_custom_action_class_init (WixlMsiTableCustomActionClass * klass,
                                         gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_custom_action_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("CustomAction");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `CustomAction` (`Action` CHAR(72) NOT NULL, `Type` INT NO" \
"T NULL, `Source` CHAR(72), `Target` CHAR(255), `ExtendedType` LONG PRI" \
"MARY KEY `Action`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `CustomAction` (`Action`, `Type`, `Source`, `Target`, `Ext" \
"endedType`) VALUES (?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_custom_action_instance_init (WixlMsiTableCustomAction * self,
                                            gpointer klass)
{
}

static GType
wixl_msi_table_custom_action_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableCustomActionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_custom_action_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableCustomAction), 0, (GInstanceInitFunc) wixl_msi_table_custom_action_instance_init, NULL };
	GType wixl_msi_table_custom_action_type_id;
	wixl_msi_table_custom_action_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableCustomAction", &g_define_type_info, 0);
	return wixl_msi_table_custom_action_type_id;
}

GType
wixl_msi_table_custom_action_get_type (void)
{
	static volatile gsize wixl_msi_table_custom_action_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_custom_action_type_id__once)) {
		GType wixl_msi_table_custom_action_type_id;
		wixl_msi_table_custom_action_type_id = wixl_msi_table_custom_action_get_type_once ();
		g_once_init_leave (&wixl_msi_table_custom_action_type_id__once, wixl_msi_table_custom_action_type_id);
	}
	return wixl_msi_table_custom_action_type_id__once;
}

void
wixl_msi_table_reg_locator_add (WixlMsiTableRegLocator* self,
                                const gchar* Signature,
                                gint Root,
                                const gchar* Key,
                                const gchar* Name,
                                gint Type,
                                GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	LibmsiRecord* _tmp5_;
	LibmsiRecord* _tmp11_;
	LibmsiRecord* _tmp12_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Signature != NULL);
	g_return_if_fail (Key != NULL);
	g_return_if_fail (Name != NULL);
	_tmp0_ = libmsi_record_new ((guint) 5);
	rec = _tmp0_;
	_tmp5_ = rec;
	if (!libmsi_record_set_string (_tmp5_, (guint) 1, Signature)) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp6_;
		_tmp6_ = rec;
		_tmp4_ = !libmsi_record_set_int (_tmp6_, (guint) 2, Root);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp7_;
		_tmp7_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp7_, (guint) 3, Key);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp2_ = !libmsi_record_set_string (_tmp8_, (guint) 4, Name);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp1_ = !libmsi_record_set_int (_tmp9_, (guint) 5, Type);
	}
	if (_tmp1_) {
		GError* _tmp10_;
		_tmp10_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp10_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp11_ = rec;
	_tmp12_ = _g_object_ref0 (_tmp11_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp12_);
	_g_object_unref0 (rec);
}

WixlMsiTableRegLocator*
wixl_msi_table_reg_locator_construct (GType object_type)
{
	WixlMsiTableRegLocator * self = NULL;
	self = (WixlMsiTableRegLocator*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableRegLocator*
wixl_msi_table_reg_locator_new (void)
{
	return wixl_msi_table_reg_locator_construct (WIXL_TYPE_MSI_TABLE_REG_LOCATOR);
}

static void
wixl_msi_table_reg_locator_class_init (WixlMsiTableRegLocatorClass * klass,
                                       gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_reg_locator_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("RegLocator");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `RegLocator` (`Signature_` CHAR(72) NOT NULL, `Root` INT " \
"NOT NULL, `Key` CHAR(255) NOT NULL, `Name` CHAR(255), `Type` INT PRIMA" \
"RY KEY `Signature_`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `RegLocator` (`Signature_`, `Root`, `Key`, `Name`, `Type`)" \
" VALUES (?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_reg_locator_instance_init (WixlMsiTableRegLocator * self,
                                          gpointer klass)
{
}

static GType
wixl_msi_table_reg_locator_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableRegLocatorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_reg_locator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableRegLocator), 0, (GInstanceInitFunc) wixl_msi_table_reg_locator_instance_init, NULL };
	GType wixl_msi_table_reg_locator_type_id;
	wixl_msi_table_reg_locator_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableRegLocator", &g_define_type_info, 0);
	return wixl_msi_table_reg_locator_type_id;
}

GType
wixl_msi_table_reg_locator_get_type (void)
{
	static volatile gsize wixl_msi_table_reg_locator_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_reg_locator_type_id__once)) {
		GType wixl_msi_table_reg_locator_type_id;
		wixl_msi_table_reg_locator_type_id = wixl_msi_table_reg_locator_get_type_once ();
		g_once_init_leave (&wixl_msi_table_reg_locator_type_id__once, wixl_msi_table_reg_locator_type_id);
	}
	return wixl_msi_table_reg_locator_type_id__once;
}

static void
wixl_msi_table_validation_real_create (WixlMsiTable* base,
                                       LibmsiDatabase* db,
                                       GError** error)
{
	WixlMsiTableValidation * self;
	self = (WixlMsiTableValidation*) base;
	g_return_if_fail (db != NULL);
}

WixlMsiTableValidation*
wixl_msi_table_validation_construct (GType object_type)
{
	WixlMsiTableValidation * self = NULL;
	self = (WixlMsiTableValidation*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableValidation*
wixl_msi_table_validation_new (void)
{
	return wixl_msi_table_validation_construct (WIXL_TYPE_MSI_TABLE_VALIDATION);
}

static void
wixl_msi_table_validation_class_init (WixlMsiTableValidationClass * klass,
                                      gpointer klass_data)
{
	gchar* _tmp0_;
	wixl_msi_table_validation_parent_class = g_type_class_peek_parent (klass);
	((WixlMsiTableClass *) klass)->create = (void (*) (WixlMsiTable*, LibmsiDatabase*, GError**)) wixl_msi_table_validation_real_create;
	_tmp0_ = g_strdup ("_Validation");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
}

static void
wixl_msi_table_validation_instance_init (WixlMsiTableValidation * self,
                                         gpointer klass)
{
}

static GType
wixl_msi_table_validation_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableValidationClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_validation_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableValidation), 0, (GInstanceInitFunc) wixl_msi_table_validation_instance_init, NULL };
	GType wixl_msi_table_validation_type_id;
	wixl_msi_table_validation_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableValidation", &g_define_type_info, 0);
	return wixl_msi_table_validation_type_id;
}

GType
wixl_msi_table_validation_get_type (void)
{
	static volatile gsize wixl_msi_table_validation_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_validation_type_id__once)) {
		GType wixl_msi_table_validation_type_id;
		wixl_msi_table_validation_type_id = wixl_msi_table_validation_get_type_once ();
		g_once_init_leave (&wixl_msi_table_validation_type_id__once, wixl_msi_table_validation_type_id);
	}
	return wixl_msi_table_validation_type_id__once;
}

void
wixl_msi_table_streams_add (WixlMsiTableStreams* self,
                            const gchar* name,
                            GInputStream* input,
                            gsize count,
                            GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	LibmsiRecord* _tmp2_;
	LibmsiRecord* _tmp6_;
	LibmsiRecord* _tmp7_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (name != NULL);
	g_return_if_fail (input != NULL);
	_tmp0_ = libmsi_record_new ((guint) 2);
	rec = _tmp0_;
	_tmp2_ = rec;
	if (!libmsi_record_set_string (_tmp2_, (guint) 1, name)) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp3_ = FALSE;
		LibmsiRecord* _tmp4_;
		_tmp4_ = rec;
		_tmp3_ = libmsi_record_set_stream (_tmp4_, (guint) 2, input, count, NULL, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			return;
		}
		_tmp1_ = !_tmp3_;
	}
	if (_tmp1_) {
		GError* _tmp5_;
		_tmp5_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp5_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp6_ = rec;
	_tmp7_ = _g_object_ref0 (_tmp6_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp7_);
	_g_object_unref0 (rec);
}

static void
wixl_msi_table_streams_real_create (WixlMsiTable* base,
                                    LibmsiDatabase* db,
                                    GError** error)
{
	WixlMsiTableStreams * self;
	LibmsiQuery* query = NULL;
	LibmsiQuery* _tmp0_;
	GList* _tmp1_;
	GError* _inner_error0_ = NULL;
	self = (WixlMsiTableStreams*) base;
	g_return_if_fail (db != NULL);
	_tmp0_ = libmsi_query_new (db, "INSERT INTO `_Streams` (`Name`, `Data`) VALUES (?, ?)", &_inner_error0_);
	query = _tmp0_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp1_ = ((WixlMsiTable*) self)->records;
	{
		GList* r_collection = NULL;
		GList* r_it = NULL;
		r_collection = _tmp1_;
		for (r_it = r_collection; r_it != NULL; r_it = r_it->next) {
			LibmsiRecord* _tmp2_;
			LibmsiRecord* r = NULL;
			_tmp2_ = _g_object_ref0 ((LibmsiRecord*) r_it->data);
			r = _tmp2_;
			{
				LibmsiQuery* _tmp3_;
				LibmsiRecord* _tmp4_;
				_tmp3_ = query;
				_tmp4_ = r;
				libmsi_query_execute (_tmp3_, _tmp4_, &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (r);
					_g_object_unref0 (query);
					return;
				}
				_g_object_unref0 (r);
			}
		}
	}
	_g_object_unref0 (query);
}

WixlMsiTableStreams*
wixl_msi_table_streams_construct (GType object_type)
{
	WixlMsiTableStreams * self = NULL;
	self = (WixlMsiTableStreams*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableStreams*
wixl_msi_table_streams_new (void)
{
	return wixl_msi_table_streams_construct (WIXL_TYPE_MSI_TABLE_STREAMS);
}

static void
wixl_msi_table_streams_class_init (WixlMsiTableStreamsClass * klass,
                                   gpointer klass_data)
{
	gchar* _tmp0_;
	wixl_msi_table_streams_parent_class = g_type_class_peek_parent (klass);
	((WixlMsiTableClass *) klass)->create = (void (*) (WixlMsiTable*, LibmsiDatabase*, GError**)) wixl_msi_table_streams_real_create;
	_tmp0_ = g_strdup ("_Streams");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
}

static void
wixl_msi_table_streams_instance_init (WixlMsiTableStreams * self,
                                      gpointer klass)
{
}

static GType
wixl_msi_table_streams_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableStreamsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_streams_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableStreams), 0, (GInstanceInitFunc) wixl_msi_table_streams_instance_init, NULL };
	GType wixl_msi_table_streams_type_id;
	wixl_msi_table_streams_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableStreams", &g_define_type_info, 0);
	return wixl_msi_table_streams_type_id;
}

GType
wixl_msi_table_streams_get_type (void)
{
	static volatile gsize wixl_msi_table_streams_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_streams_type_id__once)) {
		GType wixl_msi_table_streams_type_id;
		wixl_msi_table_streams_type_id = wixl_msi_table_streams_get_type_once ();
		g_once_init_leave (&wixl_msi_table_streams_type_id__once, wixl_msi_table_streams_type_id);
	}
	return wixl_msi_table_streams_type_id__once;
}

void
wixl_msi_table_ini_file_add (WixlMsiTableIniFile* self,
                             const gchar* IniFile,
                             const gchar* FileName,
                             const gchar* DirProperty,
                             const gchar* Section,
                             const gchar* Key,
                             const gchar* Value,
                             gint Action,
                             const gchar* Component,
                             GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp8_;
	LibmsiRecord* _tmp17_;
	LibmsiRecord* _tmp18_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (IniFile != NULL);
	g_return_if_fail (FileName != NULL);
	g_return_if_fail (DirProperty != NULL);
	g_return_if_fail (Section != NULL);
	g_return_if_fail (Key != NULL);
	g_return_if_fail (Value != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 8);
	rec = _tmp0_;
	_tmp8_ = rec;
	if (!libmsi_record_set_string (_tmp8_, (guint) 1, IniFile)) {
		_tmp7_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp7_ = !libmsi_record_set_string (_tmp9_, (guint) 2, FileName);
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_;
		_tmp10_ = rec;
		_tmp6_ = !libmsi_record_set_string (_tmp10_, (guint) 3, DirProperty);
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_;
		_tmp11_ = rec;
		_tmp5_ = !libmsi_record_set_string (_tmp11_, (guint) 4, Section);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_;
		_tmp12_ = rec;
		_tmp4_ = !libmsi_record_set_string (_tmp12_, (guint) 5, Key);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp13_;
		_tmp13_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp13_, (guint) 6, Value);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_;
		_tmp14_ = rec;
		_tmp2_ = !libmsi_record_set_int (_tmp14_, (guint) 7, Action);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_;
		_tmp15_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp15_, (guint) 8, Component);
	}
	if (_tmp1_) {
		GError* _tmp16_;
		_tmp16_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp16_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp17_ = rec;
	_tmp18_ = _g_object_ref0 (_tmp17_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp18_);
	_g_object_unref0 (rec);
}

WixlMsiTableIniFile*
wixl_msi_table_ini_file_construct (GType object_type)
{
	WixlMsiTableIniFile * self = NULL;
	self = (WixlMsiTableIniFile*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableIniFile*
wixl_msi_table_ini_file_new (void)
{
	return wixl_msi_table_ini_file_construct (WIXL_TYPE_MSI_TABLE_INI_FILE);
}

static void
wixl_msi_table_ini_file_class_init (WixlMsiTableIniFileClass * klass,
                                    gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_ini_file_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("IniFile");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `IniFile` (`IniFile` CHAR(72) NOT NULL, `FileName` CHAR(2" \
"55) NOT NULL LOCALIZABLE, `DirProperty` CHAR(72), `Section` CHAR(255) " \
"NOT NULL LOCALIZABLE, `Key` CHAR(255) NOT NULL LOCALIZABLE, `Value` CH" \
"AR(255) NOT NULL LOCALIZABLE, `Action` INT NOT NULL, `Component_` CHAR" \
"(72) NOT NULL PRIMARY KEY `IniFile`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `IniFile` (`IniFile`, `FileName`, `DirProperty`, `Section`" \
", `Key`, Value`, `Action`, `Component_`) VALUES (?, ?, ?, ?, ?, ?, ?, " \
"?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_ini_file_instance_init (WixlMsiTableIniFile * self,
                                       gpointer klass)
{
}

static GType
wixl_msi_table_ini_file_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableIniFileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_ini_file_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableIniFile), 0, (GInstanceInitFunc) wixl_msi_table_ini_file_instance_init, NULL };
	GType wixl_msi_table_ini_file_type_id;
	wixl_msi_table_ini_file_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableIniFile", &g_define_type_info, 0);
	return wixl_msi_table_ini_file_type_id;
}

GType
wixl_msi_table_ini_file_get_type (void)
{
	static volatile gsize wixl_msi_table_ini_file_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_ini_file_type_id__once)) {
		GType wixl_msi_table_ini_file_type_id;
		wixl_msi_table_ini_file_type_id = wixl_msi_table_ini_file_get_type_once ();
		g_once_init_leave (&wixl_msi_table_ini_file_type_id__once, wixl_msi_table_ini_file_type_id);
	}
	return wixl_msi_table_ini_file_type_id__once;
}

void
wixl_msi_table_remove_ini_file_add (WixlMsiTableRemoveIniFile* self,
                                    const gchar* IniFile,
                                    const gchar* FileName,
                                    const gchar* DirProperty,
                                    const gchar* Section,
                                    const gchar* Key,
                                    const gchar* Value,
                                    gint Action,
                                    const gchar* Component,
                                    GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* _tmp8_;
	LibmsiRecord* _tmp17_;
	LibmsiRecord* _tmp18_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (IniFile != NULL);
	g_return_if_fail (FileName != NULL);
	g_return_if_fail (DirProperty != NULL);
	g_return_if_fail (Section != NULL);
	g_return_if_fail (Key != NULL);
	g_return_if_fail (Component != NULL);
	_tmp0_ = libmsi_record_new ((guint) 8);
	rec = _tmp0_;
	_tmp8_ = rec;
	if (!libmsi_record_set_string (_tmp8_, (guint) 1, IniFile)) {
		_tmp7_ = TRUE;
	} else {
		LibmsiRecord* _tmp9_;
		_tmp9_ = rec;
		_tmp7_ = !libmsi_record_set_string (_tmp9_, (guint) 2, FileName);
	}
	if (_tmp7_) {
		_tmp6_ = TRUE;
	} else {
		LibmsiRecord* _tmp10_;
		_tmp10_ = rec;
		_tmp6_ = !libmsi_record_set_string (_tmp10_, (guint) 3, DirProperty);
	}
	if (_tmp6_) {
		_tmp5_ = TRUE;
	} else {
		LibmsiRecord* _tmp11_;
		_tmp11_ = rec;
		_tmp5_ = !libmsi_record_set_string (_tmp11_, (guint) 4, Section);
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		LibmsiRecord* _tmp12_;
		_tmp12_ = rec;
		_tmp4_ = !libmsi_record_set_string (_tmp12_, (guint) 5, Key);
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp13_;
		_tmp13_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp13_, (guint) 6, Value);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		LibmsiRecord* _tmp14_;
		_tmp14_ = rec;
		_tmp2_ = !libmsi_record_set_int (_tmp14_, (guint) 7, Action);
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp15_;
		_tmp15_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp15_, (guint) 8, Component);
	}
	if (_tmp1_) {
		GError* _tmp16_;
		_tmp16_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp16_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp17_ = rec;
	_tmp18_ = _g_object_ref0 (_tmp17_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp18_);
	_g_object_unref0 (rec);
}

WixlMsiTableRemoveIniFile*
wixl_msi_table_remove_ini_file_construct (GType object_type)
{
	WixlMsiTableRemoveIniFile * self = NULL;
	self = (WixlMsiTableRemoveIniFile*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableRemoveIniFile*
wixl_msi_table_remove_ini_file_new (void)
{
	return wixl_msi_table_remove_ini_file_construct (WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE);
}

static void
wixl_msi_table_remove_ini_file_class_init (WixlMsiTableRemoveIniFileClass * klass,
                                           gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_remove_ini_file_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("RemoveIniFile");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `RemoveIniFile` (`RemoveIniFile` CHAR(72) NOT NULL, `File" \
"Name` CHAR(255) NOT NULL LOCALIZABLE, `DirProperty` CHAR(72), `Section" \
"` CHAR(255) NOT NULL LOCALIZABLE, `Key` CHAR(255) NOT NULL LOCALIZABLE" \
", `Value` CHAR(255) LOCALIZABLE, `Action` INT NOT NULL, `Component_` C" \
"HAR(72) NOT NULL PRIMARY KEY `RemoveIniFile`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `RemoveIniFile` (`RemoveIniFile`, `FileName`, `DirProperty" \
"`, `Section`, `Key`, Value`, `Action`, `Component_`) VALUES (?, ?, ?, " \
"?, ?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_remove_ini_file_instance_init (WixlMsiTableRemoveIniFile * self,
                                              gpointer klass)
{
}

static GType
wixl_msi_table_remove_ini_file_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableRemoveIniFileClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_remove_ini_file_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableRemoveIniFile), 0, (GInstanceInitFunc) wixl_msi_table_remove_ini_file_instance_init, NULL };
	GType wixl_msi_table_remove_ini_file_type_id;
	wixl_msi_table_remove_ini_file_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableRemoveIniFile", &g_define_type_info, 0);
	return wixl_msi_table_remove_ini_file_type_id;
}

GType
wixl_msi_table_remove_ini_file_get_type (void)
{
	static volatile gsize wixl_msi_table_remove_ini_file_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_remove_ini_file_type_id__once)) {
		GType wixl_msi_table_remove_ini_file_type_id;
		wixl_msi_table_remove_ini_file_type_id = wixl_msi_table_remove_ini_file_get_type_once ();
		g_once_init_leave (&wixl_msi_table_remove_ini_file_type_id__once, wixl_msi_table_remove_ini_file_type_id);
	}
	return wixl_msi_table_remove_ini_file_type_id__once;
}

void
wixl_msi_table_action_text_add (WixlMsiTableActionText* self,
                                const gchar* Action,
                                const gchar* Description,
                                const gchar* Template,
                                GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	LibmsiRecord* _tmp3_;
	LibmsiRecord* _tmp9_;
	LibmsiRecord* _tmp10_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (Action != NULL);
	_tmp0_ = libmsi_record_new ((guint) 3);
	rec = _tmp0_;
	_tmp3_ = rec;
	if (!libmsi_record_set_string (_tmp3_, (guint) 1, Action)) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp4_ = FALSE;
		if (Description != NULL) {
			LibmsiRecord* _tmp5_;
			_tmp5_ = rec;
			_tmp4_ = !libmsi_record_set_string (_tmp5_, (guint) 2, Description);
		} else {
			_tmp4_ = FALSE;
		}
		_tmp2_ = _tmp4_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp6_ = FALSE;
		if (Template != NULL) {
			LibmsiRecord* _tmp7_;
			_tmp7_ = rec;
			_tmp6_ = !libmsi_record_set_string (_tmp7_, (guint) 3, Template);
		} else {
			_tmp6_ = FALSE;
		}
		_tmp1_ = _tmp6_;
	}
	if (_tmp1_) {
		GError* _tmp8_;
		_tmp8_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp8_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return;
	}
	_tmp9_ = rec;
	_tmp10_ = _g_object_ref0 (_tmp9_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp10_);
	_g_object_unref0 (rec);
}

WixlMsiTableActionText*
wixl_msi_table_action_text_construct (GType object_type)
{
	WixlMsiTableActionText * self = NULL;
	self = (WixlMsiTableActionText*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableActionText*
wixl_msi_table_action_text_new (void)
{
	return wixl_msi_table_action_text_construct (WIXL_TYPE_MSI_TABLE_ACTION_TEXT);
}

static void
wixl_msi_table_action_text_class_init (WixlMsiTableActionTextClass * klass,
                                       gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_action_text_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("ActionText");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `ActionText` (`Action` CHAR(72) NOT NULL, `Description` C" \
"HAR(255) LOCALIZABLE, `Template` CHAR(255) LOCALIZABLE PRIMARY KEY `Ac" \
"tion`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `ActionText` (`Action`, `Description`, `Template`) VALUES " \
"(?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_action_text_instance_init (WixlMsiTableActionText * self,
                                          gpointer klass)
{
}

static GType
wixl_msi_table_action_text_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableActionTextClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_action_text_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableActionText), 0, (GInstanceInitFunc) wixl_msi_table_action_text_instance_init, NULL };
	GType wixl_msi_table_action_text_type_id;
	wixl_msi_table_action_text_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableActionText", &g_define_type_info, 0);
	return wixl_msi_table_action_text_type_id;
}

GType
wixl_msi_table_action_text_get_type (void)
{
	static volatile gsize wixl_msi_table_action_text_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_action_text_type_id__once)) {
		GType wixl_msi_table_action_text_type_id;
		wixl_msi_table_action_text_type_id = wixl_msi_table_action_text_get_type_once ();
		g_once_init_leave (&wixl_msi_table_action_text_type_id__once, wixl_msi_table_action_text_type_id);
	}
	return wixl_msi_table_action_text_type_id__once;
}

LibmsiRecord*
wixl_msi_table_environment_add (WixlMsiTableEnvironment* self,
                                const gchar* Environment,
                                const gchar* Name,
                                const gchar* Value,
                                const gchar* Component,
                                GError** error)
{
	LibmsiRecord* rec = NULL;
	LibmsiRecord* _tmp0_;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	LibmsiRecord* _tmp4_;
	LibmsiRecord* _tmp10_;
	LibmsiRecord* _tmp11_;
	GError* _inner_error0_ = NULL;
	LibmsiRecord* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (Environment != NULL, NULL);
	g_return_val_if_fail (Name != NULL, NULL);
	g_return_val_if_fail (Component != NULL, NULL);
	_tmp0_ = libmsi_record_new ((guint) 4);
	rec = _tmp0_;
	_tmp4_ = rec;
	if (!libmsi_record_set_string (_tmp4_, (guint) 1, Environment)) {
		_tmp3_ = TRUE;
	} else {
		LibmsiRecord* _tmp5_;
		_tmp5_ = rec;
		_tmp3_ = !libmsi_record_set_string (_tmp5_, (guint) 2, Name);
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		gboolean _tmp6_ = FALSE;
		if (Value != NULL) {
			LibmsiRecord* _tmp7_;
			_tmp7_ = rec;
			_tmp6_ = !libmsi_record_set_string (_tmp7_, (guint) 3, Value);
		} else {
			_tmp6_ = FALSE;
		}
		_tmp2_ = _tmp6_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		LibmsiRecord* _tmp8_;
		_tmp8_ = rec;
		_tmp1_ = !libmsi_record_set_string (_tmp8_, (guint) 4, Component);
	}
	if (_tmp1_) {
		GError* _tmp9_;
		_tmp9_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "failed to add record");
		_inner_error0_ = _tmp9_;
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		return NULL;
	}
	_tmp10_ = rec;
	_tmp11_ = _g_object_ref0 (_tmp10_);
	((WixlMsiTable*) self)->records = g_list_append (((WixlMsiTable*) self)->records, _tmp11_);
	result = rec;
	return result;
}

WixlMsiTableEnvironment*
wixl_msi_table_environment_construct (GType object_type)
{
	WixlMsiTableEnvironment * self = NULL;
	self = (WixlMsiTableEnvironment*) wixl_msi_table_construct (object_type);
	return self;
}

WixlMsiTableEnvironment*
wixl_msi_table_environment_new (void)
{
	return wixl_msi_table_environment_construct (WIXL_TYPE_MSI_TABLE_ENVIRONMENT);
}

static void
wixl_msi_table_environment_class_init (WixlMsiTableEnvironmentClass * klass,
                                       gpointer klass_data)
{
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	wixl_msi_table_environment_parent_class = g_type_class_peek_parent (klass);
	_tmp0_ = g_strdup ("Environment");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->name);
	WIXL_MSI_TABLE_CLASS (klass)->name = _tmp0_;
	_tmp1_ = g_strdup ("CREATE TABLE `Environment` (`Environment` CHAR(72) NOT NULL, `Name` CH" \
"AR(64) NOT NULL LOCALIZABLE, `Value` CHAR(255) LOCALIZABLE, `Component" \
"_` CHAR(72) NOT NULL PRIMARY KEY `Environment`)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_create);
	WIXL_MSI_TABLE_CLASS (klass)->sql_create = _tmp1_;
	_tmp2_ = g_strdup ("INSERT INTO `Environment` (`Environment`, `Name`, `Value`, `Component_" \
"`) VALUES (?, ?, ?, ?)");
	_g_free0 (WIXL_MSI_TABLE_CLASS (klass)->sql_insert);
	WIXL_MSI_TABLE_CLASS (klass)->sql_insert = _tmp2_;
}

static void
wixl_msi_table_environment_instance_init (WixlMsiTableEnvironment * self,
                                          gpointer klass)
{
}

static GType
wixl_msi_table_environment_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiTableEnvironmentClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_table_environment_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiTableEnvironment), 0, (GInstanceInitFunc) wixl_msi_table_environment_instance_init, NULL };
	GType wixl_msi_table_environment_type_id;
	wixl_msi_table_environment_type_id = g_type_register_static (WIXL_TYPE_MSI_TABLE, "WixlMsiTableEnvironment", &g_define_type_info, 0);
	return wixl_msi_table_environment_type_id;
}

GType
wixl_msi_table_environment_get_type (void)
{
	static volatile gsize wixl_msi_table_environment_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_table_environment_type_id__once)) {
		GType wixl_msi_table_environment_type_id;
		wixl_msi_table_environment_type_id = wixl_msi_table_environment_get_type_once ();
		g_once_init_leave (&wixl_msi_table_environment_type_id__once, wixl_msi_table_environment_type_id);
	}
	return wixl_msi_table_environment_type_id__once;
}

WixlMsiSummaryInfo*
wixl_msi_summary_info_construct (GType object_type)
{
	WixlMsiSummaryInfo * self = NULL;
	self = (WixlMsiSummaryInfo*) g_object_new (object_type, NULL);
	return self;
}

WixlMsiSummaryInfo*
wixl_msi_summary_info_new (void)
{
	return wixl_msi_summary_info_construct (WIXL_TYPE_MSI_SUMMARY_INFO);
}

void
wixl_msi_summary_info_set_property (WixlMsiSummaryInfo* self,
                                    LibmsiProperty prop,
                                    GValue* value,
                                    GError** error)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	if (G_VALUE_TYPE (value) == G_TYPE_STRING) {
		LibmsiSummaryInfo* _tmp0_;
		GValue _tmp1_;
		_tmp0_ = self->properties;
		_tmp1_ = *value;
		libmsi_summary_info_set_string (_tmp0_, prop, g_value_get_string (&_tmp1_), &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	} else {
		if (G_VALUE_TYPE (value) == G_TYPE_INT) {
			LibmsiSummaryInfo* _tmp2_;
			GValue _tmp3_;
			_tmp2_ = self->properties;
			_tmp3_ = *value;
			libmsi_summary_info_set_int (_tmp2_, prop, g_value_get_int (&_tmp3_), &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				return;
			}
		} else {
			if (G_VALUE_TYPE (value) == G_TYPE_UINT64) {
				LibmsiSummaryInfo* _tmp4_;
				GValue _tmp5_;
				_tmp4_ = self->properties;
				_tmp5_ = *value;
				libmsi_summary_info_set_filetime (_tmp4_, prop, g_value_get_uint64 (&_tmp5_), &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					return;
				}
			} else {
				g_critical ("msi.vala:1087: Unhandled property type");
			}
		}
	}
}

void
wixl_msi_summary_info_save (WixlMsiSummaryInfo* self,
                            LibmsiDatabase* db,
                            GError** error)
{
	LibmsiSummaryInfo* _tmp0_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (db != NULL);
	_tmp0_ = self->properties;
	libmsi_summary_info_save (_tmp0_, db, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_summary_info_set_codepage (WixlMsiSummaryInfo* self,
                                    gint value,
                                    GError** error)
{
	GValue _tmp0_ = {0};
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_value_init (&_tmp0_, G_TYPE_INT);
	g_value_set_int (&_tmp0_, value);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_CODEPAGE, &_tmp0_, &_inner_error0_);
	G_IS_VALUE (&_tmp0_) ? (g_value_unset (&_tmp0_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_summary_info_set_author (WixlMsiSummaryInfo* self,
                                  const gchar* value,
                                  GError** error)
{
	GValue _tmp0_ = {0};
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	g_value_init (&_tmp0_, G_TYPE_STRING);
	g_value_set_string (&_tmp0_, value);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_AUTHOR, &_tmp0_, &_inner_error0_);
	G_IS_VALUE (&_tmp0_) ? (g_value_unset (&_tmp0_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_summary_info_set_keywords (WixlMsiSummaryInfo* self,
                                    const gchar* value,
                                    GError** error)
{
	GValue _tmp0_ = {0};
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	g_value_init (&_tmp0_, G_TYPE_STRING);
	g_value_set_string (&_tmp0_, value);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_KEYWORDS, &_tmp0_, &_inner_error0_);
	G_IS_VALUE (&_tmp0_) ? (g_value_unset (&_tmp0_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

void
wixl_msi_summary_info_set_subject (WixlMsiSummaryInfo* self,
                                   const gchar* value,
                                   GError** error)
{
	GValue _tmp0_ = {0};
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	g_value_init (&_tmp0_, G_TYPE_STRING);
	g_value_set_string (&_tmp0_, value);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_SUBJECT, &_tmp0_, &_inner_error0_);
	G_IS_VALUE (&_tmp0_) ? (g_value_unset (&_tmp0_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

gchar*
wixl_msi_summary_info_get_subject (WixlMsiSummaryInfo* self)
{
	GError* _inner_error0_ = NULL;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	{
		const gchar* _tmp0_ = NULL;
		LibmsiSummaryInfo* _tmp1_;
		const gchar* _tmp2_;
		gchar* _tmp3_;
		_tmp1_ = self->properties;
		_tmp2_ = libmsi_summary_info_get_string (_tmp1_, LIBMSI_PROPERTY_SUBJECT, &_inner_error0_);
		_tmp0_ = _tmp2_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp3_ = g_strdup (_tmp0_);
		result = _tmp3_;
		return result;
	}
	goto __finally0;
	__catch0_g_error:
	{
		g_clear_error (&_inner_error0_);
		result = NULL;
		return result;
	}
	__finally0:
	g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
	g_clear_error (&_inner_error0_);
	return NULL;
}

void
wixl_msi_summary_info_set_comments (WixlMsiSummaryInfo* self,
                                    const gchar* value,
                                    GError** error)
{
	GValue _tmp0_ = {0};
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (value != NULL);
	g_value_init (&_tmp0_, G_TYPE_STRING);
	g_value_set_string (&_tmp0_, value);
	wixl_msi_summary_info_set_property (self, LIBMSI_PROPERTY_COMMENTS, &_tmp0_, &_inner_error0_);
	G_IS_VALUE (&_tmp0_) ? (g_value_unset (&_tmp0_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

gchar*
wixl_msi_summary_info_get_comments (WixlMsiSummaryInfo* self)
{
	GError* _inner_error0_ = NULL;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	{
		const gchar* _tmp0_ = NULL;
		LibmsiSummaryInfo* _tmp1_;
		const gchar* _tmp2_;
		gchar* _tmp3_;
		_tmp1_ = self->properties;
		_tmp2_ = libmsi_summary_info_get_string (_tmp1_, LIBMSI_PROPERTY_COMMENTS, &_inner_error0_);
		_tmp0_ = _tmp2_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp3_ = g_strdup (_tmp0_);
		result = _tmp3_;
		return result;
	}
	goto __finally0;
	__catch0_g_error:
	{
		g_clear_error (&_inner_error0_);
		result = NULL;
		return result;
	}
	__finally0:
	g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
	g_clear_error (&_inner_error0_);
	return NULL;
}

static GObject *
wixl_msi_summary_info_constructor (GType type,
                                   guint n_construct_properties,
                                   GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	WixlMsiSummaryInfo * self;
	GError* _inner_error0_ = NULL;
	parent_class = G_OBJECT_CLASS (wixl_msi_summary_info_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfo);
	{
		LibmsiSummaryInfo* _tmp0_ = NULL;
		LibmsiSummaryInfo* _tmp1_;
		LibmsiSummaryInfo* _tmp2_;
		_tmp1_ = libmsi_summary_info_new (NULL, G_MAXUINT, &_inner_error0_);
		_tmp0_ = _tmp1_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp2_ = _tmp0_;
		_tmp0_ = NULL;
		_g_object_unref0 (self->properties);
		self->properties = _tmp2_;
		_g_object_unref0 (_tmp0_);
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* _error_ = NULL;
		GError* _tmp3_;
		const gchar* _tmp4_;
		_error_ = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp3_ = _error_;
		_tmp4_ = _tmp3_->message;
		g_critical ("msi.vala:1072: %s", _tmp4_);
		_g_error_free0 (_error_);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
	}
	return obj;
}

static void
wixl_msi_summary_info_class_init (WixlMsiSummaryInfoClass * klass,
                                  gpointer klass_data)
{
	wixl_msi_summary_info_parent_class = g_type_class_peek_parent (klass);
	G_OBJECT_CLASS (klass)->constructor = wixl_msi_summary_info_constructor;
	G_OBJECT_CLASS (klass)->finalize = wixl_msi_summary_info_finalize;
}

static void
wixl_msi_summary_info_instance_init (WixlMsiSummaryInfo * self,
                                     gpointer klass)
{
}

static void
wixl_msi_summary_info_finalize (GObject * obj)
{
	WixlMsiSummaryInfo * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfo);
	_g_object_unref0 (self->properties);
	G_OBJECT_CLASS (wixl_msi_summary_info_parent_class)->finalize (obj);
}

static GType
wixl_msi_summary_info_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiSummaryInfoClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_summary_info_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiSummaryInfo), 0, (GInstanceInitFunc) wixl_msi_summary_info_instance_init, NULL };
	GType wixl_msi_summary_info_type_id;
	wixl_msi_summary_info_type_id = g_type_register_static (G_TYPE_OBJECT, "WixlMsiSummaryInfo", &g_define_type_info, 0);
	return wixl_msi_summary_info_type_id;
}

GType
wixl_msi_summary_info_get_type (void)
{
	static volatile gsize wixl_msi_summary_info_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_summary_info_type_id__once)) {
		GType wixl_msi_summary_info_type_id;
		wixl_msi_summary_info_type_id = wixl_msi_summary_info_get_type_once ();
		g_once_init_leave (&wixl_msi_summary_info_type_id__once, wixl_msi_summary_info_type_id);
	}
	return wixl_msi_summary_info_type_id__once;
}

static gint
wixl_msi_database_get_default_version (WixlMsiDatabase* self)
{
	gint result;
	g_return_val_if_fail (self != NULL, 0);
	if (self->arch == WIXL_ARCH_X86) {
		result = 100;
		return result;
	} else {
		result = 200;
		return result;
	}
}

static gchar*
wixl_msi_database_get_arch_template (WixlMsiDatabase* self)
{
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	if (self->arch == WIXL_ARCH_X86) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup ("Intel");
		result = _tmp0_;
		return result;
	} else {
		gchar* _tmp1_;
		_tmp1_ = g_strdup ("x64");
		result = _tmp1_;
		return result;
	}
}

static WixlExtension*
_vala_array_dup4 (WixlExtension* self,
                  gssize length)
{
	if (length > 0) {
		return _vala_memdup2 (self, length * sizeof (WixlExtension));
	}
	return NULL;
}

static gboolean
_vala_wixl_extension_array_contains (WixlExtension * stack,
                                     gssize stack_length,
                                     const WixlExtension needle)
{
	gssize i;
	for (i = 0; i < stack_length; i++) {
		if (needle == stack[i]) {
			return TRUE;
		}
	}
	return FALSE;
}

WixlMsiDatabase*
wixl_msi_database_construct (GType object_type,
                             WixlArch arch,
                             WixlExtension* extensions,
                             gint extensions_length1)
{
	WixlMsiDatabase * self = NULL;
	WixlExtension* _tmp0_;
	gint _tmp0__length1;
	WixlMsiSummaryInfo* _tmp1_;
	GHashFunc _tmp30_;
	GEqualFunc _tmp31_;
	GHashTable* _tmp32_;
	WixlMsiTableProperty* _tmp33_;
	WixlMsiTableIcon* _tmp34_;
	WixlMsiTableBinary* _tmp35_;
	WixlMsiTableMedia* _tmp36_;
	WixlMsiTableDirectory* _tmp37_;
	WixlMsiTableComponent* _tmp38_;
	WixlMsiTableFeature* _tmp39_;
	WixlMsiTableFeatureComponents* _tmp40_;
	WixlMsiTableRemoveFile* _tmp41_;
	WixlMsiTableRegistry* _tmp42_;
	WixlMsiTableCondition* _tmp43_;
	WixlMsiTableServiceControl* _tmp44_;
	WixlMsiTableServiceInstall* _tmp45_;
	WixlMsiTableFile* _tmp46_;
	WixlMsiTableIniFile* _tmp47_;
	WixlMsiTableRemoveIniFile* _tmp48_;
	WixlMsiTableAdminExecuteSequence* _tmp49_;
	WixlMsiTableAdminUISequence* _tmp50_;
	WixlMsiTableAdvtExecuteSequence* _tmp51_;
	WixlMsiTableInstallExecuteSequence* _tmp52_;
	WixlMsiTableInstallUISequence* _tmp53_;
	WixlMsiTableStreams* _tmp54_;
	WixlMsiTableShortcut* _tmp55_;
	WixlMsiTableUpgrade* _tmp56_;
	WixlMsiTableLaunchCondition* _tmp57_;
	WixlMsiTableAppSearch* _tmp58_;
	WixlMsiTableSignature* _tmp59_;
	WixlMsiTableCustomAction* _tmp60_;
	WixlMsiTableActionText* _tmp61_;
	WixlMsiTableRegLocator* _tmp62_;
	WixlMsiTableCreateFolder* _tmp63_;
	WixlMsiTableFileHash* _tmp64_;
	WixlMsiTableEnvironment* _tmp65_;
	WixlMsiTableAdminExecuteSequence* _tmp66_;
	WixlMsiTable* _tmp67_;
	WixlMsiTableAdminUISequence* _tmp68_;
	WixlMsiTable* _tmp69_;
	WixlMsiTableAdvtExecuteSequence* _tmp70_;
	WixlMsiTable* _tmp71_;
	WixlMsiTableInstallExecuteSequence* _tmp72_;
	WixlMsiTable* _tmp73_;
	WixlMsiTableInstallUISequence* _tmp74_;
	WixlMsiTable* _tmp75_;
	WixlMsiTableDirectory* _tmp76_;
	WixlMsiTable* _tmp77_;
	WixlMsiTableMedia* _tmp78_;
	WixlMsiTable* _tmp79_;
	WixlMsiTableProperty* _tmp80_;
	WixlMsiTable* _tmp81_;
	WixlMsiTableIcon* _tmp82_;
	WixlMsiTable* _tmp83_;
	WixlMsiTableBinary* _tmp84_;
	WixlMsiTable* _tmp85_;
	WixlMsiTableComponent* _tmp86_;
	WixlMsiTable* _tmp87_;
	WixlMsiTableFeature* _tmp88_;
	WixlMsiTable* _tmp89_;
	WixlMsiTableFeatureComponents* _tmp90_;
	WixlMsiTable* _tmp91_;
	WixlMsiTableRemoveFile* _tmp92_;
	WixlMsiTable* _tmp93_;
	WixlMsiTableRegistry* _tmp94_;
	WixlMsiTable* _tmp95_;
	WixlMsiTableCondition* _tmp96_;
	WixlMsiTable* _tmp97_;
	WixlMsiTableServiceControl* _tmp98_;
	WixlMsiTable* _tmp99_;
	WixlMsiTableServiceInstall* _tmp100_;
	WixlMsiTable* _tmp101_;
	WixlMsiTableFile* _tmp102_;
	WixlMsiTable* _tmp103_;
	WixlMsiTableIniFile* _tmp104_;
	WixlMsiTable* _tmp105_;
	WixlMsiTableRemoveIniFile* _tmp106_;
	WixlMsiTable* _tmp107_;
	WixlMsiTableStreams* _tmp108_;
	WixlMsiTable* _tmp109_;
	WixlMsiTableShortcut* _tmp110_;
	WixlMsiTable* _tmp111_;
	WixlMsiTableUpgrade* _tmp112_;
	WixlMsiTable* _tmp113_;
	WixlMsiTableLaunchCondition* _tmp114_;
	WixlMsiTable* _tmp115_;
	WixlMsiTableAppSearch* _tmp116_;
	WixlMsiTable* _tmp117_;
	WixlMsiTableSignature* _tmp118_;
	WixlMsiTable* _tmp119_;
	WixlMsiTableCustomAction* _tmp120_;
	WixlMsiTable* _tmp121_;
	WixlMsiTableActionText* _tmp122_;
	WixlMsiTable* _tmp123_;
	WixlMsiTableRegLocator* _tmp124_;
	WixlMsiTable* _tmp125_;
	WixlMsiTableCreateFolder* _tmp126_;
	WixlMsiTable* _tmp127_;
	WixlMsiTableFileHash* _tmp128_;
	WixlMsiTable* _tmp129_;
	WixlMsiTableEnvironment* _tmp130_;
	WixlMsiTable* _tmp131_;
	WixlMsiTableError* _tmp132_;
	WixlMsiTableValidation* _tmp133_;
	WixlMsiTable** _tmp134_;
	GError* _inner_error0_ = NULL;
	self = (WixlMsiDatabase*) g_object_new (object_type, NULL);
	self->arch = arch;
	_tmp0_ = (extensions != NULL) ? _vala_array_dup4 (extensions, extensions_length1) : extensions;
	_tmp0__length1 = extensions_length1;
	self->extensions = (g_free (self->extensions), NULL);
	self->extensions = _tmp0_;
	self->extensions_length1 = _tmp0__length1;
	self->_extensions_size_ = self->extensions_length1;
	_tmp1_ = wixl_msi_summary_info_new ();
	_g_object_unref0 (self->info);
	self->info = _tmp1_;
	{
		WixlMsiSummaryInfo* _tmp2_;
		GValue _tmp3_ = {0};
		WixlMsiSummaryInfo* _tmp4_;
		gchar* _tmp5_;
		gchar* _tmp6_;
		gchar* _tmp7_;
		GValue _tmp8_ = {0};
		WixlMsiSummaryInfo* _tmp9_;
		GValue _tmp10_ = {0};
		WixlMsiSummaryInfo* _tmp11_;
		GValue _tmp12_ = {0};
		gchar* _tmp13_ = NULL;
		gchar* _tmp14_;
		gchar* _tmp15_;
		WixlMsiSummaryInfo* _tmp16_;
		GValue _tmp17_ = {0};
		WixlMsiSummaryInfo* _tmp18_;
		GValue _tmp19_ = {0};
		WixlMsiSummaryInfo* _tmp20_;
		GValue _tmp21_ = {0};
		WixlMsiSummaryInfo* _tmp22_;
		GValue _tmp23_ = {0};
		WixlMsiSummaryInfo* _tmp24_;
		GValue _tmp25_ = {0};
		WixlMsiSummaryInfo* _tmp26_;
		GValue _tmp27_ = {0};
		_tmp2_ = self->info;
		g_value_init (&_tmp3_, G_TYPE_STRING);
		g_value_set_string (&_tmp3_, "Installation Database");
		wixl_msi_summary_info_set_property (_tmp2_, LIBMSI_PROPERTY_TITLE, &_tmp3_, &_inner_error0_);
		G_IS_VALUE (&_tmp3_) ? (g_value_unset (&_tmp3_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp4_ = self->info;
		_tmp5_ = wixl_msi_database_get_arch_template (self);
		_tmp6_ = _tmp5_;
		_tmp7_ = g_strdup_printf ("%s;1033", _tmp6_);
		g_value_init (&_tmp8_, G_TYPE_STRING);
		g_value_take_string (&_tmp8_, _tmp7_);
		wixl_msi_summary_info_set_property (_tmp4_, LIBMSI_PROPERTY_TEMPLATE, &_tmp8_, &_inner_error0_);
		G_IS_VALUE (&_tmp8_) ? (g_value_unset (&_tmp8_), NULL) : NULL;
		_g_free0 (_tmp6_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp9_ = self->info;
		g_value_init (&_tmp10_, G_TYPE_STRING);
		g_value_set_string (&_tmp10_, "Installer");
		wixl_msi_summary_info_set_property (_tmp9_, LIBMSI_PROPERTY_KEYWORDS, &_tmp10_, &_inner_error0_);
		G_IS_VALUE (&_tmp10_) ? (g_value_unset (&_tmp10_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp11_ = self->info;
		g_value_init (&_tmp12_, G_TYPE_INT);
		g_value_set_int (&_tmp12_, 1252);
		wixl_msi_summary_info_set_property (_tmp11_, LIBMSI_PROPERTY_CODEPAGE, &_tmp12_, &_inner_error0_);
		G_IS_VALUE (&_tmp12_) ? (g_value_unset (&_tmp12_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp14_ = g_strdup ("*");
		_tmp15_ = wixl_get_uuid (_tmp14_, &_inner_error0_);
		_tmp13_ = _tmp15_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp16_ = self->info;
		g_value_init (&_tmp17_, G_TYPE_STRING);
		g_value_set_string (&_tmp17_, _tmp13_);
		wixl_msi_summary_info_set_property (_tmp16_, LIBMSI_PROPERTY_UUID, &_tmp17_, &_inner_error0_);
		G_IS_VALUE (&_tmp17_) ? (g_value_unset (&_tmp17_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_free0 (_tmp13_);
			goto __catch0_g_error;
		}
		_tmp18_ = self->info;
		g_value_init (&_tmp19_, G_TYPE_UINT64);
		g_value_set_uint64 (&_tmp19_, wixl_time_to_filetime (wixl_now ()));
		wixl_msi_summary_info_set_property (_tmp18_, LIBMSI_PROPERTY_CREATED_TM, &_tmp19_, &_inner_error0_);
		G_IS_VALUE (&_tmp19_) ? (g_value_unset (&_tmp19_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_free0 (_tmp13_);
			goto __catch0_g_error;
		}
		_tmp20_ = self->info;
		g_value_init (&_tmp21_, G_TYPE_UINT64);
		g_value_set_uint64 (&_tmp21_, wixl_time_to_filetime (wixl_now ()));
		wixl_msi_summary_info_set_property (_tmp20_, LIBMSI_PROPERTY_LASTSAVED_TM, &_tmp21_, &_inner_error0_);
		G_IS_VALUE (&_tmp21_) ? (g_value_unset (&_tmp21_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_free0 (_tmp13_);
			goto __catch0_g_error;
		}
		_tmp22_ = self->info;
		g_value_init (&_tmp23_, G_TYPE_INT);
		g_value_set_int (&_tmp23_, wixl_msi_database_get_default_version (self));
		wixl_msi_summary_info_set_property (_tmp22_, LIBMSI_PROPERTY_VERSION, &_tmp23_, &_inner_error0_);
		G_IS_VALUE (&_tmp23_) ? (g_value_unset (&_tmp23_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_free0 (_tmp13_);
			goto __catch0_g_error;
		}
		_tmp24_ = self->info;
		g_value_init (&_tmp25_, G_TYPE_STRING);
		g_value_set_string (&_tmp25_, PACKAGE_STRING);
		wixl_msi_summary_info_set_property (_tmp24_, LIBMSI_PROPERTY_APPNAME, &_tmp25_, &_inner_error0_);
		G_IS_VALUE (&_tmp25_) ? (g_value_unset (&_tmp25_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_free0 (_tmp13_);
			goto __catch0_g_error;
		}
		_tmp26_ = self->info;
		g_value_init (&_tmp27_, G_TYPE_INT);
		g_value_set_int (&_tmp27_, 2);
		wixl_msi_summary_info_set_property (_tmp26_, LIBMSI_PROPERTY_SECURITY, &_tmp27_, &_inner_error0_);
		G_IS_VALUE (&_tmp27_) ? (g_value_unset (&_tmp27_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_free0 (_tmp13_);
			goto __catch0_g_error;
		}
		_g_free0 (_tmp13_);
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* _error_ = NULL;
		GError* _tmp28_;
		const gchar* _tmp29_;
		_error_ = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp28_ = _error_;
		_tmp29_ = _tmp28_->message;
		g_critical ("msi.vala:1216: %s", _tmp29_);
		_g_error_free0 (_error_);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return NULL;
	}
	_tmp30_ = g_str_hash;
	_tmp31_ = g_str_equal;
	_tmp32_ = g_hash_table_new_full (_tmp30_, _tmp31_, _g_free0_, _g_object_unref0_);
	_g_hash_table_unref0 (self->tables);
	self->tables = _tmp32_;
	_tmp33_ = wixl_msi_table_property_new ();
	_g_object_unref0 (self->table_property);
	self->table_property = _tmp33_;
	_tmp34_ = wixl_msi_table_icon_new ();
	_g_object_unref0 (self->table_icon);
	self->table_icon = _tmp34_;
	_tmp35_ = wixl_msi_table_binary_new ();
	_g_object_unref0 (self->table_binary);
	self->table_binary = _tmp35_;
	_tmp36_ = wixl_msi_table_media_new ();
	_g_object_unref0 (self->table_media);
	self->table_media = _tmp36_;
	_tmp37_ = wixl_msi_table_directory_new ();
	_g_object_unref0 (self->table_directory);
	self->table_directory = _tmp37_;
	_tmp38_ = wixl_msi_table_component_new ();
	_g_object_unref0 (self->table_component);
	self->table_component = _tmp38_;
	_tmp39_ = wixl_msi_table_feature_new ();
	_g_object_unref0 (self->table_feature);
	self->table_feature = _tmp39_;
	_tmp40_ = wixl_msi_table_feature_components_new ();
	_g_object_unref0 (self->table_feature_components);
	self->table_feature_components = _tmp40_;
	_tmp41_ = wixl_msi_table_remove_file_new ();
	_g_object_unref0 (self->table_remove_file);
	self->table_remove_file = _tmp41_;
	_tmp42_ = wixl_msi_table_registry_new ();
	_g_object_unref0 (self->table_registry);
	self->table_registry = _tmp42_;
	_tmp43_ = wixl_msi_table_condition_new ();
	_g_object_unref0 (self->table_condition);
	self->table_condition = _tmp43_;
	_tmp44_ = wixl_msi_table_service_control_new ();
	_g_object_unref0 (self->table_service_control);
	self->table_service_control = _tmp44_;
	_tmp45_ = wixl_msi_table_service_install_new ();
	_g_object_unref0 (self->table_service_install);
	self->table_service_install = _tmp45_;
	_tmp46_ = wixl_msi_table_file_new ();
	_g_object_unref0 (self->table_file);
	self->table_file = _tmp46_;
	_tmp47_ = wixl_msi_table_ini_file_new ();
	_g_object_unref0 (self->table_ini_file);
	self->table_ini_file = _tmp47_;
	_tmp48_ = wixl_msi_table_remove_ini_file_new ();
	_g_object_unref0 (self->table_remove_ini_file);
	self->table_remove_ini_file = _tmp48_;
	_tmp49_ = wixl_msi_table_admin_execute_sequence_new ();
	_g_object_unref0 (self->table_admin_execute_sequence);
	self->table_admin_execute_sequence = _tmp49_;
	_tmp50_ = wixl_msi_table_admin_ui_sequence_new ();
	_g_object_unref0 (self->table_admin_ui_sequence);
	self->table_admin_ui_sequence = _tmp50_;
	_tmp51_ = wixl_msi_table_advt_execute_sequence_new ();
	_g_object_unref0 (self->table_advt_execute_sequence);
	self->table_advt_execute_sequence = _tmp51_;
	_tmp52_ = wixl_msi_table_install_execute_sequence_new ();
	_g_object_unref0 (self->table_install_execute_sequence);
	self->table_install_execute_sequence = _tmp52_;
	_tmp53_ = wixl_msi_table_install_ui_sequence_new ();
	_g_object_unref0 (self->table_install_ui_sequence);
	self->table_install_ui_sequence = _tmp53_;
	_tmp54_ = wixl_msi_table_streams_new ();
	_g_object_unref0 (self->table_streams);
	self->table_streams = _tmp54_;
	_tmp55_ = wixl_msi_table_shortcut_new ();
	_g_object_unref0 (self->table_shortcut);
	self->table_shortcut = _tmp55_;
	_tmp56_ = wixl_msi_table_upgrade_new ();
	_g_object_unref0 (self->table_upgrade);
	self->table_upgrade = _tmp56_;
	_tmp57_ = wixl_msi_table_launch_condition_new ();
	_g_object_unref0 (self->table_launch_condition);
	self->table_launch_condition = _tmp57_;
	_tmp58_ = wixl_msi_table_app_search_new ();
	_g_object_unref0 (self->table_app_search);
	self->table_app_search = _tmp58_;
	_tmp59_ = wixl_msi_table_signature_new ();
	_g_object_unref0 (self->table_signature);
	self->table_signature = _tmp59_;
	_tmp60_ = wixl_msi_table_custom_action_new ();
	_g_object_unref0 (self->table_custom_action);
	self->table_custom_action = _tmp60_;
	_tmp61_ = wixl_msi_table_action_text_new ();
	_g_object_unref0 (self->table_action_text);
	self->table_action_text = _tmp61_;
	_tmp62_ = wixl_msi_table_reg_locator_new ();
	_g_object_unref0 (self->table_reg_locator);
	self->table_reg_locator = _tmp62_;
	_tmp63_ = wixl_msi_table_create_folder_new ();
	_g_object_unref0 (self->table_create_folder);
	self->table_create_folder = _tmp63_;
	_tmp64_ = wixl_msi_table_file_hash_new ();
	_g_object_unref0 (self->table_file_hash);
	self->table_file_hash = _tmp64_;
	_tmp65_ = wixl_msi_table_environment_new ();
	_g_object_unref0 (self->table_environment);
	self->table_environment = _tmp65_;
	_tmp66_ = self->table_admin_execute_sequence;
	_tmp67_ = _g_object_ref0 ((WixlMsiTable*) _tmp66_);
	_tmp68_ = self->table_admin_ui_sequence;
	_tmp69_ = _g_object_ref0 ((WixlMsiTable*) _tmp68_);
	_tmp70_ = self->table_advt_execute_sequence;
	_tmp71_ = _g_object_ref0 ((WixlMsiTable*) _tmp70_);
	_tmp72_ = self->table_install_execute_sequence;
	_tmp73_ = _g_object_ref0 ((WixlMsiTable*) _tmp72_);
	_tmp74_ = self->table_install_ui_sequence;
	_tmp75_ = _g_object_ref0 ((WixlMsiTable*) _tmp74_);
	_tmp76_ = self->table_directory;
	_tmp77_ = _g_object_ref0 ((WixlMsiTable*) _tmp76_);
	_tmp78_ = self->table_media;
	_tmp79_ = _g_object_ref0 ((WixlMsiTable*) _tmp78_);
	_tmp80_ = self->table_property;
	_tmp81_ = _g_object_ref0 ((WixlMsiTable*) _tmp80_);
	_tmp82_ = self->table_icon;
	_tmp83_ = _g_object_ref0 ((WixlMsiTable*) _tmp82_);
	_tmp84_ = self->table_binary;
	_tmp85_ = _g_object_ref0 ((WixlMsiTable*) _tmp84_);
	_tmp86_ = self->table_component;
	_tmp87_ = _g_object_ref0 ((WixlMsiTable*) _tmp86_);
	_tmp88_ = self->table_feature;
	_tmp89_ = _g_object_ref0 ((WixlMsiTable*) _tmp88_);
	_tmp90_ = self->table_feature_components;
	_tmp91_ = _g_object_ref0 ((WixlMsiTable*) _tmp90_);
	_tmp92_ = self->table_remove_file;
	_tmp93_ = _g_object_ref0 ((WixlMsiTable*) _tmp92_);
	_tmp94_ = self->table_registry;
	_tmp95_ = _g_object_ref0 ((WixlMsiTable*) _tmp94_);
	_tmp96_ = self->table_condition;
	_tmp97_ = _g_object_ref0 ((WixlMsiTable*) _tmp96_);
	_tmp98_ = self->table_service_control;
	_tmp99_ = _g_object_ref0 ((WixlMsiTable*) _tmp98_);
	_tmp100_ = self->table_service_install;
	_tmp101_ = _g_object_ref0 ((WixlMsiTable*) _tmp100_);
	_tmp102_ = self->table_file;
	_tmp103_ = _g_object_ref0 ((WixlMsiTable*) _tmp102_);
	_tmp104_ = self->table_ini_file;
	_tmp105_ = _g_object_ref0 ((WixlMsiTable*) _tmp104_);
	_tmp106_ = self->table_remove_ini_file;
	_tmp107_ = _g_object_ref0 ((WixlMsiTable*) _tmp106_);
	_tmp108_ = self->table_streams;
	_tmp109_ = _g_object_ref0 ((WixlMsiTable*) _tmp108_);
	_tmp110_ = self->table_shortcut;
	_tmp111_ = _g_object_ref0 ((WixlMsiTable*) _tmp110_);
	_tmp112_ = self->table_upgrade;
	_tmp113_ = _g_object_ref0 ((WixlMsiTable*) _tmp112_);
	_tmp114_ = self->table_launch_condition;
	_tmp115_ = _g_object_ref0 ((WixlMsiTable*) _tmp114_);
	_tmp116_ = self->table_app_search;
	_tmp117_ = _g_object_ref0 ((WixlMsiTable*) _tmp116_);
	_tmp118_ = self->table_signature;
	_tmp119_ = _g_object_ref0 ((WixlMsiTable*) _tmp118_);
	_tmp120_ = self->table_custom_action;
	_tmp121_ = _g_object_ref0 ((WixlMsiTable*) _tmp120_);
	_tmp122_ = self->table_action_text;
	_tmp123_ = _g_object_ref0 ((WixlMsiTable*) _tmp122_);
	_tmp124_ = self->table_reg_locator;
	_tmp125_ = _g_object_ref0 ((WixlMsiTable*) _tmp124_);
	_tmp126_ = self->table_create_folder;
	_tmp127_ = _g_object_ref0 ((WixlMsiTable*) _tmp126_);
	_tmp128_ = self->table_file_hash;
	_tmp129_ = _g_object_ref0 ((WixlMsiTable*) _tmp128_);
	_tmp130_ = self->table_environment;
	_tmp131_ = _g_object_ref0 ((WixlMsiTable*) _tmp130_);
	_tmp132_ = wixl_msi_table_error_new ();
	_tmp133_ = wixl_msi_table_validation_new ();
	_tmp134_ = g_new0 (WixlMsiTable*, 35 + 1);
	_tmp134_[0] = _tmp67_;
	_tmp134_[1] = _tmp69_;
	_tmp134_[2] = _tmp71_;
	_tmp134_[3] = _tmp73_;
	_tmp134_[4] = _tmp75_;
	_tmp134_[5] = _tmp77_;
	_tmp134_[6] = _tmp79_;
	_tmp134_[7] = _tmp81_;
	_tmp134_[8] = _tmp83_;
	_tmp134_[9] = _tmp85_;
	_tmp134_[10] = _tmp87_;
	_tmp134_[11] = _tmp89_;
	_tmp134_[12] = _tmp91_;
	_tmp134_[13] = _tmp93_;
	_tmp134_[14] = _tmp95_;
	_tmp134_[15] = _tmp97_;
	_tmp134_[16] = _tmp99_;
	_tmp134_[17] = _tmp101_;
	_tmp134_[18] = _tmp103_;
	_tmp134_[19] = _tmp105_;
	_tmp134_[20] = _tmp107_;
	_tmp134_[21] = _tmp109_;
	_tmp134_[22] = _tmp111_;
	_tmp134_[23] = _tmp113_;
	_tmp134_[24] = _tmp115_;
	_tmp134_[25] = _tmp117_;
	_tmp134_[26] = _tmp119_;
	_tmp134_[27] = _tmp121_;
	_tmp134_[28] = _tmp123_;
	_tmp134_[29] = _tmp125_;
	_tmp134_[30] = _tmp127_;
	_tmp134_[31] = _tmp129_;
	_tmp134_[32] = _tmp131_;
	_tmp134_[33] = (WixlMsiTable*) _tmp132_;
	_tmp134_[34] = (WixlMsiTable*) _tmp133_;
	{
		WixlMsiTable** t_collection = NULL;
		gint t_collection_length1 = 0;
		gint _t_collection_size_ = 0;
		gint t_it = 0;
		t_collection = _tmp134_;
		t_collection_length1 = 35;
		for (t_it = 0; t_it < t_collection_length1; t_it = t_it + 1) {
			WixlMsiTable* _tmp135_;
			WixlMsiTable* t = NULL;
			_tmp135_ = _g_object_ref0 (t_collection[t_it]);
			t = _tmp135_;
			{
				GHashTable* _tmp136_;
				WixlMsiTable* _tmp137_;
				const gchar* _tmp138_;
				gchar* _tmp139_;
				WixlMsiTable* _tmp140_;
				WixlMsiTable* _tmp141_;
				_tmp136_ = self->tables;
				_tmp137_ = t;
				_tmp138_ = WIXL_MSI_TABLE_GET_CLASS (_tmp137_)->name;
				_tmp139_ = g_strdup (_tmp138_);
				_tmp140_ = t;
				_tmp141_ = _g_object_ref0 (_tmp140_);
				g_hash_table_insert (_tmp136_, _tmp139_, _tmp141_);
				_g_object_unref0 (t);
			}
		}
		t_collection = (_vala_array_free (t_collection, t_collection_length1, (GDestroyNotify) g_object_unref), NULL);
	}
	if (_vala_wixl_extension_array_contains (extensions, extensions_length1, WIXL_EXTENSION_UI)) {
		WixlMsiTableCheckBox* _tmp142_;
		WixlMsiTableControl* _tmp143_;
		WixlMsiTableControlCondition* _tmp144_;
		WixlMsiTableControlEvent* _tmp145_;
		WixlMsiTableDialog* _tmp146_;
		WixlMsiTableEventMapping* _tmp147_;
		WixlMsiTableListBox* _tmp148_;
		WixlMsiTableRadioButton* _tmp149_;
		WixlMsiTableTextStyle* _tmp150_;
		WixlMsiTableUIText* _tmp151_;
		WixlMsiTableCheckBox* _tmp152_;
		WixlMsiTable* _tmp153_;
		WixlMsiTableControl* _tmp154_;
		WixlMsiTable* _tmp155_;
		WixlMsiTableControlCondition* _tmp156_;
		WixlMsiTable* _tmp157_;
		WixlMsiTableControlEvent* _tmp158_;
		WixlMsiTable* _tmp159_;
		WixlMsiTableDialog* _tmp160_;
		WixlMsiTable* _tmp161_;
		WixlMsiTableEventMapping* _tmp162_;
		WixlMsiTable* _tmp163_;
		WixlMsiTableListBox* _tmp164_;
		WixlMsiTable* _tmp165_;
		WixlMsiTableRadioButton* _tmp166_;
		WixlMsiTable* _tmp167_;
		WixlMsiTableTextStyle* _tmp168_;
		WixlMsiTable* _tmp169_;
		WixlMsiTableUIText* _tmp170_;
		WixlMsiTable* _tmp171_;
		WixlMsiTable** _tmp172_;
		_tmp142_ = wixl_msi_table_check_box_new ();
		_g_object_unref0 (self->table_check_box);
		self->table_check_box = _tmp142_;
		_tmp143_ = wixl_msi_table_control_new ();
		_g_object_unref0 (self->table_control);
		self->table_control = _tmp143_;
		_tmp144_ = wixl_msi_table_control_condition_new ();
		_g_object_unref0 (self->table_control_condition);
		self->table_control_condition = _tmp144_;
		_tmp145_ = wixl_msi_table_control_event_new ();
		_g_object_unref0 (self->table_control_event);
		self->table_control_event = _tmp145_;
		_tmp146_ = wixl_msi_table_dialog_new ();
		_g_object_unref0 (self->table_dialog);
		self->table_dialog = _tmp146_;
		_tmp147_ = wixl_msi_table_event_mapping_new ();
		_g_object_unref0 (self->table_event_mapping);
		self->table_event_mapping = _tmp147_;
		_tmp148_ = wixl_msi_table_list_box_new ();
		_g_object_unref0 (self->table_list_box);
		self->table_list_box = _tmp148_;
		_tmp149_ = wixl_msi_table_radio_button_new ();
		_g_object_unref0 (self->table_radio_button);
		self->table_radio_button = _tmp149_;
		_tmp150_ = wixl_msi_table_text_style_new ();
		_g_object_unref0 (self->table_text_style);
		self->table_text_style = _tmp150_;
		_tmp151_ = wixl_msi_table_ui_text_new ();
		_g_object_unref0 (self->table_ui_text);
		self->table_ui_text = _tmp151_;
		_tmp152_ = self->table_check_box;
		_tmp153_ = _g_object_ref0 ((WixlMsiTable*) _tmp152_);
		_tmp154_ = self->table_control;
		_tmp155_ = _g_object_ref0 ((WixlMsiTable*) _tmp154_);
		_tmp156_ = self->table_control_condition;
		_tmp157_ = _g_object_ref0 ((WixlMsiTable*) _tmp156_);
		_tmp158_ = self->table_control_event;
		_tmp159_ = _g_object_ref0 ((WixlMsiTable*) _tmp158_);
		_tmp160_ = self->table_dialog;
		_tmp161_ = _g_object_ref0 ((WixlMsiTable*) _tmp160_);
		_tmp162_ = self->table_event_mapping;
		_tmp163_ = _g_object_ref0 ((WixlMsiTable*) _tmp162_);
		_tmp164_ = self->table_list_box;
		_tmp165_ = _g_object_ref0 ((WixlMsiTable*) _tmp164_);
		_tmp166_ = self->table_radio_button;
		_tmp167_ = _g_object_ref0 ((WixlMsiTable*) _tmp166_);
		_tmp168_ = self->table_text_style;
		_tmp169_ = _g_object_ref0 ((WixlMsiTable*) _tmp168_);
		_tmp170_ = self->table_ui_text;
		_tmp171_ = _g_object_ref0 ((WixlMsiTable*) _tmp170_);
		_tmp172_ = g_new0 (WixlMsiTable*, 10 + 1);
		_tmp172_[0] = _tmp153_;
		_tmp172_[1] = _tmp155_;
		_tmp172_[2] = _tmp157_;
		_tmp172_[3] = _tmp159_;
		_tmp172_[4] = _tmp161_;
		_tmp172_[5] = _tmp163_;
		_tmp172_[6] = _tmp165_;
		_tmp172_[7] = _tmp167_;
		_tmp172_[8] = _tmp169_;
		_tmp172_[9] = _tmp171_;
		{
			WixlMsiTable** t_collection = NULL;
			gint t_collection_length1 = 0;
			gint _t_collection_size_ = 0;
			gint t_it = 0;
			t_collection = _tmp172_;
			t_collection_length1 = 10;
			for (t_it = 0; t_it < t_collection_length1; t_it = t_it + 1) {
				WixlMsiTable* _tmp173_;
				WixlMsiTable* t = NULL;
				_tmp173_ = _g_object_ref0 (t_collection[t_it]);
				t = _tmp173_;
				{
					GHashTable* _tmp174_;
					WixlMsiTable* _tmp175_;
					const gchar* _tmp176_;
					gchar* _tmp177_;
					WixlMsiTable* _tmp178_;
					WixlMsiTable* _tmp179_;
					_tmp174_ = self->tables;
					_tmp175_ = t;
					_tmp176_ = WIXL_MSI_TABLE_GET_CLASS (_tmp175_)->name;
					_tmp177_ = g_strdup (_tmp176_);
					_tmp178_ = t;
					_tmp179_ = _g_object_ref0 (_tmp178_);
					g_hash_table_insert (_tmp174_, _tmp177_, _tmp179_);
					_g_object_unref0 (t);
				}
			}
			t_collection = (_vala_array_free (t_collection, t_collection_length1, (GDestroyNotify) g_object_unref), NULL);
		}
	}
	return self;
}

WixlMsiDatabase*
wixl_msi_database_new (WixlArch arch,
                       WixlExtension* extensions,
                       gint extensions_length1)
{
	return wixl_msi_database_construct (WIXL_TYPE_MSI_DATABASE, arch, extensions, extensions_length1);
}

void
wixl_msi_database_build (WixlMsiDatabase* self,
                         const gchar* filename,
                         GError** error)
{
	gchar* name = NULL;
	WixlMsiTable* table = NULL;
	LibmsiDatabase* db = NULL;
	LibmsiDatabase* _tmp0_;
	WixlMsiSummaryInfo* _tmp1_;
	LibmsiDatabase* _tmp2_;
	GHashTableIter it = {0};
	GHashTable* _tmp3_;
	LibmsiDatabase* _tmp11_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (filename != NULL);
	_tmp0_ = libmsi_database_new (filename, (guint) LIBMSI_DB_FLAGS_CREATE, NULL, &_inner_error0_);
	db = _tmp0_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (table);
		_g_free0 (name);
		return;
	}
	_tmp1_ = self->info;
	_tmp2_ = db;
	wixl_msi_summary_info_save (_tmp1_, _tmp2_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (db);
		_g_object_unref0 (table);
		_g_free0 (name);
		return;
	}
	_tmp3_ = self->tables;
	g_hash_table_iter_init (&it, _tmp3_);
	while (TRUE) {
		gconstpointer _tmp4_ = NULL;
		gconstpointer _tmp5_ = NULL;
		gboolean _tmp6_;
		gchar* _tmp7_;
		WixlMsiTable* _tmp8_;
		WixlMsiTable* _tmp9_;
		LibmsiDatabase* _tmp10_;
		_tmp6_ = g_hash_table_iter_next (&it, (gpointer*) (&_tmp4_), (gpointer*) (&_tmp5_));
		_g_free0 (name);
		_tmp7_ = g_strdup ((const gchar*) _tmp4_);
		name = _tmp7_;
		_g_object_unref0 (table);
		_tmp8_ = _g_object_ref0 ((WixlMsiTable*) _tmp5_);
		table = _tmp8_;
		if (!_tmp6_) {
			break;
		}
		_tmp9_ = table;
		_tmp10_ = db;
		wixl_msi_table_create (_tmp9_, _tmp10_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (db);
			_g_object_unref0 (table);
			_g_free0 (name);
			return;
		}
	}
	_tmp11_ = db;
	libmsi_database_commit (_tmp11_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (db);
		_g_object_unref0 (table);
		_g_free0 (name);
		return;
	}
	_g_object_unref0 (db);
	_g_object_unref0 (table);
	_g_free0 (name);
}

static void
wixl_msi_database_class_init (WixlMsiDatabaseClass * klass,
                              gpointer klass_data)
{
	wixl_msi_database_parent_class = g_type_class_peek_parent (klass);
	G_OBJECT_CLASS (klass)->finalize = wixl_msi_database_finalize;
}

static void
wixl_msi_database_instance_init (WixlMsiDatabase * self,
                                 gpointer klass)
{
}

static void
wixl_msi_database_finalize (GObject * obj)
{
	WixlMsiDatabase * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_MSI_DATABASE, WixlMsiDatabase);
	self->extensions = (g_free (self->extensions), NULL);
	_g_object_unref0 (self->info);
	_g_object_unref0 (self->table_property);
	_g_object_unref0 (self->table_icon);
	_g_object_unref0 (self->table_binary);
	_g_object_unref0 (self->table_media);
	_g_object_unref0 (self->table_directory);
	_g_object_unref0 (self->table_component);
	_g_object_unref0 (self->table_condition);
	_g_object_unref0 (self->table_feature);
	_g_object_unref0 (self->table_feature_components);
	_g_object_unref0 (self->table_remove_file);
	_g_object_unref0 (self->table_registry);
	_g_object_unref0 (self->table_service_control);
	_g_object_unref0 (self->table_service_install);
	_g_object_unref0 (self->table_file);
	_g_object_unref0 (self->table_ini_file);
	_g_object_unref0 (self->table_remove_ini_file);
	_g_object_unref0 (self->table_admin_execute_sequence);
	_g_object_unref0 (self->table_admin_ui_sequence);
	_g_object_unref0 (self->table_advt_execute_sequence);
	_g_object_unref0 (self->table_install_execute_sequence);
	_g_object_unref0 (self->table_install_ui_sequence);
	_g_object_unref0 (self->table_streams);
	_g_object_unref0 (self->table_shortcut);
	_g_object_unref0 (self->table_upgrade);
	_g_object_unref0 (self->table_launch_condition);
	_g_object_unref0 (self->table_app_search);
	_g_object_unref0 (self->table_custom_action);
	_g_object_unref0 (self->table_action_text);
	_g_object_unref0 (self->table_reg_locator);
	_g_object_unref0 (self->table_create_folder);
	_g_object_unref0 (self->table_signature);
	_g_object_unref0 (self->table_file_hash);
	_g_object_unref0 (self->table_check_box);
	_g_object_unref0 (self->table_event_mapping);
	_g_object_unref0 (self->table_control);
	_g_object_unref0 (self->table_ui_text);
	_g_object_unref0 (self->table_text_style);
	_g_object_unref0 (self->table_dialog);
	_g_object_unref0 (self->table_control_event);
	_g_object_unref0 (self->table_control_condition);
	_g_object_unref0 (self->table_list_box);
	_g_object_unref0 (self->table_radio_button);
	_g_object_unref0 (self->table_environment);
	_g_hash_table_unref0 (self->tables);
	G_OBJECT_CLASS (wixl_msi_database_parent_class)->finalize (obj);
}

static GType
wixl_msi_database_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (WixlMsiDatabaseClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_msi_database_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlMsiDatabase), 0, (GInstanceInitFunc) wixl_msi_database_instance_init, NULL };
	GType wixl_msi_database_type_id;
	wixl_msi_database_type_id = g_type_register_static (G_TYPE_OBJECT, "WixlMsiDatabase", &g_define_type_info, 0);
	return wixl_msi_database_type_id;
}

GType
wixl_msi_database_get_type (void)
{
	static volatile gsize wixl_msi_database_type_id__once = 0;
	if (g_once_init_enter (&wixl_msi_database_type_id__once)) {
		GType wixl_msi_database_type_id;
		wixl_msi_database_type_id = wixl_msi_database_get_type_once ();
		g_once_init_leave (&wixl_msi_database_type_id__once, wixl_msi_database_type_id);
	}
	return wixl_msi_database_type_id__once;
}

static void
_vala_array_destroy (gpointer array,
                     gssize array_length,
                     GDestroyNotify destroy_func)
{
	if ((array != NULL) && (destroy_func != NULL)) {
		gssize i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}

static void
_vala_array_free (gpointer array,
                  gssize array_length,
                  GDestroyNotify destroy_func)
{
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}

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;
}

