/*****************************************************************************\
 *  data_t parser plugin interface
 *****************************************************************************
 *  Copyright (C) SchedMD LLC.
 *
 *  This file is part of Slurm, a resource management program.
 *  For details, see <https://slurm.schedmd.com/>.
 *  Please also read the included file: DISCLAIMER.
 *
 *  Slurm is free software; you can redistribute it and/or modify it under
 *  the terms of the GNU General Public License as published by the Free
 *  Software Foundation; either version 2 of the License, or (at your option)
 *  any later version.
 *
 *  In addition, as a special exception, the copyright holders give permission
 *  to link the code of portions of this program with the OpenSSL library under
 *  certain conditions as described in each individual source file, and
 *  distribute linked combinations including the two. You must obey the GNU
 *  General Public License in all respects for all of the code used other than
 *  OpenSSL. If you modify file(s) with this exception, you may extend this
 *  exception to your version of the file(s), but you are not obligated to do
 *  so. If you do not wish to do so, delete this exception statement from your
 *  version.  If you delete this exception statement from all source files in
 *  the program, then also delete it here.
 *
 *  Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
 *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 *  details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with Slurm; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
\*****************************************************************************/

#ifndef _INTERFACES_DATA_PARSER_H
#define _INTERFACES_DATA_PARSER_H

#include "src/common/data.h"
#include "src/common/openapi.h"

/*
 * Enumeration of all parsers that data_parser plugins will handle.
 * Warning: Not all data_parsers implement every enum
 * Warning: Never hard code the value of an enum as assigned values may change
 *	any time.
 *
 * Each enum must correspond to exactly 1 type:
 * 	'char *' and 'char' and 'unsigned char' and 'unsigned char *' would be
 * 	considered 4 different parsers.
 *
 * When an enum has a _PTR suffix, then it must be a pointer to the same type
 * without the _PTR suffix.
 *
 */
