//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1996 - 1999 // // File: cwargv.hxx // // Contents: argv parsing api // // History: 02-Oct-1997 pberkman create // //-------------------------------------------------------------------------- #ifndef CWARGV_HXX #define CWARGV_HXX #include "stack.hxx" #define WARGV_VALUETYPE_BOOL 1 // just there or not #define WARGV_VALUETYPE_WCHAR 2 // -p file_name, etc. #define WARGV_VALUETYPE_DWORDH 3 // -c 99, etc. hex #define WARGV_VALUETYPE_DWORDD 4 // -c 99, etc. decimal // // command file argument is xxxx.exe [options] [filename] [@commandfile] // class cWArgv_ { public: cWArgv_(HINSTANCE hInst0, BOOL *pfFailed, BOOL fCheckForCommandFile = TRUE); virtual ~cWArgv_(void); BOOL Add2List(DWORD dwsidOption, DWORD dwsidOptionHellp, DWORD dwValueType, void *pvDefaultValue = NULL, BOOL fInternalArg = FALSE); BOOL Fill(int argc, WCHAR **wargv); void *GetValue(DWORD dwsidOption); WCHAR *GetOption(DWORD dwsidOption); WCHAR *GetOptionHelp(DWORD dwsidOption); WCHAR *GetFileName(DWORD *pdwidxLast = NULL); // the format should be "usage" "[options]" // "[@commandfile]" "filename" // "" void AddUsageText(DWORD dwsidUsageWord, DWORD dwsidUsageOptionsText, DWORD dwsidUsageCmdFileText, DWORD dwsidUsageAddText, DWORD dwsidOptionParamText); WCHAR *GetUsageString(void); BOOL IsSet(DWORD dwsidOption); private: HINSTANCE hInst; BOOL fChkCmdF; BOOL fShowHiddenArgs; BOOL fNonHiddenParamArgs; WCHAR *pwszThisFilename; WCHAR *pwszUsageWord; WCHAR *pwszUsageOptionsText; WCHAR *pwszUsageCmdFileText; WCHAR *pwszOptionParamText; WCHAR *pwszUsageAddText; WCHAR *pwszUsageString; WCHAR *pwszNonParamArgBlanks; DWORD dwLongestArg; Stack_ *pArgs; BOOL ProcessCommandFile(WCHAR *pwszFile); int ProcessArg(int argc, WCHAR **wargv); BOOL AddFile(WCHAR *pwszFile); void StripQuotes(WCHAR *pwszIn); }; #endif // CWARGV_HXX