1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2021 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __MPP_OPT_H__ 18*437bfbebSnyanmisaka #define __MPP_OPT_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "rk_type.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka /* 23*437bfbebSnyanmisaka * return zero or positive for option parser aproach step 24*437bfbebSnyanmisaka * return negative for failure or option help 25*437bfbebSnyanmisaka */ 26*437bfbebSnyanmisaka typedef RK_S32 (*OptParser)(void *ctx, const char *next); 27*437bfbebSnyanmisaka 28*437bfbebSnyanmisaka typedef struct MppOptInfo_t { 29*437bfbebSnyanmisaka const char* name; 30*437bfbebSnyanmisaka const char* full_name; 31*437bfbebSnyanmisaka const char* help; 32*437bfbebSnyanmisaka OptParser proc; 33*437bfbebSnyanmisaka } MppOptInfo; 34*437bfbebSnyanmisaka 35*437bfbebSnyanmisaka typedef void* MppOpt; 36*437bfbebSnyanmisaka 37*437bfbebSnyanmisaka #ifdef __cplusplus 38*437bfbebSnyanmisaka extern "C" { 39*437bfbebSnyanmisaka #endif 40*437bfbebSnyanmisaka 41*437bfbebSnyanmisaka MPP_RET mpp_opt_init(MppOpt *opt); 42*437bfbebSnyanmisaka MPP_RET mpp_opt_deinit(MppOpt opt); 43*437bfbebSnyanmisaka 44*437bfbebSnyanmisaka MPP_RET mpp_opt_setup(MppOpt opt, void *ctx); 45*437bfbebSnyanmisaka /* Add NULL info to mark end of options */ 46*437bfbebSnyanmisaka MPP_RET mpp_opt_add(MppOpt opt, MppOptInfo *info); 47*437bfbebSnyanmisaka 48*437bfbebSnyanmisaka MPP_RET mpp_opt_parse(MppOpt opt, int argc, char **argv); 49*437bfbebSnyanmisaka 50*437bfbebSnyanmisaka #ifdef __cplusplus 51*437bfbebSnyanmisaka } 52*437bfbebSnyanmisaka #endif 53*437bfbebSnyanmisaka 54*437bfbebSnyanmisaka #endif /*__MPP_OPT_H__*/ 55