typedef enum {
	DATA_PARSER_TYPE_INVALID = 0,
	DATA_PARSER_BITSTR, /* bitstr_t */
	DATA_PARSER_BITSTR_PTR, /* bitstr_t* */
	DATA_PARSER_STRING, /* char* */
	DATA_PARSER_UINT16, /* uint16_t */
	DATA_PARSER_UINT16_NO_VAL, /* uint16_t - may be NO_VAL16 or INFINITE16 */
	DATA_PARSER_UINT16_NO_VAL_STRUCT, /* UINT16_NO_VAL_t */
	DATA_PARSER_UINT16_NO_VAL_STRUCT_PTR, /* UINT16_NO_VAL_t* */
	DATA_PARSER_UINT32, /* uint32_t */
	DATA_PARSER_UINT32_NO_VAL, /* uint32_t - maybe NO_VAL or INFINITE*/
	DATA_PARSER_UINT32_NO_VAL_STRUCT, /* UINT32_NO_VAL_t */
	DATA_PARSER_UINT32_NO_VAL_STRUCT_PTR, /* UINT32_NO_VAL_t* */
	DATA_PARSER_UINT64, /* uint64_t */
	DATA_PARSER_UINT64_NO_VAL, /* uint64_t - NO_VAL64 or INFINTE64 */
	DATA_PARSER_UINT64_NO_VAL_STRUCT, /* UINT64_NO_VAL_t */
	DATA_PARSER_UINT64_NO_VAL_STRUCT_PTR, /* UINT64_NO_VAL_t* */
	DATA_PARSER_INT32, /* int32_t */
	DATA_PARSER_INT32_PTR, /* int32_t* */
	DATA_PARSER_INT32_LIST, /* list_t* int32_t* */
	DATA_PARSER_INT64, /* int64_t */
	DATA_PARSER_INT64_NO_VAL, /* int64_t - NO_VAL64 or INFINTE64 */
	DATA_PARSER_INT64_NO_VAL_STRUCT, /* INT64_NO_VAL_t */
	DATA_PARSER_INT64_NO_VAL_STRUCT_PTR, /* INT64_NO_VAL_t* */
	DATA_PARSER_FLOAT128, /* long double */
	DATA_PARSER_FLOAT64, /* double */
	DATA_PARSER_FLOAT64_NO_VAL, /* double - may be NO_VAL of INFINITE */
	DATA_PARSER_FLOAT64_NO_VAL_STRUCT, /* FLOAT64_NO_VAL_t */
	DATA_PARSER_FLOAT64_NO_VAL_STRUCT_PTR, /* FLOAT64_NO_VAL_t* */
	DATA_PARSER_BOOL, /* uint8_t */
	DATA_PARSER_BOOL16, /* uint16_t */
	DATA_PARSER_BOOL16_NO_VAL, /* uint16_t - false if NO_VAL16 */
	DATA_PARSER_CSV_STRING, /* char * - comma delimited list stored as a string */
	DATA_PARSER_CSV_STRING_LIST, /* list_t of char* - comma delimited list stored as a list_t* */
	DATA_PARSER_OPENAPI_ACCOUNTS_ADD_COND_RESP, /* openapi_resp_accounts_add_cond_t */
	DATA_PARSER_OPENAPI_ACCOUNTS_ADD_COND_RESP_PTR, /* openapi_resp_accounts_add_cond_t* */
	DATA_PARSER_OPENAPI_ACCOUNTS_ADD_COND_RESP_STR, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_ACCOUNTS_ADD_COND_RESP_STR_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_ACCOUNTS_REMOVED_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_ACCOUNTS_REMOVED_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_ACCOUNTS_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_ACCOUNTS_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_ACCOUNT_PARAM, /* openapi_account_param_t */
	DATA_PARSER_OPENAPI_ACCOUNT_PARAM_PTR, /* openapi_account_param_t* */
	DATA_PARSER_OPENAPI_ACCOUNT_QUERY, /* openapi_account_query_t */
	DATA_PARSER_OPENAPI_ACCOUNT_QUERY_PTR, /* openapi_account_query_t* */
	DATA_PARSER_ACCOUNT_CONDITION, /* slurmdb_account_cond_t */
	DATA_PARSER_ACCOUNT_CONDITION_PTR, /* slurmdb_account_cond_t* */
	DATA_PARSER_ACCOUNT_CONDITION_WITH_ASSOC_V40, /* slurmdb_account_cond_t->flags&SLURMDB_ACCT_FLAG_WASSOC - TODO: Remove with v0.0.40 */
	DATA_PARSER_ACCOUNT_CONDITION_WITH_WCOORD_V40, /* slurmdb_account_cond_t->flags&SLURMDB_ACCT_FLAG_WCOORD - TODO: Remove with v0.0.40 */
	DATA_PARSER_ACCOUNT_CONDITION_WITH_DELETED_V40, /* slurmdb_account_cond_t->flags&SLURMDB_ACCT_FLAG_DELETED - TODO: Remove with v0.0.40 */
	DATA_PARSER_ACCOUNT_LIST, /* list of slurmdb_account_rec_t* */
	DATA_PARSER_ACCOUNT, /* slurmdb_account_rec_t */
	DATA_PARSER_ACCOUNT_PTR, /* slurmdb_account_rec_t* */
	DATA_PARSER_ACCOUNT_SHORT, /* slurmdb_account_rec_t subset */
	DATA_PARSER_ACCOUNT_SHORT_PTR, /* slurmdb_account_rec_t* */
	DATA_PARSER_ACCOUNT_FLAGS, /* slurmdb_account_rec_t->flags & SLURMDB_ACCT_FLAG_* */
	DATA_PARSER_ACCOUNTING_LIST, /* list of slurmdb_accounting_rec_t* */
	DATA_PARSER_ACCOUNTING, /* slurmdb_accounting_rec_t */
	DATA_PARSER_ACCOUNTING_PTR, /* slurmdb_accounting_rec_t* */
	DATA_PARSER_ACCOUNTS_ADD_COND, /* slurmdb_add_assoc_cond_t */
	DATA_PARSER_ACCOUNTS_ADD_COND_PTR, /* slurmdb_add_assoc_cond_t* */
	DATA_PARSER_ADMIN_LVL, /* uint16_t (placeholder for slurmdb_admin_level_t) */
	DATA_PARSER_ASSOC_ID, /* uint32_t - Assumes local cluster which may be wrong */
	DATA_PARSER_ASSOC_ID_STRING, /* char * of assoc id */
	DATA_PARSER_ASSOC_ID_STRING_CSV_LIST, /* list of char* */
	DATA_PARSER_ASSOC_LIST, /* list of slurmdb_assoc_rec_t* */
	DATA_PARSER_OPENAPI_ASSOCS_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_ASSOCS_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_ASSOC_SHORT_LIST, /* list of slurmdb_assoc_rec_t* only for id */
	DATA_PARSER_ASSOC_SHORT, /* slurmdb_assoc_rec_t (for id only) */
	DATA_PARSER_ASSOC_SHORT_PTR, /* slurmdb_assoc_rec_t* (for id only) */
	DATA_PARSER_ASSOC, /* slurmdb_assoc_rec_t */
	DATA_PARSER_ASSOC_PTR, /* slurmdb_assoc_rec_t* */
	DATA_PARSER_ASSOC_FLAGS, /* slurmdb_assoc_flags_t */
	DATA_PARSER_ASSOC_CONDITION_FLAGS, /* slurmdb_assoc_cond_t->flags & ASSOC_FLAG_COND_* */
	DATA_PARSER_ASSOC_USAGE, /* slurmdb_assoc_usage_t */
	DATA_PARSER_ASSOC_USAGE_PTR, /* slurmdb_assoc_usage_t* */
	DATA_PARSER_ASSOC_REC_SET, /* slurmdb_assoc_rec_t */
	DATA_PARSER_ASSOC_REC_SET_PTR, /* slurmdb_assoc_rec_t* */
	DATA_PARSER_OPENAPI_ASSOCS_REMOVED_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_ASSOCS_REMOVED_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_ASSOC_CONDITION, /* slurmdb_assoc_cond_t */
	DATA_PARSER_ASSOC_CONDITION_PTR, /* slurmdb_assoc_cond_t* */
	DATA_PARSER_ASSOC_CONDITION_WITH_DELETED_OLD, /* slurmdb_assoc_cond_t->flags&ASSOC_COND_FLAG_WITH_DELETED */
	DATA_PARSER_ASSOC_CONDITION_WITH_USAGE_OLD, /* slurmdb_assoc_cond_t->flags&ASSOC_COND_FLAG_WITH_USAGE */
	DATA_PARSER_ASSOC_CONDITION_ONLY_DEFS_OLD, /* slurmdb_assoc_cond_t->flags&ASSOC_COND_ONLY_DEFS */
	DATA_PARSER_ASSOC_CONDITION_RAW_QOS_OLD, /* slurmdb_assoc_cond_t->flags&ASSOC_COND_RAW_QOS */
	DATA_PARSER_ASSOC_CONDITION_SUB_ACCTS_OLD, /* slurmdb_assoc_cond_t->flags&ASSOC_COND_SUB_ACCTS */
	DATA_PARSER_ASSOC_CONDITION_WOPI_OLD, /* slurmdb_assoc_cond_t->flags&ASSOC_COND_WOPI */
	DATA_PARSER_ASSOC_CONDITION_WOPL_OLD, /* slurmdb_assoc_cond_t->flags&ASSOC_COND_WOPL */
	DATA_PARSER_CLASSIFICATION_TYPE, /* slurmdb_classification_type_t */
	DATA_PARSER_CLUSTER_ACCT_REC_LIST, /* list of slurmdb_cluster_accounting_rec_t* */
	DATA_PARSER_CLUSTER_ACCT_REC, /* slurmdb_cluster_accounting_rec_t */
	DATA_PARSER_CLUSTER_ACCT_REC_PTR, /* slurmdb_cluster_accounting_rec_t* */
	DATA_PARSER_CLUSTER_CLASSIFICATION, /* uint16_t joined with slurmdb_classification_type_t */
	DATA_PARSER_CLUSTER_REC_LIST, /* list of slurmdb_cluster_rec_t */
	DATA_PARSER_CLUSTER_REC, /* slurmdb_cluster_rec_t */
	DATA_PARSER_CLUSTER_REC_PTR, /* slurmdb_cluster_rec_t* */
	DATA_PARSER_CLUSTER_REC_FLAGS, /* slurmdb_cluster_rec_t->flags & CLUSTER_FLAG_* */
	DATA_PARSER_OPENAPI_CLUSTERS_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_CLUSTERS_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_CLUSTERS_REMOVED_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_CLUSTERS_REMOVED_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_CLUSTER_PARAM, /* openapi_cluster_param_t */
	DATA_PARSER_OPENAPI_CLUSTER_PARAM_PTR, /* openapi_cluster_param_t* */
	DATA_PARSER_CLUSTER_CONDITION, /* slurmdb_cluster_cond_t */
	DATA_PARSER_CLUSTER_CONDITION_PTR, /* slurmdb_cluster_cond_t* */
	DATA_PARSER_COORD_LIST, /* List of slurmdb_coord_rec_t* */
	DATA_PARSER_COORD, /* slurmdb_coord_rec_t */
	DATA_PARSER_COORD_PTR, /* slurmdb_coord_rec_t* */
	DATA_PARSER_CPU_FREQ_FLAGS, /* uint32_t & CPU_FREQ_* */
	DATA_PARSER_GROUP_ID, /* Group from numeric GID <-> gid_t */
	DATA_PARSER_GROUP_ID_STRING, /* char * - group id string */
	DATA_PARSER_GROUP_ID_STRING_LIST, /* list_t of string group id */
	DATA_PARSER_GROUP_NAME, /* Group from string group name <-> gid_t */
	DATA_PARSER_INSTANCE, /* slurmdb_instance_rec_t */
	DATA_PARSER_INSTANCE_PTR, /* slurmdb_instance_rec_t* */
	DATA_PARSER_INSTANCE_CONDITION, /* slurmdb_instance_cond_t */
	DATA_PARSER_INSTANCE_CONDITION_PTR, /* slurmdb_instance_cond_t* */
	DATA_PARSER_INSTANCE_LIST, /* list of slurmdb_instance_rec_t */
	DATA_PARSER_OPENAPI_INSTANCES_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_INSTANCES_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_JOB_EXIT_CODE, /* int32_t */
	DATA_PARSER_JOB_REASON, /* uint32_t <-> enum job_state_reason */
	DATA_PARSER_JOB_LIST, /* list of slurmdb_job_rec_t* */
	DATA_PARSER_JOB, /* slurmdb_job_rec_t */
	DATA_PARSER_JOB_PTR, /* slurmdb_job_rec_t* */
	DATA_PARSER_JOB_ASSOC_ID, /* slurmdb_job_rec_t->associd,cluster */
	DATA_PARSER_JOB_CONDITION, /* slurmdb_job_cond_t */
	DATA_PARSER_JOB_CONDITION_FLAGS, /* uint32_t - JOBCOND_FLAG_* */
	DATA_PARSER_JOB_CONDITION_DB_FLAGS, /* uint32_t - SLURMDB_JOB_FLAG_* */
	DATA_PARSER_JOB_CONDITION_SUBMIT_TIME, /* slurmdb_job_cond_t->usage_start&flags */
	DATA_PARSER_JOB_CONDITION_PTR, /* slurmdb_job_cond_t* */
	DATA_PARSER_JOB_STDIN, /* slurmdb_job_rec_t->std_in */
	DATA_PARSER_JOB_STDOUT, /* slurmdb_job_rec_t->std_out */
	DATA_PARSER_JOB_STDERR, /* slurmdb_job_rec_t->std_err */
	DATA_PARSER_OPENAPI_SLURMDBD_JOBS_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_SLURMDBD_JOBS_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_SLURMDBD_JOB_PARAM, /* openapi_job_param_t */
	DATA_PARSER_OPENAPI_SLURMDBD_JOB_PARAM_PTR, /* openapi_job_param_t* */
	DATA_PARSER_SLURMDB_JOB_FLAGS, /* slurmdb_job_rec_t->flags & SLURMDB_JOB_* */
	DATA_PARSER_JOB_STATE, /* uint32_t <-> JOB_* & JOB_STATE_FLAGS */
	DATA_PARSER_JOB_STATE_ID_STRING, /* char* <-> JOB_* & JOB_STATE_FLAGS - as stringified integer */
	DATA_PARSER_JOB_STATE_ID_STRING_LIST, /* list_t of char* */
	DATA_PARSER_OPENAPI_STEP_INFO_MSG, /* openapi_resp_job_step_info_msg_t */
	DATA_PARSER_OPENAPI_STEP_INFO_MSG_PTR, /* openapi_resp_job_step_info_msg_t* */
	DATA_PARSER_STEP_INFO_MSG, /* job_step_info_response_msg_t */
	DATA_PARSER_STEP_INFO_MSG_PTR, /* job_step_info_response_msg_t* */
	DATA_PARSER_STEP_INFO, /* job_step_info_t */
	DATA_PARSER_STEP_INFO_PTR, /* job_step_info_t* */
	DATA_PARSER_STEP_INFO_ARRAY, /* job_step_info_t* */
	DATA_PARSER_STEP_INFO_STDIN_EXP, /* step_job_info_t->std_in (handles all pattern replacements) */
	DATA_PARSER_STEP_INFO_STDOUT_EXP, /* step_job_info_t->std_out (handles all pattern replacements) */
	DATA_PARSER_STEP_INFO_STDERR_EXP, /* step_job_info_t->std_err (handles all pattern replacements) */
	DATA_PARSER_STEP, /* slurmdb_step_rec_t */
	DATA_PARSER_STEP_PTR, /* slurmdb_step_rec_t* */
	DATA_PARSER_STEP_LIST, /* List of slurmdb_step_rec_t* */
	DATA_PARSER_STEP_NODES, /* slurmdb_step_rec_t->nodes */
	DATA_PARSER_STEP_TRES_REQ_MAX, /* slurmdb_step_rec_t->tres_usage_in_max(|_nodeid|taskid) */
	DATA_PARSER_STEP_TRES_REQ_MIN, /* slurmdb_step_rec_t->tres_usage_in_min(|_nodeid|taskid) */
	DATA_PARSER_STEP_TRES_USAGE_MAX, /* slurmdb_step_rec_t->tres_usage_out_in_max(|_nodeid|taskid) */
	DATA_PARSER_STEP_TRES_USAGE_MIN, /* slurmdb_step_rec_t->tres_usage_out_in_min(|_nodeid|taskid) */
	DATA_PARSER_STEP_NAMES, /* uint32_t <-> SLURM_EXTERN_CONT,SLURM_BATCH_SCRIPT,SLURM_PENDING_STEP,SLURM_INTERACTIVE_STEP */
	DATA_PARSER_STEP_STDIN_EXP, /* slurmdb_step_rec_t->std_in (handles all pattern replacements) */
	DATA_PARSER_STEP_STDOUT_EXP, /* slurmdb_step_rec_t->std_out (handles all pattern replacements) */
	DATA_PARSER_STEP_STDERR_EXP, /* slurmdb_step_rec_t->std_err (handles all pattern replacements) */
	DATA_PARSER_JOB_USER, /* user/uid from slurmdb_job_rec_t* */
	DATA_PARSER_NEED_PREREQS_FLAGS, /* need_t */
	DATA_PARSER_QOS_ID, /* uint32_t of QOS->name or stringified QOS->id if name unresolvable */
	DATA_PARSER_QOS_ID_LIST, /* List of char* of QOS ids */
	DATA_PARSER_QOS_STRING_ID_LIST, /* List of char* of QOS ids */
	DATA_PARSER_QOS_ID_STRING_CSV_LIST, /* List of char* of QOS ids */
	DATA_PARSER_QOS_ID_STRING, /* char* of QOS id */
	DATA_PARSER_QOS_NAME, /* char * of QOS name */
	DATA_PARSER_QOS_NAME_LIST, /* List of char* of QOS names */
	DATA_PARSER_QOS_NAME_CSV_LIST, /* List of char* of QOS names */
	DATA_PARSER_QOS_PREEMPT_LIST, /* slurmdb_qos_rec_t->preempt_bitstr & preempt_list */
	DATA_PARSER_QOS, /* slurmdb_qos_rec_t */
	DATA_PARSER_QOS_PTR, /* slurmdb_qos_rec_t* */
	DATA_PARSER_QOS_LIST, /* list of slurmdb_qos_rec_t* */
	DATA_PARSER_QOS_FLAGS, /* slurmdb_qos_rec_t->flags & QOS_FLAG_* */
	DATA_PARSER_QOS_PREEMPT_MODES, /* slurmdb_qos_rec_t->preempt_mode & QOS_FLAG_* */
	DATA_PARSER_QOS_CONDITION, /* slurmdb_qos_cond_t */
	DATA_PARSER_QOS_CONDITION_PTR, /* slurmdb_qos_cond_t* */
	DATA_PARSER_QOS_CONDITION_WITH_DELETED_OLD, /* slurmdb_qos_cond_t->flags&QOS_COND_FLAG_WITH_DELETED - TODO: Remove with v0.0.42 */
	DATA_PARSER_QOS_CONDITION_FLAGS, /* slurmdb_qos_cond_t->flags & QOS_FLAG_COND_* */
	DATA_PARSER_OPENAPI_SLURMDBD_QOS_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_SLURMDBD_QOS_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_SLURMDBD_QOS_REMOVED_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_SLURMDBD_QOS_REMOVED_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_SLURMDBD_QOS_PARAM, /* openapi_qos_param_t */
	DATA_PARSER_OPENAPI_SLURMDBD_QOS_PARAM_PTR, /* openapi_qos_param_t* */
	DATA_PARSER_OPENAPI_SLURMDBD_QOS_QUERY, /* openapi_qos_query_t */
	DATA_PARSER_OPENAPI_SLURMDBD_QOS_QUERY_PTR, /* openapi_qos_query_t* */
	DATA_PARSER_RPC_ID, /* slurm_msg_type_t - uint16_t */
	DATA_PARSER_SLURMDB_RPC_ID, /* slurmdbd_msg_type_t */
	DATA_PARSER_SELECT_PLUGIN_ID, /* DEPRECATED v41: int (SELECT_PLUGIN_*) -> string */
	DATA_PARSER_STATS_REC_PTR, /* slurmdb_stats_rec_t* */
	DATA_PARSER_STATS_REC, /* slurmdb_stats_rec_t */
	DATA_PARSER_OPENAPI_SLURMDBD_STATS_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_SLURMDBD_STATS_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_STATS_RPC_LIST, /* list of slurmdb_rpc_obj_t* */
	DATA_PARSER_STATS_RPC, /* slurmdb_rpc_obj_t */
	DATA_PARSER_STATS_RPC_PTR, /* slurmdb_rpc_obj_t* */
	DATA_PARSER_STATS_USER_LIST, /* list of slurmdb_rpc_obj_t* */
	DATA_PARSER_STATS_USER, /* slurmdb_rpc_obj_t */
	DATA_PARSER_STATS_USER_PTR, /* slurmdb_rpc_obj_t* */
	DATA_PARSER_ROLLUP_STATS, /* slurmdb_rollup_stats_t */
	DATA_PARSER_ROLLUP_STATS_PTR, /* slurmdb_rollup_stats_t* */
	DATA_PARSER_SLURM_STEP_ID, /* slurm_step_id_t */
	DATA_PARSER_SLURM_STEP_ID_PTR, /* slurm_step_id_t* */
	DATA_PARSER_SLURM_STEP_ID_STRING, /* slurm_step_id_t -> SELECTED_STEP */
	DATA_PARSER_SLURM_STEP_ID_STRING_PTR, /* slurm_step_id_t* -> SLURM_STEP_ID_STRING */
	DATA_PARSER_SLURM_STEP_ID_STRING_LIST, /* list_t of slurm_step_id_t* */
	DATA_PARSER_STEP_ID, /* uint32_t of job step id */
	DATA_PARSER_STEP_ID_PTR, /* uint32_t* of job step id */
	DATA_PARSER_TASK_DISTRIBUTION, /* uint32_t <-> task_dist_states_t */
	DATA_PARSER_TRES_STR, /* List of slurmdb_tres_rec_t* combined into a TRES string with TRES type/name instead of ID */
	DATA_PARSER_TRES_ID_STR, /* List of slurmdb_tres_rec_t* combined into a TRES string with TRES id# instead of type/name */
	DATA_PARSER_TRES_STR_BY_TYPE, /* List of slurmdb_tres_rec_t* combined into a TRES string with  TRES type/name=#,... format */
	DATA_PARSER_TRES_LIST, /* List of slurmdb_tres_rec_t* */
	DATA_PARSER_TRES, /* slurmdb_tres_rec_t */
	DATA_PARSER_TRES_PTR, /* slurmdb_tres_rec_t* */
	DATA_PARSER_OPENAPI_TRES_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_TRES_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_TRES_NCT, /* slurmdb_tres_nct_rec_t */
	DATA_PARSER_TRES_NCT_PTR, /* slurmdb_tres_nct_rec_t* */
	DATA_PARSER_USER_ID, /* User from numeric UID */
	DATA_PARSER_USER_ID_STRING, /* char * - user id string */
	DATA_PARSER_USER_ID_STRING_LIST, /* list_t of string user id */
	DATA_PARSER_USER_SHORT, /* slurmdb_user_rec_t subset */
	DATA_PARSER_USER_SHORT_PTR, /* slurmdb_user_rec_t* */
	DATA_PARSER_USER, /* slurmdb_user_rec_t */
	DATA_PARSER_USER_PTR, /* slurmdb_user_rec_t* */
	DATA_PARSER_USER_LIST, /* List of slurmdb_user_rec_t*  */
	DATA_PARSER_USER_FLAGS, /* slurmdb_user_rec_t->parser_user_flags & SLURMDB_USER_FLAG_* */
	DATA_PARSER_USER_CONDITION, /* slurmdb_user_cond_t */
	DATA_PARSER_USER_CONDITION_PTR, /* slurmdb_user_cond_t* */
	DATA_PARSER_USERS_ADD_COND, /* slurmdb_add_assoc_cond_t subset */
	DATA_PARSER_USERS_ADD_COND_PTR, /* slurmdb_add_assoc_cond_t* */
	DATA_PARSER_OPENAPI_USERS_ADD_COND_RESP, /* openapi_resp_users_add_cond_t */
	DATA_PARSER_OPENAPI_USERS_ADD_COND_RESP_PTR, /* openapi_resp_users_add_cond_t* */
	DATA_PARSER_OPENAPI_USERS_ADD_COND_RESP_STR, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_USERS_ADD_COND_RESP_STR_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_USERS_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_USERS_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_USERS_REMOVED_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_USERS_REMOVED_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_WCKEY, /* slurmdb_wckey_rec_t */
	DATA_PARSER_WCKEY_PTR, /* slurmdb_wckey_rec_t* */
	DATA_PARSER_WCKEY_LIST, /* List of slurmdb_wckey_rec_t* */
	DATA_PARSER_WCKEY_FLAGS, /* slurmdb_wckey_rec_t->flags & SLURMDB_WCKEY_FLAG_* */
	DATA_PARSER_WCKEY_TAG, /* uint32_t - * prefix denotes default */
	DATA_PARSER_WCKEY_TAG_STRUCT, /* WCKEY_TAG_STRUCT_t */
	DATA_PARSER_WCKEY_TAG_STRUCT_PTR, /* WCKEY_TAG_STRUCT_t* */
	DATA_PARSER_WCKEY_TAG_FLAGS, /* WCKEY_TAG_FLAGS_t */
	DATA_PARSER_OPENAPI_WCKEY_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_WCKEY_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_WCKEY_REMOVED_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_WCKEY_REMOVED_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_OPENAPI_WCKEY_PARAM, /* openapi_wckey_param_t */
	DATA_PARSER_OPENAPI_WCKEY_PARAM_PTR, /* openapi_wckey_param_t* */
	DATA_PARSER_WCKEY_CONDITION, /* slurmdb_wckey_cond_t */
	DATA_PARSER_WCKEY_CONDITION_PTR, /* slurmdb_wckey_cond_t* */
	DATA_PARSER_SINFO_DATA, /* sinfo_data_t */
	DATA_PARSER_SINFO_DATA_PTR, /* sinfo_data_t* */
	DATA_PARSER_SINFO_DATA_LIST, /* list of sinfo_data_t* */
	DATA_PARSER_OPENAPI_SINFO_RESP, /* list of sinfo_data_t */
	DATA_PARSER_OPENAPI_SINFO_RESP_PTR, /* list of sinfo_data_t* */
	DATA_PARSER_OPENAPI_DIAG_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_DIAG_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_STATS_MSG, /* stats_info_response_msg_t */
	DATA_PARSER_STATS_MSG_PTR, /* stats_info_response_msg_t* */
	DATA_PARSER_STATS_MSG_CYCLE_MEAN, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_CYCLE_MEAN_DEPTH, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_CYCLE_PER_MIN, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_SCHEDULE_EXIT, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_BF_CYCLE_MEAN, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_BF_DEPTH_MEAN, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_BF_DEPTH_MEAN_TRY, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_BF_QUEUE_LEN_MEAN, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_BF_TABLE_SIZE_MEAN, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_BF_ACTIVE, /* stats_info_response_msg_t-> computed bool */
	DATA_PARSER_STATS_MSG_BF_EXIT, /* stats_info_response_msg_t-> computed value */
	DATA_PARSER_STATS_MSG_RPC_TYPE, /* STATS_MSG_RPC_TYPE_t */
	DATA_PARSER_STATS_MSG_RPC_TYPE_PTR, /* STATS_MSG_RPC_TYPE_t* */
	DATA_PARSER_STATS_MSG_RPCS_BY_TYPE, /* stats_info_response_msg_t-> computed bool */
	DATA_PARSER_STATS_MSG_RPC_USER, /* STATS_MSG_RPC_USER_t */
	DATA_PARSER_STATS_MSG_RPC_USER_PTR, /* STATS_MSG_RPC_USER_t* */
	DATA_PARSER_STATS_MSG_RPCS_BY_USER, /* stats_info_response_msg_t-> computed bool */
	DATA_PARSER_STATS_MSG_RPC_QUEUE, /* STATS_MSG_RPC_QUEUE_t */
	DATA_PARSER_STATS_MSG_RPC_QUEUE_PTR, /* STATS_MSG_RPC_QUEUE_t* */
	DATA_PARSER_STATS_MSG_RPCS_QUEUE, /* stats_info_response_msg_t-> computed */
	DATA_PARSER_STATS_MSG_RPC_DUMP, /* STATS_MSG_RPC_DUMP_t */
	DATA_PARSER_STATS_MSG_RPC_DUMP_PTR, /* STATS_MSG_RPC_DUMP_t* */
	DATA_PARSER_STATS_MSG_RPCS_DUMP, /* stats_info_response_msg_t-> computed */
	DATA_PARSER_BF_EXIT_FIELDS, /* bf_exit_fields_t */
	DATA_PARSER_BF_EXIT_FIELDS_PTR, /* bf_exit_fields_t* */
	DATA_PARSER_SCHEDULE_EXIT_FIELDS, /* schedule_exit_fields_t */
	DATA_PARSER_SCHEDULE_EXIT_FIELDS_PTR, /* schedule_exit_fields_t* */
	DATA_PARSER_CONTROLLER_PING, /* controller_ping_t */
	DATA_PARSER_CONTROLLER_PING_PTR, /* controller_ping_t* */
	DATA_PARSER_CONTROLLER_PING_ARRAY, /* controller_ping_t (NULL terminated array) */
	DATA_PARSER_OPENAPI_PING_ARRAY_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_PING_ARRAY_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_CONTROLLER_PING_MODE, /* char * - verbose controller mode */
	DATA_PARSER_CONTROLLER_PING_PRIMARY, /* int - true if controller is primary */
	DATA_PARSER_CONTROLLER_PING_RESULT, /* bool - "UP" or "DOWN" */
	DATA_PARSER_SLURMDBD_PING, /* controller_ping_t */
	DATA_PARSER_SLURMDBD_PING_PTR, /* controller_ping_t* */
	DATA_PARSER_SLURMDBD_PING_ARRAY, /* controller_ping_t (NULL terminated array) */
	DATA_PARSER_OPENAPI_SLURMDBD_PING_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_SLURMDBD_PING_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_SLURMDBD_PING_MODE, /* char * - verbose slurmdbd mode */
	DATA_PARSER_SLURMDBD_PING_RESULT, /* bool - "UP" or "DOWN" */
	DATA_PARSER_NODE, /* node_info_t */
	DATA_PARSER_NODE_PTR, /* node_info_t* */
	DATA_PARSER_NODE_ARRAY, /* node_info_t** (NULL terminated) */
	DATA_PARSER_NODES, /* node_info_msg_t */
	DATA_PARSER_NODES_PTR, /* node_info_msg_t* */
	DATA_PARSER_OPENAPI_NODES_RESP, /* openapi_resp_node_info_msg_t */
	DATA_PARSER_OPENAPI_NODES_RESP_PTR, /* openapi_resp_node_info_msg_t* */
	DATA_PARSER_OPENAPI_NODE_PARAM, /* openapi_node_param_t */
	DATA_PARSER_OPENAPI_NODE_PARAM_PTR, /* openapi_node_param_t* */
	DATA_PARSER_OPENAPI_NODES_QUERY, /* openapi_nodes_query_t */
	DATA_PARSER_OPENAPI_NODES_QUERY_PTR, /* openapi_nodes_query_t* */
	DATA_PARSER_NODE_STATES, /* uint32_t & NODE_STATE_* */
	DATA_PARSER_NODE_STATES_NO_VAL, /* uint32_t & NODE_STATE_* or NO_VAL */
	DATA_PARSER_NODE_SELECT_ALLOC_IDLE_CPUS, /* node_info_t->select_nodeinfo  */
	DATA_PARSER_NODE_SELECT_TRES_WEIGHTED, /* DEPRECATED v43: was removed field node_info_t->select_nodeinfo  */
	DATA_PARSER_UPDATE_NODE_MSG, /* update_node_msg_t */
	DATA_PARSER_UPDATE_NODE_MSG_PTR, /* update_node_msg_t* */
	DATA_PARSER_OPENAPI_LICENSES_RESP, /* openapi_resp_license_info_msg_t */
	DATA_PARSER_OPENAPI_LICENSES_RESP_PTR, /* openapi_resp_license_info_msg_t* */
	DATA_PARSER_LICENSES, /* license_info_msg_t */
	DATA_PARSER_LICENSES_PTR, /* license_info_msg_t* */
	DATA_PARSER_LICENSE, /* slurm_license_info_t */
	DATA_PARSER_LICENSE_PTR, /* slurm_license_info_t* */
	DATA_PARSER_JOB_INFO_MSG, /* job_info_msg_t */
	DATA_PARSER_JOB_INFO_MSG_PTR, /* job_info_msg_t* */
	DATA_PARSER_OPENAPI_JOB_INFO_RESP, /* openapi_resp_job_info_msg_t */
	DATA_PARSER_OPENAPI_JOB_INFO_RESP_PTR, /* openapi_resp_job_info_msg_t* */
	DATA_PARSER_OPENAPI_JOB_INFO_PARAM, /* openapi_job_info_param_t */
	DATA_PARSER_OPENAPI_JOB_INFO_PARAM_PTR, /* openapi_job_info_param_t* */
	DATA_PARSER_OPENAPI_JOB_INFO_DELETE_QUERY, /* openapi_job_info_delete_query_t */
	DATA_PARSER_OPENAPI_JOB_INFO_DELETE_QUERY_PTR, /* openapi_job_info_delete_query_t* */
	DATA_PARSER_OPENAPI_JOB_INFO_QUERY, /* openapi_job_info_query_t */
	DATA_PARSER_OPENAPI_JOB_INFO_QUERY_PTR, /* openapi_job_info_query_t* */
	DATA_PARSER_JOB_INFO, /* slurm_job_info_t */
	DATA_PARSER_JOB_INFO_PTR, /* slurm_job_info_t* */
	DATA_PARSER_JOB_INFO_STDIN, /* slurm_job_info_t->stdin (handles % replacements) */
	DATA_PARSER_JOB_INFO_STDOUT, /* slurm_job_info_t->stdout (handles % replacements) */
	DATA_PARSER_JOB_INFO_STDERR, /* slurm_job_info_t->stderr (handles % replacements) */
	DATA_PARSER_JOB_INFO_STDIN_EXP, /* slurm_job_info_t->stdin (handles all pattern replacements) */
	DATA_PARSER_JOB_INFO_STDOUT_EXP, /* slurm_job_info_t->stdout (handles all pattern replacements) */
	DATA_PARSER_JOB_INFO_STDERR_EXP, /* slurm_job_info_t->stderr (handles all pattern replacements) */
	DATA_PARSER_JOB_FLAGS, /* uint64_t & KILL_INV_DEP/HAS_STATE_DIR/... */
	DATA_PARSER_JOB_SHOW_FLAGS, /* uint32_t & SHOW_* */
	DATA_PARSER_CORE_SPEC, /* uint16_t & ~CORE_SPEC_THREAD */
	DATA_PARSER_THREAD_SPEC, /* uint16_t & CORE_SPEC_THREAD */
	DATA_PARSER_JOB_INFO_GRES_DETAIL, /* slurm_job_info_t->core_spec & CORE_SPEC_THREAD */
	DATA_PARSER_JOB_RES, /* job_resources_t */
	DATA_PARSER_JOB_RES_PTR, /* job_resources_t* */
	DATA_PARSER_JOB_RES_NODES, /* job_resources_t->nodes,core_bitmap,nhosts */
	DATA_PARSER_JOB_RES_NODE, /* JOB_RES_NODE_t */
	DATA_PARSER_JOB_RES_NODE_PTR, /* JOB_RES_NODE_t* */
	DATA_PARSER_JOB_RES_CORE, /* JOB_RES_CORE_t */
	DATA_PARSER_JOB_RES_CORE_PTR, /* JOB_RES_CORE_t* */
	DATA_PARSER_JOB_RES_CORE_STATUS, /* JOB_RES_CORE_status_t */
	DATA_PARSER_JOB_RES_CORE_ARRAY, /* JOB_RES_CORE_t[] */
	DATA_PARSER_JOB_RES_SOCKET, /* JOB_RES_SOCKET_t */
	DATA_PARSER_JOB_RES_SOCKET_PTR, /* JOB_RES_SOCKET_t* */
	DATA_PARSER_JOB_RES_SOCKET_ARRAY, /* JOB_RES_SOCKET_t[] */
	DATA_PARSER_JOB_MAIL_FLAGS, /* uint16_t & MAIL_JOB_* */
	DATA_PARSER_LISTJOBS_INFO, /* listjobs_info_t */
	DATA_PARSER_LISTJOBS_INFO_PTR, /* listjobs_info_t* */
	DATA_PARSER_LISTJOBS_INFO_LIST, /* list_t of listjobs_info_t* */
	DATA_PARSER_OPENAPI_LISTJOBS_INFO_RESP, /* openapi_resp_listjobs_info_t */
	DATA_PARSER_OPENAPI_LISTJOBS_INFO_RESP_PTR, /* openapi_resp_listjobs_info_t* */
	DATA_PARSER_LISTPIDS_INFO, /* listpids_info_t */
	DATA_PARSER_LISTPIDS_INFO_PTR, /* listpids_info_t* */
	DATA_PARSER_LISTPIDS_INFO_LIST, /* list_t of listpids_info_t* */
	DATA_PARSER_OPENAPI_LISTPIDS_INFO_RESP, /* openapi_resp_listpids_info_t */
	DATA_PARSER_OPENAPI_LISTPIDS_INFO_RESP_PTR, /* openapi_resp_listpids_info_t* */
	DATA_PARSER_LISTSTEPS_INFO, /* liststeps_info_t */
	DATA_PARSER_LISTSTEPS_INFO_PTR, /* liststeps_info_t* */
	DATA_PARSER_LISTSTEPS_INFO_LIST, /* list_t of liststeps_info_t* */
	DATA_PARSER_OPENAPI_LISTSTEPS_INFO_RESP, /* openapi_resp_liststeps_info_t */
	DATA_PARSER_OPENAPI_LISTSTEPS_INFO_RESP_PTR, /* openapi_resp_liststeps_info_t* */
	DATA_PARSER_NICE, /* uint32_t - nice value - NICE_OFFSET */
	DATA_PARSER_MEM_PER_CPUS, /* uint64_t & MEM_PER_CPU */
	DATA_PARSER_MEM_PER_NODE, /* uint64_t & ~MEM_PER_CPU */
	DATA_PARSER_ACCT_GATHER_PROFILE, /* uint32_t - ACCT_GATHER_PROFILE_* */
	DATA_PARSER_ACCT_GATHER_ENERGY, /* acct_gather_energy_t */
	DATA_PARSER_ACCT_GATHER_ENERGY_PTR, /* acct_gather_energy_t* */
	DATA_PARSER_JOB_SHARED, /* uint16_t - JOB_SHARED_* */
	DATA_PARSER_JOB_EXCLUSIVE, /* uint16_t - JOB_SHARED_* */
	DATA_PARSER_JOB_EXCLUSIVE_FLAGS, /* uint16_t - JOB_SHARED_* */
	DATA_PARSER_ALLOCATED_CORES, /* DEPRECATED v41: uint32_t if slurm_conf.select_type_param & (SELECT_CORE|SELECT_SOCKET) */
	DATA_PARSER_ALLOCATED_CPUS, /* DEPRECATED v41: uint32_t if slurm_conf.select_type_param & SELECT_CPU */
	DATA_PARSER_HOSTLIST, /* hostlist_t* */
	DATA_PARSER_HOSTLIST_STRING, /* char * - acts like hostlist_t* */
	DATA_PARSER_POWER_FLAGS, /* REMOVED 24.05: uint8_t & SLURM_POWER_FLAGS_* */
	DATA_PARSER_PARTITION_INFO, /* partition_info_t */
	DATA_PARSER_PARTITION_INFO_PTR, /* partition_info_t* */
	DATA_PARSER_PARTITION_INFO_MSG, /* partition_info_msg_t */
	DATA_PARSER_PARTITION_INFO_MSG_PTR, /* partition_info_msg_t* */
	DATA_PARSER_PARTITION_INFO_ARRAY, /* partition_info_t** */
	DATA_PARSER_PARTITION_STATES, /* uint16_t & PARTITION_* */
	DATA_PARSER_OPENAPI_PARTITION_RESP, /* openapi_resp_partitions_info_msg_t */
	DATA_PARSER_OPENAPI_PARTITION_RESP_PTR, /* openapi_resp_partitions_info_msg_t* */
	DATA_PARSER_OPENAPI_PARTITION_PARAM, /* openapi_partition_param_t */
	DATA_PARSER_OPENAPI_PARTITION_PARAM_PTR, /* openapi_partition_param_t* */
	DATA_PARSER_OPENAPI_PARTITIONS_QUERY, /* openapi_partitions_query_t */
	DATA_PARSER_OPENAPI_PARTITIONS_QUERY_PTR, /* openapi_partitions_query_t* */
	DATA_PARSER_EXT_SENSORS_DATA, /* REMOVED 24.05: ext_sensors_data_t */
	DATA_PARSER_EXT_SENSORS_DATA_PTR, /* REMOVED 24.05: ext_sensors_data_t* */
	DATA_PARSER_POWER_MGMT_DATA, /* REMOVED 24.05: power_mgmt_data_t */
	DATA_PARSER_POWER_MGMT_DATA_PTR, /* REMOVED 24.05: power_mgmt_data_t* */
	DATA_PARSER_RESERVATION_INFO, /* reserve_info_t */
	DATA_PARSER_RESERVATION_INFO_PTR, /* reserve_info_t* */
	DATA_PARSER_RESERVATION_FLAGS, /* uint64_t & RESERVE_FLAG_* */
	DATA_PARSER_RESERVATION_INFO_MSG, /* reserve_info_msg_t */
	DATA_PARSER_RESERVATION_INFO_MSG_PTR, /* reserve_info_msg_t* */
	DATA_PARSER_RESERVATION_CORE_SPEC, /* resv_core_spec_t */
	DATA_PARSER_RESERVATION_CORE_SPEC_PTR, /* resv_core_spec_t* */
	DATA_PARSER_RESERVATION_INFO_CORE_SPEC, /* reserve_info_t->core_spec+core_spec_cnt */
	DATA_PARSER_RESERVATION_INFO_ARRAY, /* reserve_info_t** */
	DATA_PARSER_RESERVATION_DESC_MSG, /* resv_desc_msg_t */
	DATA_PARSER_RESERVATION_DESC_MSG_PTR, /* resv_desc_msg_t* */
	DATA_PARSER_RESERVATION_DESC_MSG_LIST, /* list_t of resv_desc_msg_t * */
	DATA_PARSER_OPENAPI_RESERVATION_RESP, /* openapi_resp_reserve_info_msg_t */
	DATA_PARSER_OPENAPI_RESERVATION_RESP_PTR, /* openapi_resp_reserve_info_msg_t* */
	DATA_PARSER_OPENAPI_RESERVATION_PARAM, /* openapi_reservation_param_t */
	DATA_PARSER_OPENAPI_RESERVATION_PARAM_PTR, /* openapi_reservation_param_t* */
	DATA_PARSER_OPENAPI_RESERVATION_QUERY, /* openapi_reservation_query_t */
	DATA_PARSER_OPENAPI_RESERVATION_QUERY_PTR, /* openapi_reservation_query_t* */
	DATA_PARSER_RESERVATION_MOD_REQ, /* openapi_reservation_mod_request_t */
	DATA_PARSER_RESERVATION_MOD_REQ_PTR, /* openapi_reservation_mod_request_t* */
	DATA_PARSER_OPENAPI_RESERVATION_MOD_RESP, /* openapi_openapi_resp_single_t */
	DATA_PARSER_OPENAPI_RESERVATION_MOD_RESP_PTR, /* openapi_openapi_resp_single_t* */
	DATA_PARSER_JOB_ARRAY_RESPONSE_MSG, /* job_array_resp_msg_t */
	DATA_PARSER_JOB_ARRAY_RESPONSE_MSG_PTR, /* job_array_resp_msg_t * */
	DATA_PARSER_JOB_ARRAY_RESPONSE_MSG_ENTRY, /* JOB_ARRAY_RESPONSE_MSG_entry_t */
	DATA_PARSER_JOB_ARRAY_RESPONSE_MSG_ENTRY_PTR, /* JOB_ARRAY_RESPONSE_MSG_entry_t* */
	DATA_PARSER_JOB_ARRAY_RESPONSE_ARRAY, /* JOB_ARRAY_RESPONSE_MSG_entry_t[] */
	DATA_PARSER_OPENAPI_JOB_POST_RESPONSE, /* job_post_response_t */
	DATA_PARSER_OPENAPI_JOB_POST_RESPONSE_PTR, /* job_post_response_t* */
	DATA_PARSER_ERROR, /* int -> slurm_strerror() */
	DATA_PARSER_JOB_SUBMIT_RESPONSE_MSG, /* submit_response_msg_t */
	DATA_PARSER_JOB_SUBMIT_RESPONSE_MSG_PTR, /* submit_response_msg_t* */
	DATA_PARSER_OPENAPI_JOB_SUBMIT_RESPONSE, /* job_submit_response_t */
	DATA_PARSER_OPENAPI_JOB_SUBMIT_RESPONSE_PTR, /* job_submit_response_t* */
	DATA_PARSER_JOB_SUBMIT_REQ, /* job_submit_request_t */
	DATA_PARSER_JOB_SUBMIT_REQ_PTR, /* job_submit_request_t */
	DATA_PARSER_OPENAPI_JOB_ALLOC_RESP, /* openapi_job_alloc_response_t */
	DATA_PARSER_OPENAPI_JOB_ALLOC_RESP_PTR, /* openapi_job_alloc_response_t* */
	DATA_PARSER_JOB_ALLOC_REQ, /* openapi_job_alloc_request_t */
	DATA_PARSER_JOB_ALLOC_REQ_PTR, /* openapi_job_alloc_request_t* */
	DATA_PARSER_JOB_DESC_MSG, /* job_desc_msg_t */
	DATA_PARSER_JOB_DESC_MSG_ARGV, /* job_desc_msg_t->argv+argc */
	DATA_PARSER_JOB_DESC_MSG_CPU_FREQ, /* job_desc_msg_t->cpu_freq* */
	DATA_PARSER_JOB_DESC_MSG_CRON_ENTRY, /* cron_entry_t * */
	DATA_PARSER_JOB_DESC_MSG_ENV, /* job_desc_msg_t->env* */
	DATA_PARSER_JOB_DESC_MSG_NODES, /* job_desc_msg_t->min/max_cpus */
	DATA_PARSER_JOB_DESC_MSG_SPANK_ENV, /* job_desc_msg_t->spank_env* */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_CPU, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_FSIZE, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_DATA, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_STACK, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_CORE, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_RSS, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_NPROC, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_NOFILE, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_MEMLOCK, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_RLIMIT_AS, /* job_desc_msg_t->environment */
	DATA_PARSER_JOB_DESC_MSG_PTR, /* job_desc_msg_t* */
	DATA_PARSER_JOB_DESC_MSG_LIST, /* list_t of job_desc_msg_t* */
	DATA_PARSER_JOB_DESC_MSG_TASK_DISTRIBUTION, /* job_desc_msg_t->plane_size and job_desc_msg_t->task_dist */
	DATA_PARSER_JOB_DESC_MSG_PLANE_SIZE, /* job_desc_msg_t->plane_size and job_desc_msg_t->task_dist */
	DATA_PARSER_STRING_ARRAY, /* char** (NULL terminated) */
	DATA_PARSER_STRING_LIST, /* list_t of char* */
	DATA_PARSER_SIGNAL, /* uint16_t - UNIX process signal */
	DATA_PARSER_CPU_BINDING_FLAGS, /* uint16_t <-> cpu_bind_type_t */
	DATA_PARSER_CRON_ENTRY, /* cron_entry_t */
	DATA_PARSER_CRON_ENTRY_PTR, /* cron_entry_t* */
	DATA_PARSER_CRON_ENTRY_FLAGS, /* cron_entry_flag_t */
	DATA_PARSER_MEMORY_BINDING_TYPE, /* mem_bind_type_t */
	DATA_PARSER_OPEN_MODE, /* uint8_t - OPEN_MODE_* */
	DATA_PARSER_WARN_FLAGS, /* uint16_t - KILL_*|WARN_SENT */
	DATA_PARSER_X11_FLAGS, /* uint16_t - X11_FORWARD_* */
	DATA_PARSER_HOLD, /* uint32_t (priority) --hold */
	DATA_PARSER_OPENAPI_META, /* openapi_resp_meta_t */
	DATA_PARSER_OPENAPI_META_PTR, /* openapi_resp_meta_t* */
	DATA_PARSER_OPENAPI_META_COMMAND, /* openapi_resp_meta_t->command */
	DATA_PARSER_OPENAPI_ERROR, /* openapi_resp_error_t */
	DATA_PARSER_OPENAPI_ERROR_PTR, /* openapi_resp_error_t* */
	DATA_PARSER_OPENAPI_ERRORS, /* list_t of openapi_resp_error_t* */
	DATA_PARSER_OPENAPI_WARNING, /* openapi_resp_warning_t */
	DATA_PARSER_OPENAPI_WARNING_PTR, /* openapi_resp_warning_t* */
	DATA_PARSER_OPENAPI_WARNINGS, /* list_t of openapi_resp_warning_t* */
	DATA_PARSER_OPENAPI_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_TIMESTAMP, /* time_t */
	DATA_PARSER_TIMESTAMP_NO_VAL, /* time_t */
	DATA_PARSER_OPENAPI_SLURMDBD_CONFIG_RESP, /* openapi_resp_slurmdbd_config_t */
	DATA_PARSER_OPENAPI_SLURMDBD_CONFIG_RESP_PTR, /* openapi_resp_slurmdbd_config_t* */
	DATA_PARSER_SELECTED_STEP, /* slurm_selected_step_t */
	DATA_PARSER_SELECTED_STEP_PTR, /* slurm_selected_step_t* */
	DATA_PARSER_SELECTED_STEP_LIST, /* list_t of slurm_selected_step_t* */
	DATA_PARSER_OPENAPI_USER_PARAM, /* openapi_user_param_t */
	DATA_PARSER_OPENAPI_USER_PARAM_PTR, /* openapi_user_param_t* */
	DATA_PARSER_OPENAPI_USER_QUERY, /* openapi_user_query_t */
	DATA_PARSER_OPENAPI_USER_QUERY_PTR, /* openapi_user_query_t* */
	DATA_PARSER_FLAGS, /* data_parser_flags_t */
	DATA_PARSER_PROCESS_EXIT_CODE_VERBOSE, /* proc_exit_code_verbose_t */
	DATA_PARSER_PROCESS_EXIT_CODE_VERBOSE_PTR, /* proc_exit_code_verbose_t* */
	DATA_PARSER_PROCESS_EXIT_CODE_STATUS, /* proc_exit_code_status_t */
	DATA_PARSER_PROCESS_EXIT_CODE, /* uint32_t */
	DATA_PARSER_SHARES_REQ_MSG, /* shares_request_msg_t */
	DATA_PARSER_SHARES_REQ_MSG_PTR, /* shares_request_msg_t* */
	DATA_PARSER_SHARES_RESP_MSG, /* shares_response_msg_t */
	DATA_PARSER_SHARES_RESP_MSG_PTR, /* shares_response_msg_t* */
	DATA_PARSER_OPENAPI_SHARES_RESP, /* openapi_resp_single_t */
	DATA_PARSER_OPENAPI_SHARES_RESP_PTR, /* openapi_resp_single_t* */
	DATA_PARSER_SHARES_UINT64_TRES, /* SHARES_UINT64_TRES_t */
	DATA_PARSER_SHARES_UINT64_TRES_PTR, /* SHARES_UINT64_TRES_t* */
	DATA_PARSER_SHARES_UINT64_TRES_LIST, /* list_t of SHARES_UINT64_TRES_t */
	DATA_PARSER_SHARES_FLOAT128_TRES, /* SHARES_FLOAT128_TRES_t */
	DATA_PARSER_SHARES_FLOAT128_TRES_PTR, /* SHARES_FLOAT128_TRES_t* */
	DATA_PARSER_SHARES_FLOAT128_TRES_LIST, /* list_t of SHARES_FLOAT128_TRES_t */
	DATA_PARSER_ASSOC_SHARES_OBJ_LIST, /* list of assoc_shares_object_t* to convert to assoc_shares_object_wrap_t */
	DATA_PARSER_ASSOC_SHARES_OBJ_WRAP, /* assoc_shares_object_wrap_t to wrap assoc_shares_object_t */
	DATA_PARSER_ASSOC_SHARES_OBJ_WRAP_TRES_RUN_SECS, /* assoc_shares_object_wrap_t->tres_cnt&obj->tres_run_secs */
	DATA_PARSER_ASSOC_SHARES_OBJ_WRAP_TRES_GRP_MINS, /* assoc_shares_object_wrap_t->tres_cnt&obj->tres_grp_mins */
	DATA_PARSER_ASSOC_SHARES_OBJ_WRAP_TRES_USAGE_RAW, /* assoc_shares_object_wrap_t->tres_cnt&obj->usage_tres_raw */
	DATA_PARSER_ASSOC_SHARES_OBJ_WRAP_TYPE, /* assoc_shares_object_wrap_t.obj->user */
	DATA_PARSER_ASSOC_SHARES_OBJ_WRAP_PTR, /* assoc_shares_object_t* */
	DATA_PARSER_OVERSUBSCRIBE_JOBS, /* max_share */
	DATA_PARSER_OVERSUBSCRIBE_FLAGS, /* max_share */
	DATA_PARSER_JOB_PLANNED_TIME, /* slurmdb_job_rec_t->start - slurmdb_job_rec_t->eligible */
	DATA_PARSER_CR_TYPE, /* uint16_t - CR_* */
	DATA_PARSER_NODE_CR_TYPE, /* enum node_cr_state - uint32_t - NODE_CR_* */
	DATA_PARSER_OPENAPI_JOB_STATE_RESP, /* openapi_resp_job_state_t */
	DATA_PARSER_OPENAPI_JOB_STATE_RESP_PTR, /* openapi_resp_job_state_t* */
	DATA_PARSER_OPENAPI_JOB_STATE_QUERY, /* openapi_job_state_query_t */
	DATA_PARSER_OPENAPI_JOB_STATE_QUERY_PTR, /* openapi_job_state_query_t* */
	DATA_PARSER_JOB_STATE_RESP_MSG, /* job_state_response_msg_t */
	DATA_PARSER_JOB_STATE_RESP_MSG_PTR, /* job_state_response_msg_t* */
	DATA_PARSER_JOB_STATE_RESP_JOB, /* job_state_response_job_t */
	DATA_PARSER_JOB_STATE_RESP_JOB_PTR, /* job_state_response_job_t* */
	DATA_PARSER_JOB_STATE_RESP_JOB_JOB_ID, /* job_state_response_job_t->job_id,array_job_id,array_task_id_bitmap */
	DATA_PARSER_KILL_JOBS_MSG, /* kill_jobs_msg_t */
	DATA_PARSER_KILL_JOBS_MSG_PTR, /* kill_jobs_msg_t* */
	DATA_PARSER_KILL_JOBS_MSG_JOBS_ARRAY, /* kill_jobs_msg_t->jobs_array,jobs_cnt */
	DATA_PARSER_KILL_JOBS_RESP_MSG, /* kill_jobs_resp_msg_t */
	DATA_PARSER_KILL_JOBS_RESP_MSG_PTR, /* kill_jobs_resp_msg_t* */
	DATA_PARSER_KILL_JOBS_RESP_JOB, /* kill_jobs_resp_job_t */
	DATA_PARSER_KILL_JOBS_RESP_JOB_PTR, /* kill_jobs_resp_job_t* */
	DATA_PARSER_OPENAPI_KILL_JOBS_RESP, /* openapi_kill_jobs_resp_t */
	DATA_PARSER_OPENAPI_KILL_JOBS_RESP_PTR, /* openapi_kill_jobs_resp_t* */
	DATA_PARSER_OPENAPI_KILL_JOB_RESP, /* openapi_kill_jobs_resp_t */
	DATA_PARSER_OPENAPI_KILL_JOB_RESP_PTR, /* openapi_kill_jobs_resp_t* */
	DATA_PARSER_PRIORITY_BY_PARTITION, /* slurm_job_info_t */
	DATA_PARSER_PART_PRIO, /* part_prio_t */
	DATA_PARSER_PART_PRIO_PTR,
	DATA_PARSER_NODE_CERT_FLAGS,
	DATA_PARSER_TOPOLOGY_CONF, /* topology_ctx_t */
	DATA_PARSER_TOPOLOGY_CONF_PTR, /* topology_ctx_t* */
	DATA_PARSER_TOPOLOGY_CONF_ARRAY, /* topology_ctx_array_t */
	DATA_PARSER_TOPOLOGY_TREE, /* topology_ctx_t topology/tree plugin */
	DATA_PARSER_TOPOLOGY_BLOCK, /* topology_ctx_t topology/block plugin */
	DATA_PARSER_TOPOLOGY_FLAT, /* topology_ctx_t topology/flat plugin */
	DATA_PARSER_TOPOLOGY_TREE_CONFIG, /* topology_tree_config_t */
	DATA_PARSER_TOPOLOGY_TREE_CONFIG_PTR, /* topology_tree_config_t* */
	DATA_PARSER_TOPOLOGY_TREE_CONFIG_ARRAY, /* topology_tree_config_t->switch_configs,config_cnt */
	DATA_PARSER_TOPOLOGY_BLOCK_CONFIG, /* topology_block_config_t */
	DATA_PARSER_TOPOLOGY_BLOCK_CONFIG_PTR, /* topology_block_config_t* */
	DATA_PARSER_TOPOLOGY_BLOCK_CONFIG_ARRAY, /* topology_block_config_t->block_configs,config_cnt */
	DATA_PARSER_SWITCH_CONFIG, /* slurm_conf_switches_t */
	DATA_PARSER_SWITCH_CONFIG_PTR, /* slurm_conf_switches_t* */
	DATA_PARSER_BLOCK_CONFIG, /* slurm_conf_block_t */
	DATA_PARSER_BLOCK_CONFIG_PTR, /* slurm_conf_block_t* */
	DATA_PARSER_H_RESOURCE, /* hierarchical_resource_t */
	DATA_PARSER_H_RESOURCE_PTR, /* hierarchical_resource_t* */
	DATA_PARSER_H_RESOURCE_LIST, /* list_t* hierarchical_resource_t* */
	DATA_PARSER_H_RESOURCE_MODE_FLAG, /* HRES_MODE_* */
	DATA_PARSER_H_LAYER, /* hierarchy_layer_t */
	DATA_PARSER_H_LAYER_PTR, /* hierarchy_layer_t* */
	DATA_PARSER_H_LAYER_LIST, /* list_t* hierarchy_layer_t* */
	DATA_PARSER_H_RESOURCES_AS_LICENSE_LIST, /* parse H_RESOURCE_LIST to list_t* of licenses_t*  */
	DATA_PARSER_TYPE_MAX
} data_parser_type_t;

