// Copyright (c) 2012-2019 Matt Campbell
// MIT license (see License.txt)

// AUTOGENERATED FILE - DO NOT EDIT

// clang-format off

#pragma once

#include "bb.h" // pull in stdint.h warning suppression for VS 2019 16.4 when compiling .c files
#include "parson/parson.h"

#if defined(__cplusplus)
extern "C" {
#endif

struct sb_s;
struct sbs_s;
struct sdictEntry_s;
struct sdict_s;
struct uuid_node_s;
struct fontConfig_s;
struct fontConfigs_s;
struct tagPOINT;
struct tagRECT;
struct tagWINDOWPLACEMENT;
struct configWhitelistEntry_s;
struct configWhitelist_s;
struct openTargetEntry_s;
struct openTargetList_s;
struct pathFixupEntry_s;
struct pathFixupList_s;
struct tag_tooltipConfig;
struct tag_sizeConfig;
struct config_named_filter_t;
struct config_named_filters_t;
struct config_s;
struct deviceCodes_s;
struct message_queue_message_s;
struct message_queue_messages_s;
struct _FILETIME;
struct new_recording_s;
struct recordings_tab_config_s;
struct recordings_config_s;
struct site_config_named_filter_t;
struct site_config_named_filters_t;
struct updateConfig_s;
struct site_config_s;
struct sbsHashEntry;
struct tag_s;
struct tags_s;
struct tags_config_s;
struct sbsHashChain;
struct sbsHashTable;
struct tagCategory_s;
struct tagCategories_s;
struct tagData_s;
struct color_config_s;
struct colors_config_s;
struct theme_config_s;
struct uuidState_s;
struct view_pieInstance_s;
struct view_pieInstances_s;
struct view_config_thread_s;
struct view_config_threads_s;
struct view_config_file_s;
struct view_config_files_s;
struct view_config_category_s;
struct view_config_categories_s;
struct view_config_column_s;
struct view_config_columns_s;
struct view_console_history_entry_t;
struct view_console_entries_t;
struct view_console_history_t;
struct view_config_s;
struct view_config_log_s;
struct view_config_logs_s;
struct view_config_log_index_s;
struct view_config_log_indices_s;
struct view_session_config_s;
struct vfilter_token_s;
struct vfilter_tokens_s;
struct vfilter_error_s;
struct vfilter_result_s;
struct vfilter_results_s;
struct named_vfilters_s;
struct vfilter_s;

typedef struct sb_s sb_t;
typedef struct sbs_s sbs_t;
typedef struct sdictEntry_s sdictEntry_t;
typedef struct sdict_s sdict_t;
typedef struct uuid_node_s uuid_node_t;
typedef struct fontConfig_s fontConfig_t;
typedef struct fontConfigs_s fontConfigs_t;
typedef struct tagPOINT POINT;
typedef struct tagRECT RECT;
typedef struct tagWINDOWPLACEMENT WINDOWPLACEMENT;
typedef struct configWhitelistEntry_s configWhitelistEntry_t;
typedef struct configWhitelist_s configWhitelist_t;
typedef struct openTargetEntry_s openTargetEntry_t;
typedef struct openTargetList_s openTargetList_t;
typedef struct pathFixupEntry_s pathFixupEntry_t;
typedef struct pathFixupList_s pathFixupList_t;
typedef struct tag_tooltipConfig tooltipConfig;
typedef struct tag_sizeConfig sizeConfig;
typedef struct config_named_filter_t config_named_filter_t;
typedef struct config_named_filters_t config_named_filters_t;
typedef struct config_s config_t;
typedef struct deviceCodes_s deviceCodes_t;
typedef struct message_queue_message_s message_queue_message_t;
typedef struct message_queue_messages_s message_queue_messages_t;
typedef struct _FILETIME FILETIME;
typedef struct new_recording_s new_recording_t;
typedef struct recordings_tab_config_s recordings_tab_config_t;
typedef struct recordings_config_s recordings_config_t;
typedef struct site_config_named_filter_t site_config_named_filter_t;
typedef struct site_config_named_filters_t site_config_named_filters_t;
typedef struct updateConfig_s updateConfig_t;
typedef struct site_config_s site_config_t;
typedef struct sbsHashEntry sbsHashEntry;
typedef struct tag_s tag_t;
typedef struct tags_s tags_t;
typedef struct tags_config_s tags_config_t;
typedef struct sbsHashChain sbsHashChain;
typedef struct sbsHashTable sbsHashTable;
typedef struct tagCategory_s tagCategory_t;
typedef struct tagCategories_s tagCategories_t;
typedef struct tagData_s tagData_t;
typedef struct color_config_s color_config_t;
typedef struct colors_config_s colors_config_t;
typedef struct theme_config_s theme_config_t;
typedef struct uuidState_s uuidState_t;
typedef struct view_pieInstance_s view_pieInstance_t;
typedef struct view_pieInstances_s view_pieInstances_t;
typedef struct view_config_thread_s view_config_thread_t;
typedef struct view_config_threads_s view_config_threads_t;
typedef struct view_config_file_s view_config_file_t;
typedef struct view_config_files_s view_config_files_t;
typedef struct view_config_category_s view_config_category_t;
typedef struct view_config_categories_s view_config_categories_t;
typedef struct view_config_column_s view_config_column_t;
typedef struct view_config_columns_s view_config_columns_t;
typedef struct view_console_history_entry_t view_console_history_entry_t;
typedef struct view_console_entries_t view_console_history_entries_t;
typedef struct view_console_history_t view_console_history_t;
typedef struct view_config_s view_config_t;
typedef struct view_config_log_s view_config_log_t;
typedef struct view_config_logs_s view_config_logs_t;
typedef struct view_config_log_index_s view_config_log_index_t;
typedef struct view_config_log_indices_s view_config_log_indices_t;
typedef struct view_session_config_s view_session_config_t;
typedef struct vfilter_token_s vfilter_token_t;
typedef struct vfilter_tokens_s vfilter_tokens_t;
typedef struct vfilter_error_s vfilter_error_t;
typedef struct vfilter_result_s vfilter_result_t;
typedef struct vfilter_results_s vfilter_results_t;
typedef struct named_vfilters_s named_vfilters_t;
typedef struct vfilter_s vfilter_t;

typedef enum tag_configColorUsage configColorUsage;
typedef enum viewTileMode_t viewTileMode_t;
typedef enum recording_tab_t recording_tab_t;
typedef enum recording_sort_e recording_sort_t;
typedef enum recording_group_e recording_group_t;
typedef enum recording_type_e recording_type_t;
typedef enum tag_visibility_t tag_visibility_t;
typedef enum tag_styleColor_e styleColor_e;
typedef enum vfilter_type_e vfilter_type_e;
typedef enum vfilter_token_type_e vfilter_token_type_e;

sb_t json_deserialize_sb_t(JSON_Value *src);
sbs_t json_deserialize_sbs_t(JSON_Value *src);
sdictEntry_t json_deserialize_sdictEntry_t(JSON_Value *src);
sdict_t json_deserialize_sdict_t(JSON_Value *src);
uuid_node_t json_deserialize_uuid_node_t(JSON_Value *src);
fontConfig_t json_deserialize_fontConfig_t(JSON_Value *src);
fontConfigs_t json_deserialize_fontConfigs_t(JSON_Value *src);
POINT json_deserialize_POINT(JSON_Value *src);
RECT json_deserialize_RECT(JSON_Value *src);
WINDOWPLACEMENT json_deserialize_WINDOWPLACEMENT(JSON_Value *src);
configWhitelistEntry_t json_deserialize_configWhitelistEntry_t(JSON_Value *src);
configWhitelist_t json_deserialize_configWhitelist_t(JSON_Value *src);
openTargetEntry_t json_deserialize_openTargetEntry_t(JSON_Value *src);
openTargetList_t json_deserialize_openTargetList_t(JSON_Value *src);
pathFixupEntry_t json_deserialize_pathFixupEntry_t(JSON_Value *src);
pathFixupList_t json_deserialize_pathFixupList_t(JSON_Value *src);
tooltipConfig json_deserialize_tooltipConfig(JSON_Value *src);
sizeConfig json_deserialize_sizeConfig(JSON_Value *src);
config_named_filter_t json_deserialize_config_named_filter_t(JSON_Value *src);
config_named_filters_t json_deserialize_config_named_filters_t(JSON_Value *src);
config_t json_deserialize_config_t(JSON_Value *src);
deviceCodes_t json_deserialize_deviceCodes_t(JSON_Value *src);
FILETIME json_deserialize_FILETIME(JSON_Value *src);
new_recording_t json_deserialize_new_recording_t(JSON_Value *src);
recordings_tab_config_t json_deserialize_recordings_tab_config_t(JSON_Value *src);
recordings_config_t json_deserialize_recordings_config_t(JSON_Value *src);
site_config_named_filter_t json_deserialize_site_config_named_filter_t(JSON_Value *src);
site_config_named_filters_t json_deserialize_site_config_named_filters_t(JSON_Value *src);
updateConfig_t json_deserialize_updateConfig_t(JSON_Value *src);
site_config_t json_deserialize_site_config_t(JSON_Value *src);
sbsHashEntry json_deserialize_sbsHashEntry(JSON_Value *src);
tag_t json_deserialize_tag_t(JSON_Value *src);
tags_t json_deserialize_tags_t(JSON_Value *src);
tags_config_t json_deserialize_tags_config_t(JSON_Value *src);
color_config_t json_deserialize_color_config_t(JSON_Value *src);
colors_config_t json_deserialize_colors_config_t(JSON_Value *src);
theme_config_t json_deserialize_theme_config_t(JSON_Value *src);
uuidState_t json_deserialize_uuidState_t(JSON_Value *src);
view_pieInstance_t json_deserialize_view_pieInstance_t(JSON_Value *src);
view_pieInstances_t json_deserialize_view_pieInstances_t(JSON_Value *src);
view_config_thread_t json_deserialize_view_config_thread_t(JSON_Value *src);
view_config_threads_t json_deserialize_view_config_threads_t(JSON_Value *src);
view_config_file_t json_deserialize_view_config_file_t(JSON_Value *src);
view_config_files_t json_deserialize_view_config_files_t(JSON_Value *src);
view_config_category_t json_deserialize_view_config_category_t(JSON_Value *src);
view_config_categories_t json_deserialize_view_config_categories_t(JSON_Value *src);
view_config_column_t json_deserialize_view_config_column_t(JSON_Value *src);
view_config_columns_t json_deserialize_view_config_columns_t(JSON_Value *src);
view_console_history_entry_t json_deserialize_view_console_history_entry_t(JSON_Value *src);
view_console_history_entries_t json_deserialize_view_console_history_entries_t(JSON_Value *src);
view_console_history_t json_deserialize_view_console_history_t(JSON_Value *src);
view_config_t json_deserialize_view_config_t(JSON_Value *src);
view_config_log_t json_deserialize_view_config_log_t(JSON_Value *src);
view_config_logs_t json_deserialize_view_config_logs_t(JSON_Value *src);
view_config_log_index_t json_deserialize_view_config_log_index_t(JSON_Value *src);
view_config_log_indices_t json_deserialize_view_config_log_indices_t(JSON_Value *src);
view_session_config_t json_deserialize_view_session_config_t(JSON_Value *src);

JSON_Value *json_serialize_sb_t(const sb_t *src);
JSON_Value *json_serialize_sbs_t(const sbs_t *src);
JSON_Value *json_serialize_sdictEntry_t(const sdictEntry_t *src);
JSON_Value *json_serialize_sdict_t(const sdict_t *src);
JSON_Value *json_serialize_uuid_node_t(const uuid_node_t *src);
JSON_Value *json_serialize_fontConfig_t(const fontConfig_t *src);
JSON_Value *json_serialize_fontConfigs_t(const fontConfigs_t *src);
JSON_Value *json_serialize_POINT(const POINT *src);
JSON_Value *json_serialize_RECT(const RECT *src);
JSON_Value *json_serialize_WINDOWPLACEMENT(const WINDOWPLACEMENT *src);
JSON_Value *json_serialize_configWhitelistEntry_t(const configWhitelistEntry_t *src);
JSON_Value *json_serialize_configWhitelist_t(const configWhitelist_t *src);
JSON_Value *json_serialize_openTargetEntry_t(const openTargetEntry_t *src);
JSON_Value *json_serialize_openTargetList_t(const openTargetList_t *src);
JSON_Value *json_serialize_pathFixupEntry_t(const pathFixupEntry_t *src);
JSON_Value *json_serialize_pathFixupList_t(const pathFixupList_t *src);
JSON_Value *json_serialize_tooltipConfig(const tooltipConfig *src);
JSON_Value *json_serialize_sizeConfig(const sizeConfig *src);
JSON_Value *json_serialize_config_named_filter_t(const config_named_filter_t *src);
JSON_Value *json_serialize_config_named_filters_t(const config_named_filters_t *src);
JSON_Value *json_serialize_config_t(const config_t *src);
JSON_Value *json_serialize_deviceCodes_t(const deviceCodes_t *src);
JSON_Value *json_serialize_FILETIME(const FILETIME *src);
JSON_Value *json_serialize_new_recording_t(const new_recording_t *src);
JSON_Value *json_serialize_recordings_tab_config_t(const recordings_tab_config_t *src);
JSON_Value *json_serialize_recordings_config_t(const recordings_config_t *src);
JSON_Value *json_serialize_site_config_named_filter_t(const site_config_named_filter_t *src);
JSON_Value *json_serialize_site_config_named_filters_t(const site_config_named_filters_t *src);
JSON_Value *json_serialize_updateConfig_t(const updateConfig_t *src);
JSON_Value *json_serialize_site_config_t(const site_config_t *src);
JSON_Value *json_serialize_sbsHashEntry(const sbsHashEntry *src);
JSON_Value *json_serialize_tag_t(const tag_t *src);
JSON_Value *json_serialize_tags_t(const tags_t *src);
JSON_Value *json_serialize_tags_config_t(const tags_config_t *src);
JSON_Value *json_serialize_color_config_t(const color_config_t *src);
JSON_Value *json_serialize_colors_config_t(const colors_config_t *src);
JSON_Value *json_serialize_theme_config_t(const theme_config_t *src);
JSON_Value *json_serialize_uuidState_t(const uuidState_t *src);
JSON_Value *json_serialize_view_pieInstance_t(const view_pieInstance_t *src);
JSON_Value *json_serialize_view_pieInstances_t(const view_pieInstances_t *src);
JSON_Value *json_serialize_view_config_thread_t(const view_config_thread_t *src);
JSON_Value *json_serialize_view_config_threads_t(const view_config_threads_t *src);
JSON_Value *json_serialize_view_config_file_t(const view_config_file_t *src);
JSON_Value *json_serialize_view_config_files_t(const view_config_files_t *src);
JSON_Value *json_serialize_view_config_category_t(const view_config_category_t *src);
JSON_Value *json_serialize_view_config_categories_t(const view_config_categories_t *src);
JSON_Value *json_serialize_view_config_column_t(const view_config_column_t *src);
JSON_Value *json_serialize_view_config_columns_t(const view_config_columns_t *src);
JSON_Value *json_serialize_view_console_history_entry_t(const view_console_history_entry_t *src);
JSON_Value *json_serialize_view_console_history_entries_t(const view_console_history_entries_t *src);
JSON_Value *json_serialize_view_console_history_t(const view_console_history_t *src);
JSON_Value *json_serialize_view_config_t(const view_config_t *src);
JSON_Value *json_serialize_view_config_log_t(const view_config_log_t *src);
JSON_Value *json_serialize_view_config_logs_t(const view_config_logs_t *src);
JSON_Value *json_serialize_view_config_log_index_t(const view_config_log_index_t *src);
JSON_Value *json_serialize_view_config_log_indices_t(const view_config_log_indices_t *src);
JSON_Value *json_serialize_view_session_config_t(const view_session_config_t *src);


configColorUsage json_deserialize_configColorUsage(JSON_Value *src);
viewTileMode_t json_deserialize_viewTileMode_t(JSON_Value *src);
recording_tab_t json_deserialize_recording_tab_t(JSON_Value *src);
recording_sort_t json_deserialize_recording_sort_t(JSON_Value *src);
recording_group_t json_deserialize_recording_group_t(JSON_Value *src);
recording_type_t json_deserialize_recording_type_t(JSON_Value *src);
tag_visibility_t json_deserialize_tag_visibility_t(JSON_Value *src);
styleColor_e json_deserialize_styleColor_e(JSON_Value *src);
vfilter_type_e json_deserialize_vfilter_type_e(JSON_Value *src);
vfilter_token_type_e json_deserialize_vfilter_token_type_e(JSON_Value *src);

JSON_Value *json_serialize_configColorUsage(const configColorUsage src);
JSON_Value *json_serialize_viewTileMode_t(const viewTileMode_t src);
JSON_Value *json_serialize_recording_tab_t(const recording_tab_t src);
JSON_Value *json_serialize_recording_sort_t(const recording_sort_t src);
JSON_Value *json_serialize_recording_group_t(const recording_group_t src);
JSON_Value *json_serialize_recording_type_t(const recording_type_t src);
JSON_Value *json_serialize_tag_visibility_t(const tag_visibility_t src);
JSON_Value *json_serialize_styleColor_e(const styleColor_e src);
JSON_Value *json_serialize_vfilter_type_e(const vfilter_type_e src);
JSON_Value *json_serialize_vfilter_token_type_e(const vfilter_token_type_e src);


configColorUsage configColorUsage_from_string(const char *src);
viewTileMode_t viewTileMode_t_from_string(const char *src);
recording_tab_t recording_tab_t_from_string(const char *src);
recording_sort_t recording_sort_t_from_string(const char *src);
recording_group_t recording_group_t_from_string(const char *src);
recording_type_t recording_type_t_from_string(const char *src);
tag_visibility_t tag_visibility_t_from_string(const char *src);
styleColor_e styleColor_e_from_string(const char *src);
vfilter_type_e vfilter_type_e_from_string(const char *src);
vfilter_token_type_e vfilter_token_type_e_from_string(const char *src);

const char *string_from_configColorUsage(const configColorUsage src);
const char *string_from_viewTileMode_t(const viewTileMode_t src);
const char *string_from_recording_tab_t(const recording_tab_t src);
const char *string_from_recording_sort_t(const recording_sort_t src);
const char *string_from_recording_group_t(const recording_group_t src);
const char *string_from_recording_type_t(const recording_type_t src);
const char *string_from_tag_visibility_t(const tag_visibility_t src);
const char *string_from_styleColor_e(const styleColor_e src);
const char *string_from_vfilter_type_e(const vfilter_type_e src);
const char *string_from_vfilter_token_type_e(const vfilter_token_type_e src);

#if defined(__cplusplus)
} // extern "C"
#endif
