* Copyright (c) 2022 Huawei Technologies Co.,Ltd.
*
* GR is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* -------------------------------------------------------------------------
*
* gr_args_parse.h
*
*
* IDENTIFICATION
* src/common/gr_args_parse.h
*
* -------------------------------------------------------------------------
*/
#ifndef GR_ARGS_PARSE_H_
#define GR_ARGS_PARSE_H_
#include "cm_base.h"
#include "gr_ctrl_def.h"
typedef status_t (*cmd_parser_check_args_t)(const char *input_args);
typedef status_t (*cmd_parser_convert_args_t)(const char *input_args, void **convert_result, int *convert_size);
typedef void (*cmd_parser_clean_convert_args_t)(char *convert_result, int convert_size);
typedef struct st_gr_args_t {
char short_name;
const char *long_name;
int32_t required;
int32_t required_args;
cmd_parser_check_args_t check_args;
cmd_parser_convert_args_t convert_args;
cmd_parser_clean_convert_args_t clean_convert_args;
int32_t inputed;
char *input_args;
void *convert_result;
int32_t convert_result_size;
} gr_args_t;
typedef status_t (*cmd_parse_check_t)(gr_args_t *cmd_args_set, int set_size);
typedef struct st_gr_args_set_t {
gr_args_t *cmd_args;
int32_t args_size;
cmd_parse_check_t args_check;
} gr_args_set_t;
typedef void (*gr_admin_help)(const char *prog_name, int print_flag);
typedef status_t (*gr_admin_cmd_proc)(void);
typedef struct st_gr_admin_cmd_t {
char cmd[CM_MAX_NAME_LEN];
gr_admin_help help;
gr_admin_cmd_proc proc;
gr_args_set_t *args_set;
bool8 log_necessary;
} gr_admin_cmd_t;
typedef enum en_gr_help_type {
GR_HELP_DETAIL = 0,
GR_HELP_SIMPLE,
} gr_help_type;
#define GR_ARG_IDX_0 0
#define GR_ARG_IDX_1 1
#define GR_ARG_IDX_2 2
#define GR_ARG_IDX_3 3
#define GR_ARG_IDX_4 4
#define GR_ARG_IDX_5 5
#define GR_ARG_IDX_6 6
#define GR_ARG_IDX_7 7
#define GR_ARG_IDX_8 8
#define GR_ARG_IDX_9 9
#define GR_ARG_IDX_10 10
#define CMD_ARGS_AT_LEAST 2
status_t cmd_parse_args(int argc, char **argv, gr_args_set_t *args_set);
void cmd_parse_init(gr_args_t *cmd_args_set, int set_size);
void cmd_parse_clean(gr_args_t *cmd_args_set, int set_size);
status_t gr_load_local_server_config(gr_config_t *inst_cfg);
status_t gr_check_meta_type(const char *type);
status_t gr_check_meta_id(const char *intput);
status_t cmd_parse_check(gr_args_t *cmd_args_set, int set_size);
#endif