/*
 * Function prototype for callback when there is a parsing error
 * Return: true to continue parsing, false to stop parsing
 */
typedef bool (*data_parser_on_error_t)(void *arg, data_parser_type_t type,
				       int error_code, const char *source,
				       const char *why, ...)
	__attribute__((format(printf, 5, 6)));
/*
 * Function prototype for callback when there is a parsing warning
 */
typedef void (*data_parser_on_warn_t)(void *arg, data_parser_type_t type,
				      const char *source, const char *why, ...)
	__attribute__((format(printf, 4, 5)));

typedef struct data_parser_s data_parser_t;

/* data_parser plugin for current Slurm version */
#define SLURM_DATA_PARSER_VERSION \
	"data_parser/v" XSTRINGIFY(SLURM_API_AGE) "." \
	 XSTRINGIFY(SLURM_API_REVISION) "." \
	 XSTRINGIFY(SLURM_API_CURRENT)

/* Separator character for parameters for a given data_parser plugin list */
#define SLURM_DATA_PARSER_PLUGIN_PARAMS_CHAR "+"

/* data_parser plugin for current Slurm version with complex mode active */
#define SLURM_DATA_PARSER_VERSION_COMPLEX \
	SLURM_DATA_PARSER_VERSION SLURM_DATA_PARSER_PLUGIN_PARAMS_CHAR "complex"

