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