263 lines
9.4 KiB
C++
263 lines
9.4 KiB
C++
// ==========================================================================
|
|
// Class Specification : COXCommandOptionDesc
|
|
// ==========================================================================
|
|
|
|
// Header file : oxcmdopd.h
|
|
|
|
// This software along with its related components, documentation and files ("The Libraries")
|
|
// is © 1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is
|
|
// governed by a software license agreement ("Agreement"). Copies of the Agreement are
|
|
// available at The Code Project (www.codeproject.com), as part of the package you downloaded
|
|
// to obtain this file, or directly from our office. For a copy of the license governing
|
|
// this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900.
|
|
|
|
// //////////////////////////////////////////////////////////////////////////
|
|
|
|
// Properties:
|
|
// NO Abstract class (does not have any objects)
|
|
// YES Derived from CObject
|
|
|
|
// NO Is a Cwnd.
|
|
// NO Two stage creation (constructor & Create())
|
|
// NO Has a message map
|
|
// NO Needs a resource (template)
|
|
|
|
// NO Persistent objects (saveable on disk)
|
|
// Yes Uses exceptions (same as CFile)
|
|
|
|
// //////////////////////////////////////////////////////////////////////////
|
|
|
|
// Desciption :
|
|
// Contains information about a command option, its full name, abbreviations,
|
|
// description, etc.
|
|
// For detailed explanation, see constructor with parameters.
|
|
|
|
// Remark:
|
|
// The option descriptor class, each instance of
|
|
// this class represents a valid option to the
|
|
// program and some properties about that option.
|
|
// Can be used by CmdOptions to produce a
|
|
// usage message as well as to parse valid options.
|
|
// Example:
|
|
// void CMyApp::CreateValidOptions()
|
|
// {
|
|
// COXCommandOptionDesc codHelp (_T("HELP"), NULL, _T("Prints a help message"));
|
|
// COXCommandOptionDesc codRun (_T("RUN"), NULL, _T("Automatically execute a testcase"));
|
|
// COXCommandOptionDesc codEmf (_T("EMF"), COD_LASTARG, _T("MetaFile which specified GDI calls to make"));
|
|
// COXCommandOptionDesc codVerify(_T("VERIFY"), COD_ARGOK, _T("Verification option"));
|
|
// COXCommandOptionDesc codDiff (_T("DIFFERENCE"),COD_FIRSTARG,_T("File to write screen differences to"));
|
|
// COXCommandOptionDesc codCmpScr(_T("CMPSCR"), COD_FIRSTARG,_T("File to compare screen to"));
|
|
// COXCommandOptionDesc codOutScr(_T("OUTSCR"), COD_FIRSTARG,_T("File to write actual screen to"));
|
|
// COXCommandOptionDesc codMask (_T("MASK"), COD_FIRSTARG,_T("File to mask screen differences with"));
|
|
// COXCommandOptionDesc codCrc (_T("CRC"), COD_FIRSTARG,_T("File to read/write CRC code from/to"));
|
|
// COXCommandOptionDesc codGen (_T("GENERATE"), NULL, _T("Interactive session for generating EMF file"));
|
|
// COXCommandOptionDesc codRes (_T("RES"), COD_ARRAY, _T("Resources available"));
|
|
// COXCommandOptionDesc codXList (_T("X"), COD_ASSOCARRAY,_T("Variable/Value pairs"));
|
|
// }
|
|
|
|
// Prerequisites (necessary conditions):
|
|
// ***
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __CMDOPTD_H__
|
|
#define __CMDOPTD_H__
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
#include "OXDllExt.h"
|
|
|
|
|
|
const int COD_ARGOK = 0x1; // Does option take argument?
|
|
const int COD_REPEATOK = 0x2; // Is option valid more than once?
|
|
const int COD_REP_FIRST = 0x4; // Use first if option is repeated
|
|
const int COD_REP_LAST = 0x8; // Use last if option is repeated
|
|
const int COD_REP_ARRAY = 0x10; // Build array if option is repeated
|
|
const int COD_ASSOCIATIVE = 0x20; // Takes two arguments i.e. /X=variable=value
|
|
const int COD_FIRSTARG = COD_ARGOK | COD_REPEATOK | COD_REP_FIRST;
|
|
const int COD_LASTARG = COD_ARGOK | COD_REPEATOK | COD_REP_LAST;
|
|
const int COD_ARRAY = COD_ARGOK | COD_REPEATOK | COD_REP_ARRAY;
|
|
const int COD_ASSOCARRAY = COD_ARGOK | COD_REPEATOK | COD_ASSOCIATIVE;
|
|
|
|
// Currently allows for COD_REP_FIRST && COD_REP_LAST, and other nonsense combinations.
|
|
// This is not correct so pay attention to which flags you are combining !!!!!
|
|
|
|
class OX_CLASS_DECL COXCommandOptionDesc : public CObject
|
|
{
|
|
DECLARE_DYNAMIC(COXCommandOptionDesc)
|
|
|
|
// Data members -------------------------------------------------------------
|
|
public:
|
|
|
|
protected:
|
|
CString m_sOptionName;
|
|
int m_nFlags;
|
|
CString m_sDescription;
|
|
CString m_sAbbr;
|
|
|
|
private:
|
|
|
|
// Member functions ---------------------------------------------------------
|
|
public:
|
|
COXCommandOptionDesc();
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Contructor of object
|
|
// It will initialize the internal state
|
|
|
|
COXCommandOptionDesc(LPCTSTR psczOptionName, int iFlags,
|
|
LPCTSTR psczDescription, LPCTSTR psczAbbr = _T(""));
|
|
// --- In : psczOptionName : the name of the option, CASE-INSENSITIVE
|
|
// iFlags : the flags of the option
|
|
// COD_ARGOK Does option take an argument
|
|
// COD_REPEATOK Is option valid morethan once?
|
|
// COD_REP_FIRST Use first if option is repeated
|
|
// COD_REP_LAST Use last if option is repeated (i.e. /l dir1 /l dir2)
|
|
// COD_REP_ARRAY Build array if option is repeated
|
|
// COD_ASSOCIATIVE Takes two arguments i.e. /D variable=value or /D variable value
|
|
// COD_FIRSTARG Takes an argument, is repeatable, and repeats are ignored
|
|
// COD_LASTARG Takes an argument, is repeatable, and repeats are ignored
|
|
// COD_ARRAY Takes an argument, is repeatable, builds an array
|
|
// (i.e. The INCLUDE option would use this)
|
|
// COD_ASSOCARRAY Takes two arguments, is repeatable, builds associative array
|
|
//
|
|
// psczDescription : the description of the option, for usage messages
|
|
// psczAbbr : the abbreviation of the option.
|
|
// A DEFINITE abbreviation of the argument, this abbreviation will
|
|
// be used unless it conflicts with another option's DEFINITE abbreviation.
|
|
// This can be used to have an abbreviation of I for the INCLUDE option, even
|
|
// if there is another option which begins with I.
|
|
// For all options, any UNIQUE shortening of the option name is acceptable.
|
|
// For example, with an option name of INCLUDE, possible abbreviations would
|
|
// be I, IN, INC, INCL, INCLU, INCLUD. Which of these possibilities are
|
|
// valid, depends on which ones are are unique for a given option set.
|
|
// The DEFINITE abbreviation need not be a true abbreviation of the option name.
|
|
// For example, an option name EXPORT, could have a DEFINITE abbreviation
|
|
// of X even though that is not strictly an abbreviation of the name.
|
|
//
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Contructor of object
|
|
// It will initialize the internal state
|
|
|
|
COXCommandOptionDesc(const COXCommandOptionDesc& OptDescSrc);
|
|
// --- In : OptDescSrc : COXCommandOptionDesc object which will be copied
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Copy contruction.
|
|
|
|
COXCommandOptionDesc& operator=(const COXCommandOptionDesc& OptDescSrc);
|
|
// --- In : OptDescSrc : COXCommandOptionDesc object which will be assign to 'this' COXCommandOptionDesc object
|
|
// --- Out:
|
|
// --- Returns:
|
|
// --- Effect : Assignment operator
|
|
|
|
int TakesArg() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : does this option takes arguments or not
|
|
// --- Effect :
|
|
|
|
int IsRepeatable() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : can this option appear more than once on a command line
|
|
// --- Effect :
|
|
|
|
int ReturnsFirstRep() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : will only the first occurrence of this option be recorded or not
|
|
// --- Effect :
|
|
|
|
int ReturnsLastRep() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : will only the last occurrence of this option be recorded or not
|
|
// --- Effect :
|
|
|
|
int ReturnsArray() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : will the occurrences of this option build an array or not
|
|
// --- Effect :
|
|
|
|
int ReturnsAssociative() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : will the occurrences of this option build an associative array or not
|
|
// --- Effect :
|
|
|
|
LPCTSTR GetDescription() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : the description of this option
|
|
// --- Effect :
|
|
|
|
CString GetOptName() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : the name of this option
|
|
// --- Effect :
|
|
|
|
CString GetOptAbbr() const;
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns : the DEFINITE abbreviation of this option
|
|
// --- Effect :
|
|
|
|
virtual ~COXCommandOptionDesc();
|
|
// --- In :
|
|
// --- Out :
|
|
// --- Returns :
|
|
// --- Effect : Destructor of object
|
|
|
|
private:
|
|
};
|
|
|
|
inline int COXCommandOptionDesc::TakesArg() const
|
|
{
|
|
return m_nFlags & COD_ARGOK;
|
|
}
|
|
|
|
inline int COXCommandOptionDesc::IsRepeatable() const
|
|
{
|
|
return m_nFlags & COD_REPEATOK;
|
|
}
|
|
inline int COXCommandOptionDesc::ReturnsFirstRep() const
|
|
{
|
|
return m_nFlags & COD_REP_FIRST;
|
|
}
|
|
inline int COXCommandOptionDesc::ReturnsLastRep() const
|
|
{
|
|
return m_nFlags & COD_REP_LAST;
|
|
}
|
|
inline int COXCommandOptionDesc::ReturnsArray() const
|
|
{
|
|
return m_nFlags & COD_REP_ARRAY;
|
|
}
|
|
inline int COXCommandOptionDesc::ReturnsAssociative() const
|
|
{
|
|
return m_nFlags & COD_ASSOCIATIVE;
|
|
}
|
|
inline LPCTSTR COXCommandOptionDesc::GetDescription() const
|
|
{
|
|
return m_sDescription;
|
|
}
|
|
|
|
inline CString COXCommandOptionDesc::GetOptName() const
|
|
{
|
|
return m_sOptionName;
|
|
}
|
|
|
|
inline CString COXCommandOptionDesc::GetOptAbbr() const
|
|
{
|
|
return m_sAbbr;
|
|
}
|
|
|
|
#endif
|
|
// ==========================================================================
|