/*
 * Initialize new data parser against given plugin
 * IN on_parse_error - callback when an parsing error is encountered
 * 	ptr must remain valid until free called.
 * IN on_dump_error - callback when an parsing error is encountered
 * 	ptr must remain valid until free called.
 * IN on_error_arg - ptr to pass to on_error function (not modified)
 * 	ptr must remain valid until free called.
 * IN on_parse_warn - callback when an parsing warning is encountered
 * 	ptr must remain valid until free called.
 * IN on_dump_warn - callback when an parsing warning is encountered
 * 	ptr must remain valid until free called.
 * IN on_warn_arg - ptr to pass to on_warn function (not modified)
 * 	ptr must remain valid until free called.
 * IN plugin_type - plugin_type of data_parser plugin to load/use
 * 	Parameters for plugin may be included when delimited by
 * 	SLURM_DATA_PARSER_PLUGIN_PARAMS_CHAR.
 * IN listf - list function if plugin_type = "list"
 * IN skip_loading - skip any calls related to loading the plugins
 * RET parser ptr
 * 	Must be freed by call to data_parser_g_free()
 */
extern data_parser_t *data_parser_g_new(data_parser_on_error_t on_parse_error,
					data_parser_on_error_t on_dump_error,
					data_parser_on_error_t on_query_error,
					void *error_arg,
					data_parser_on_warn_t on_parse_warn,
					data_parser_on_warn_t on_dump_warn,
					data_parser_on_warn_t on_query_warn,
					void *warn_arg, const char *plugin_type,
					plugrack_foreach_t listf,
					bool skip_loading);

