80 lines
2.4 KiB
C
80 lines
2.4 KiB
C
/*** cmdarg.h - Command argument parsing Definitions
|
|
*
|
|
* Copyright (c) 1996,1997 Microsoft Corporation
|
|
* Author: Michael Tsang (MikeTs)
|
|
* Created 09/18/96
|
|
*
|
|
* MODIFICATION HISTORY
|
|
*/
|
|
|
|
#ifndef _CMDARG_H
|
|
#define _CMDARG_H
|
|
|
|
#ifdef DEBUGGER
|
|
|
|
/*** Macros
|
|
*/
|
|
|
|
#define ARG_ERROR(x) ConPrintf(MODNAME "_ARGERR: "); \
|
|
ConPrintf x; \
|
|
ConPrintf("\n");
|
|
|
|
/*** Constants
|
|
*/
|
|
|
|
// Error codes
|
|
#define ARGERR_NONE 0
|
|
#define ARGERR_SEP_NOT_FOUND -1
|
|
#define ARGERR_INVALID_NUMBER -2
|
|
#define ARGERR_INVALID_ARG -3
|
|
#define ARGERR_ASSERT_FAILED -4
|
|
|
|
// Command argument flags
|
|
#define AF_NOI 0x00000001 //NoIgnoreCase
|
|
#define AF_SEP 0x00000002 //require separator
|
|
|
|
// Command argument types
|
|
#define AT_END 0 //end marker of arg table
|
|
#define AT_STRING 1
|
|
#define AT_NUM 2
|
|
#define AT_ENABLE 3
|
|
#define AT_DISABLE 4
|
|
#define AT_ACTION 5
|
|
|
|
/*** Type definitions
|
|
*/
|
|
|
|
typedef struct _cmdarg CMDARG;
|
|
typedef CMDARG *PCMDARG;
|
|
typedef LONG (LOCAL *PFNARG)(PCMDARG, PSZ, ULONG, ULONG);
|
|
|
|
struct _cmdarg
|
|
{
|
|
PSZ pszArgID; //argument ID string
|
|
ULONG dwArgType; //AT_*
|
|
ULONG dwfArg; //AF_*
|
|
PVOID pvArgData; //AT_END: none
|
|
//AT_STRING: PPSZ - ptr. to string ptr.
|
|
//AT_NUM: PLONG - ptr. to number
|
|
//AT_ENABLE: PULONG - ptr. to flags
|
|
//AT_DISABLE: PULONG - ptr. to flags
|
|
//AT_ACTION: none
|
|
ULONG dwArgParam; //AT_END: none
|
|
//AT_STRING: none
|
|
//AT_NUM: base
|
|
//AT_ENABLE: flag bit mask
|
|
//AT_DISABLE: flag bit mask
|
|
//AT_ACTION: none
|
|
PFNARG pfnArg; //ptr. to argument verification function or
|
|
// action function if AT_ACTION
|
|
};
|
|
|
|
/*** Exported function prototypes
|
|
*/
|
|
|
|
LONG LOCAL DbgParseArgs(PCMDARG ArgTable, PULONG pdwNumArgs,
|
|
PULONG pdwNonSWArgs, PSZ pszTokenSeps);
|
|
|
|
#endif //ifdef DEBUGGER
|
|
#endif //ifndef _CMDARG_H
|