14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * duk_args.h * 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _h_arg_defs_ 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define _h_arg_defs_ 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef SET_RCSID 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic const char duk_args_h[] = "$Id: duk_args.h,v 1.3.6.3 2007/08/31 17:44:52 dahan Exp $"; 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "all_defs.h" 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _RTT 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "duk_io.h" 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* argument types */ 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_BOO 1 /* A boolean, switch */ 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_STR 2 /* A string */ 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_INT 3 /* An integer */ 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_FLT 4 /* A floating point number */ 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_FIL 5 /* A file name */ 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_LIS 6 /* A list of strings */ 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_TYP_MASK 0x0f 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_TYP(X) (A_TYP_MASK & (X)) 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* Array flag */ 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_ARRAY 0x10 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_IF_ARRAY(X) (A_ARRAY & (X)) 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* Mandatory arguments info */ 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_MAND 0x20 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_IF_MAND(X) (A_MAND & (X)) 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* flagless arguments */ 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_NOF 0x40 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_IF_NOF(X) (A_NOF & (X)) 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* private info */ 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_SET 0x80 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define A_IF_SET(X) (A_SET & (X)) 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @todo document 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef union 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *a_string; 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int *a_int; 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project float *a_float; 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _RTT 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PFile** a_file; 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char **a_list; 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectarg_name; 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int typ; 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *flag; 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int max_args; 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project arg_name name; 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *def; 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectarg_info; 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define SET_ARG_ENTRY(A,W,X,Y,Z) ((A)->typ=(W), (A)->flag=(X), (A)->name.a_string=(Y), (A)->max_args=1, (A)->def=(Z)) 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define SET_ARRAY_ARG_ENTRY(A,W,X,Y,N,Z) ((A)->typ=((W)|A_ARRAY), (A)->flag=(X), (A)->name.a_string=(Y), (A)->max_args=(N), (A)->def=(Z)) 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint parse_single_argument(arg_info *avlist, int avc, char *key, char *value, 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int count, int override, int *success); 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint get_single_argument(arg_info *avlist, int avc, char *key, void *value, 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned long *valueLen, int typ); 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint get_string_argument(arg_info *avlist, int avc, char *key, char *value, int valueLen, int *bytes_required, int typ); 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __cplusplus 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectextern "C" 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int com_arg_parse(int argc, char **argv, int avc, arg_info *avlist, 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *module); 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef __cplusplus 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint get_arginfo_flags(arg_info *arglist, int argc, char buffer[], int buflen); 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint is_flag_assigned(char *pattern, int avc, arg_info *avlist); 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid help_line(char *problem, int avc, arg_info *avlist); 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid statement(char *descinfo); 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _RTT 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint resource_arg_parse(const char *resname, char *module, int avc, 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project arg_info *avlist); 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid save_parsed_args(const char *resname, char *module, int avc, 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project arg_info *avlist); 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* _RTT */ 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int value; 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *entry; 1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectlist_item; 1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint lookup_list(list_item *list_data, int nlist, char *key); 1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* _h_arg_defs_ */ 126