/*
 * Initialize a new data parser for all plugins found
 *
 * IN on_parse_error - callback when an parsing error is encountered
 * 	ptr must remain valid until free called.
 * IN on_dump_error - callback when an parsing error is encountered
 * 	ptr must remain valid until free called.
 * IN on_error_arg - ptr to pass to on_error function (not modified)
 * 	ptr must remain valid until free called.
 * IN on_parse_warn - callback when an parsing warning is encountered
 * 	ptr must remain valid until free called.
 * IN on_dump_warn - callback when an parsing warning is encountered
 * 	ptr must remain valid until free called.
 * IN on_warn_arg - ptr to pass to on_warn function (not modified)
 * 	ptr must remain valid until free called.
 * IN plugin_type - CSV of plugin_types of data_parser plugin to load/use
 * IN listf - list function if plugin_type = "list"
 * IN skip_loading - skip any calls related to loading the plugins
 * RET NULL terminated parser array ptr
 * 	Must be freed by call to data_parser_g_array_free()
 */
extern data_parser_t **data_parser_g_new_array(
	data_parser_on_error_t on_parse_error,
	data_parser_on_error_t on_dump_error,
	data_parser_on_error_t on_query_error,
	void *error_arg,
	data_parser_on_warn_t on_parse_warn,
	data_parser_on_warn_t on_dump_warn,
	data_parser_on_warn_t on_query_warn,
	void *warn_arg,
	const char *plugin_type,
	plugrack_foreach_t listf,
	bool skip_loading);

typedef enum {
	DATA_PARSER_ATTR_INVALID = 0,
	DATA_PARSER_ATTR_DBCONN_PTR, /* return of slurmdb_connection_get() - will not xfree */
	DATA_PARSER_ATTR_QOS_LIST, /* List<slurmdb_qos_rec_t *> - will xfree() */
	DATA_PARSER_ATTR_TRES_LIST, /* List<slurmdb_tres_rec_t *> - will xfree() */
	DATA_PARSER_ATTR_MAX /* place holder - do not use */
} data_parser_attr_type_t;

/*
 * Assign additional resource to parser
 * IN parser - parser to add resource
 * IN type - type of resource to assign
 * IN obj - ptr of resource to assign
 *   make sure to match the type given in data_parser_attr_type_t
 * RET SLURM_SUCCESS or error
 */
extern int data_parser_g_assign(data_parser_t *parser,
				data_parser_attr_type_t type, void *obj);

/*
 * Get Plugin type as string.
 * String is valid for the life of the parser.
 * RET plugin including params as string
 */
extern const char *data_parser_get_plugin(data_parser_t *parser);

/*
 * Get Plugin type as string stripping "data_parser/".
 * String is valid for the life of the parser.
 */
extern const char *data_parser_get_plugin_version(data_parser_t *parser);

/*
 * Get Plugin params as string
 * String is valid for the life of the parser.
 */
extern const char *data_parser_get_plugin_params(data_parser_t *parser);

/*
 * Free data parser instance
 * IN parser - parser to free
 * IN skip_unloading - skip unloading plugins
 * RET SLURM_SUCCESS or error
 */
extern void data_parser_g_free(data_parser_t *parser, bool skip_unloading);

#define FREE_NULL_DATA_PARSER(_X)                     \
	do {                                          \
		if (_X)                               \
			data_parser_g_free(_X, true); \
		_X = NULL;                            \
	} while (0)

/*
 * Free NULL terminated array of parsers
 */
extern void data_parser_g_array_free(data_parser_t **ptr, bool skip_unloading);

#define FREE_NULL_DATA_PARSER_ARRAY(_X, SKIP_UNLOAD)               \
	do {                                                       \
		if (_X)                                            \
			data_parser_g_array_free(_X, SKIP_UNLOAD); \
		_X = NULL;                                         \
	} while (0)

/*
 * Parse given data_t source into target struct dst
 * use DATA_PARSE() macro instead of calling directly!
 *
 * IN parser - return from data_parser_g_new()
 * IN type - expected type of data (there is no guessing here)
 * IN dst - ptr to struct/scalar to populate
 * 	This *must* be a pointer to the object and not just a value of the object.
 * IN dst_bytes - size of object pointed to by dst
 * IN src - data to parse into obj
 * IN/OUT parent_path - array of parent dictionary keys.
 *    Parse path from entire source to this specific src data_t.
 *    Assist any callers with knowing where parsing failed in tree.
 * RET SLURM_SUCCESS or error
 */
extern int data_parser_g_parse(data_parser_t *parser, data_parser_type_t type,
			       void *dst, ssize_t dst_bytes, data_t *src,
			       data_t *parent_path);

#define DATA_PARSE(parser, type, dst, src, parent_path)                    \
	data_parser_g_parse(parser, DATA_PARSER_##type, &dst, sizeof(dst), \
			    src, parent_path)

/*
 * Parse given target struct src into data_t dst
 * use DATA_DUMP() macro instead of calling directly!
 *
 * IN parser - return from data_parser_g_new()
 * IN type - type of obj
 * IN src - ptr to struct/scalar to dump to data_t
 * 	This *must* be a pointer to the object and not just a value of the object.
 * IN src_bytes - size of object pointed to by src
 * IN src - data to parse into obj
 * IN dst - ptr to data to populate with obj dump
 * RET SLURM_SUCCESS or error
 */
extern int data_parser_g_dump(data_parser_t *parser, data_parser_type_t type,
			      void *src, ssize_t src_bytes, data_t *dst);

#define DATA_DUMP(parser, type, src, dst) \
	data_parser_g_dump(parser, DATA_PARSER_##type, &src, sizeof(src), dst)

/*
 * Generate meta instance for a CLI command
 */
extern openapi_resp_meta_t *data_parser_cli_meta(int argc, char **argv,
						 const char *mime_type);

#define DATA_PARSER_DUMP_CLI_CTXT_MAGIC 0x1BA211B3
typedef struct {
	int magic; /* DATA_PARSER_DUMP_CLI_CTXT_MAGIC */
	int rc;
	list_t *errors;
	list_t *warnings;
	const char *data_parser;
} data_parser_dump_cli_ctxt_t;

/*
 * Dump object of given type to STDOUT
 * This function is only intended for the simple dump of the data and then
 * exiting of the CLI command.
 * IN type - data parser type for *obj
 * IN obj_bytes - sizeof(*obj)
 * IN acct_db_conn - slurmdb connection or NULL
 * IN mime_type - dump object as given mime type
 * IN data_parser - data_parser parameters
 * IN meta - ptr to meta instance
 * RET SLURM_SUCCESS or error
 */
extern int data_parser_dump_cli_stdout(data_parser_type_t type, void *obj,
				       int obj_bytes, void *acct_db_conn,
				       const char *mime_type,
				       const char *data_parser,
				       data_parser_dump_cli_ctxt_t *ctxt,
				       openapi_resp_meta_t *meta);

/*
 * Dump object to stdout
 */
#define DATA_DUMP_CLI(type, src, argc, argv, db_conn, mime_type,              \
		      data_parser_str, rc)                                    \
	do {                                                                  \
		data_parser_dump_cli_ctxt_t dump_ctxt = {                     \
			.magic = DATA_PARSER_DUMP_CLI_CTXT_MAGIC,             \
			.data_parser = data_parser_str,                       \
		};                                                            \
		__typeof__(src) *src_ptr = &src;                              \
		if (!src.OPENAPI_RESP_STRUCT_META_FIELD_NAME)                 \
			src.OPENAPI_RESP_STRUCT_META_FIELD_NAME =             \
				data_parser_cli_meta(argc, argv, mime_type);  \
		if (!src.OPENAPI_RESP_STRUCT_ERRORS_FIELD_NAME)               \
			src.OPENAPI_RESP_STRUCT_ERRORS_FIELD_NAME =           \
				dump_ctxt.errors =                            \
					list_create(free_openapi_resp_error); \
		else                                                          \
			dump_ctxt.errors =                                    \
				src.OPENAPI_RESP_STRUCT_ERRORS_FIELD_NAME;    \
		if (!src.OPENAPI_RESP_STRUCT_WARNINGS_FIELD_NAME)             \
			src.OPENAPI_RESP_STRUCT_WARNINGS_FIELD_NAME =         \
				dump_ctxt.warnings = list_create(             \
					free_openapi_resp_warning);           \
		else                                                          \
			dump_ctxt.warnings =                                  \
				src.OPENAPI_RESP_STRUCT_WARNINGS_FIELD_NAME;  \
		rc = data_parser_dump_cli_stdout(                             \
			DATA_PARSER_##type, src_ptr, sizeof(*src_ptr),        \
			db_conn, mime_type, data_parser_str, &dump_ctxt,      \
			src.OPENAPI_RESP_STRUCT_META_FIELD_NAME);             \
		FREE_OPENAPI_RESP_COMMON_CONTENTS(src_ptr);                   \
	} while (false)

/*
 * Dump object as single field to in common openapi response dictionary
 */
#define DATA_DUMP_CLI_SINGLE(type, src, argc, argv, db_conn, mime_type, \
			     data_parser, rc)                           \
	do {                                                            \
		openapi_resp_single_t openapi_resp = {                  \
			.response = src,                                \
		};                                                      \
		DATA_DUMP_CLI(type, openapi_resp, argc, argv, db_conn,  \
			      mime_type, data_parser, rc);              \
	} while (false)

/* Dump a struct into a json or yaml string. All errors and warnings logged */
#define DATA_DUMP_TO_STR(type, src, ret_str, db_conn, mime_type, sflags, rc)   \
	do {                                                                   \
		data_parser_t *parser = NULL;                                  \
		data_parser_dump_cli_ctxt_t ctxt = { 0 };                      \
		data_t *dst = NULL;                                            \
                                                                               \
		ctxt.magic = DATA_PARSER_DUMP_CLI_CTXT_MAGIC;                  \
		ctxt.data_parser = SLURM_DATA_PARSER_VERSION;                  \
		ctxt.errors = list_create(free_openapi_resp_error);            \
		ctxt.warnings = list_create(free_openapi_resp_warning);        \
		parser = data_parser_cli_parser(ctxt.data_parser, &ctxt);      \
		if (!parser) {                                                 \
			rc = ESLURM_DATA_INVALID_PARSER;                       \
			error("%s parsing of %s not supported by %s",          \
			      mime_type, XSTRINGIFY(DATA_PARSER_##type),       \
			      ctxt.data_parser);                               \
		} else {                                                       \
			if (db_conn)                                           \
				data_parser_g_assign(                          \
					parser, DATA_PARSER_ATTR_DBCONN_PTR,   \
					db_conn);                              \
			dst = data_new();                                      \
			DATA_DUMP(parser, type, src, dst);                     \
			list_for_each(ctxt.warnings, openapi_warn_log_foreach, \
				      NULL);                                   \
			list_for_each(ctxt.errors, openapi_error_log_foreach,  \
				      NULL);                                   \
		}                                                              \
                                                                               \
		if (data_get_type(dst) != DATA_TYPE_NULL) {                    \
			serializer_flags_t tmp_sflags = sflags;                \
                                                                               \
			if (data_parser_g_is_complex(parser))                  \
				tmp_sflags |= SER_FLAGS_COMPLEX;               \
			serialize_g_data_to_string(&ret_str, NULL, dst,        \
						   mime_type, tmp_sflags);     \
		}                                                              \
		FREE_NULL_DATA(dst);                                           \
		FREE_NULL_LIST(ctxt.errors);                                   \
		FREE_NULL_LIST(ctxt.warnings);                                 \
		FREE_NULL_DATA_PARSER(parser);                                 \
	} while (false)

/* Parse a json or yaml string into a struct. All errors and warnings logged */
#define DATA_PARSE_FROM_STR(type, str, str_len, dst, db_conn, mime_type, rc)   \
	do {                                                                   \
		data_t *src = NULL;                                            \
		data_parser_dump_cli_ctxt_t ctxt = { 0 };                      \
		data_t *parent_path = NULL;                                    \
		data_parser_t *parser = NULL;                                  \
                                                                               \
		rc = serialize_g_string_to_data(&src, str, str_len,            \
						mime_type);                    \
		if (rc) {                                                      \
			FREE_NULL_DATA(src);                                   \
			break;                                                 \
		}                                                              \
                                                                               \
		ctxt.magic = DATA_PARSER_DUMP_CLI_CTXT_MAGIC;                  \
		ctxt.data_parser = SLURM_DATA_PARSER_VERSION;                  \
		ctxt.errors = list_create(free_openapi_resp_error);            \
		ctxt.warnings = list_create(free_openapi_resp_warning);        \
		parser = data_parser_cli_parser(ctxt.data_parser, &ctxt);      \
		if (!parser) {                                                 \
			rc = ESLURM_DATA_INVALID_PARSER;                       \
			error("%s parsing of %s not supported by %s",          \
			      mime_type, XSTRINGIFY(DATA_PARSER_##type),       \
			      ctxt.data_parser);                               \
		} else {                                                       \
			if (db_conn)                                           \
				data_parser_g_assign(                          \
					parser, DATA_PARSER_ATTR_DBCONN_PTR,   \
					db_conn);                              \
			parent_path = data_set_list(data_new());               \
			(void) data_convert_tree(src, DATA_TYPE_NONE);         \
			rc = DATA_PARSE(parser, type, dst, src, parent_path);  \
			list_for_each(ctxt.warnings, openapi_warn_log_foreach, \
				      NULL);                                   \
			list_for_each(ctxt.errors, openapi_error_log_foreach,  \
				      NULL);                                   \
		}                                                              \
		FREE_NULL_DATA(src);                                           \
		FREE_NULL_LIST(ctxt.errors);                                   \
		FREE_NULL_LIST(ctxt.warnings);                                 \
		FREE_NULL_DATA(parent_path);                                   \
		FREE_NULL_DATA_PARSER(parser);                                 \
	} while (false)

/*
 * Create data_parser instance for CLI
 * IN data_parser - data_parser parameters
 * RET parser ptr
 *	Must be freed by call to data_parser_g_free()
 */
extern data_parser_t *data_parser_cli_parser(const char *data_parser,
					     void *arg);

/*
 * Get the OpenAPI type for a given parser's field
 * IN parser - parser to query
 * IN field - field name or NULL to get parser's type
 * RET openapi type or OPENAPI_TYPE_INVALID if not found
 */
extern openapi_type_t data_parser_g_resolve_openapi_type(
	data_parser_t *parser,
	data_parser_type_t type,
	const char *field);

/*
 * Get stringified type from parser
 * IN parser - parser to query
 * IN type - parser type
 * RET string of parser type or NULL if not known to plugin
 */
extern const char *data_parser_g_resolve_type_string(data_parser_t *parser,
						     data_parser_type_t type);

/*
 * Add reference to type for given parser.
 * 	Intended to be called before calling data_parser_g_populate_schema() to
 * 	ensure the single referenced types are populated directly.
 * IN parser - parser to query
 * IN type - parser type
 * IN/OUT references_ptr - Pointer to pointer to populate with (opaque) references.
 * 	Must be released by call to data_parser_g_release_references().
 * RET SLURM_SUCCESS or error
 */
extern int data_parser_g_increment_reference(data_parser_t *parser,
					     data_parser_type_t type,
					     void **references_ptr);
/*
 * Populate reference to type for given parser.
 * IN parser - parser to query
 * IN type - parser type
 * IN/OUT references_ptr - Pointer to pointer to populate with (opaque) references.
 * 	Must be released by call to data_parser_g_release_references().
 * IN dst - Location to populate with schema or $ref to schema
 * IN schemas - dictionary of schemas for OpenAPI spec to be populated as needed
 * RET SLURM_SUCCESS or error
 */
extern int data_parser_g_populate_schema(data_parser_t *parser,
					 data_parser_type_t type,
					 void **references_ptr, data_t *dst,
					 data_t *schemas);

/*
 * Populate reference to parameter type for given parser.
 * IN parser - parser to query
 * IN types - list of parser types (can be DATA_PARSER_TYPE_INVALID)
 * IN/OUT references_ptr - Pointer to pointer to populate with (opaque) references.
 * 	Must be released by call to data_parser_g_release_references().
 * IN dst - Location to populate with schema or $ref to schema
 * IN schemas - dictionary of schemas for OpenAPI spec to be populated as needed
 * RET SLURM_SUCCESS or error
 */
extern int data_parser_g_populate_parameters(data_parser_t *parser,
					     data_parser_type_t parameter_type,
					     data_parser_type_t query_type,
					     void **references_ptr, data_t *dst,
					     data_t *schemas);

/*
 * Release memory used by referencesptr
 * IN parser - parser to query
 * IN/OUT references_ptr - Pointer to pointer to (opaque) references to release.
 */
extern void data_parser_g_release_references(data_parser_t *parser,
					     void **references_ptr);

/*
 * Check if parser is configured with +complex flag active
 * IN parser - parser to query
 * RET True if parser is configure with +complex
 */
extern bool data_parser_g_is_complex(data_parser_t *parser);

/*
 * Dump the data flags the parser is configure with (i.e. +complex) into dst
 * IN parser - parser to query
 * IN/OUT dst - populate dst
 * RET - SLURM_SUCCESS on success else error
 */
extern int data_parser_g_dump_flags(data_parser_t *parser, data_t *dst);

/*
 * Check if parser is deprecated
 * IN parser - parser to query
 * RET True if parser is deprecated
 */
extern bool data_parser_g_is_deprecated(data_parser_t *parser);

#endif
