⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ncbiargs_p.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: ncbiargs_p.hpp,v $ * PRODUCTION Revision 1000.0  2003/10/29 15:08:48  gouriano * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.5 * PRODUCTION * =========================================================================== *//*  $Id: ncbiargs_p.hpp,v 1000.0 2003/10/29 15:08:48 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Denis Vakatov * * File Description: *   PRIVATE header -- for inclusion by "ncbiargs.cpp" only! *   Command-line arguments' processing: *      descriptions  -- CArgDescriptions,  CArgDesc *      constraints   -- CArgAllow;  CArgAllow_{Strings,Integers,Doubles} *      parsed values -- CArgs,             CArgValue *      exceptions    -- CArgException, ARG_THROW() * */#if !defined(NCBIARGS__CPP)#  error "PRIVATE header -- for inclusion by ncbiargs.cpp only!"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  CArg_***::   classes representing various types of argument value////    CArg_NoValue     : CArgValue//    CArg_String      : CArgValue////    CArg_Alnum       : CArg_String//    CArg_Integer     : CArg_String//    CArg_Double      : CArg_String//    CArg_Boolean     : CArg_String//    CArg_InputFile   : CArg_String//    CArg_OutputFile  : CArg_String//    class CArg_NoValue : public CArgValue{public:    CArg_NoValue(const string& name);    virtual bool HasValue(void) const;    virtual const string&  AsString (void) const;    virtual int            AsInteger(void) const;    virtual double         AsDouble (void) const;    virtual bool           AsBoolean(void) const;    virtual CNcbiIstream&  AsInputFile (void) const;    virtual CNcbiOstream&  AsOutputFile(void) const;    virtual void           CloseFile   (void) const;};class CArg_String : public CArgValue{public:    CArg_String(const string& name, const string& value);    virtual bool HasValue(void) const;    virtual const string&  AsString (void) const;    virtual int            AsInteger(void) const;    virtual double         AsDouble (void) const;    virtual bool           AsBoolean(void) const;    virtual CNcbiIstream&  AsInputFile (void) const;    virtual CNcbiOstream&  AsOutputFile(void) const;    virtual void           CloseFile   (void) const;private:    // Value of the argument as passed to the constructor ("value")    string m_String;};class CArg_Integer : public CArg_String{public:    CArg_Integer(const string& name, const string& value);    virtual int AsInteger(void) const;private:    int m_Integer;};class CArg_Double : public CArg_String{public:    CArg_Double(const string& name, const string& value);    virtual double AsDouble(void) const;private:    double m_Double;};class CArg_Boolean : public CArg_String{public:    CArg_Boolean(const string& name, bool value);    CArg_Boolean(const string& name, const string& value);    virtual bool AsBoolean(void) const;private:    bool m_Boolean;};class CArg_InputFile : public CArg_String{public:    CArg_InputFile(const string& name, const string& value,                   IOS_BASE::openmode  openmode,                   bool                delay_open);    virtual ~CArg_InputFile(void);    virtual CNcbiIstream& AsInputFile(void) const;    virtual void CloseFile(void) const;private:    void x_Open(void) const;    mutable IOS_BASE::openmode m_OpenMode;    mutable CNcbiIstream*      m_InputFile;    mutable bool               m_DeleteFlag;};class CArg_OutputFile : public CArg_String{public:    CArg_OutputFile(const string& name, const string& value,                    IOS_BASE::openmode openmode,                    bool               delay_open);    virtual ~CArg_OutputFile(void);    virtual CNcbiOstream& AsOutputFile(void) const;    virtual void CloseFile(void) const;private:    void x_Open(void) const;    mutable IOS_BASE::openmode m_OpenMode;    mutable CNcbiOstream*      m_OutputFile;    mutable bool               m_DeleteFlag;};////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  CArgDesc***::   abstract base classes for argument descriptions////    CArgDesc////    CArgDescMandatory  : CArgDesc//    CArgDescOptional   : virtual CArgDescMandatory//    CArgDescDefault    : virtual CArgDescOptional////    CArgDescSynopsis//class CArgDescMandatory : public CArgDesc{public:    CArgDescMandatory(const string& name, const string& comment,                      CArgDescriptions::EType  type,                      CArgDescriptions::TFlags flags);    virtual ~CArgDescMandatory(void);    CArgDescriptions::EType  GetType (void) const { return m_Type; }    CArgDescriptions::TFlags GetFlags(void) const { return m_Flags; }    virtual string GetUsageSynopsis(bool name_only = false) const = 0;    virtual string GetUsageCommentAttr(void) const;    virtual CArgValue* ProcessArgument(const string& value) const;    virtual CArgValue* ProcessDefault(void) const;    virtual void SetConstraint(CArgAllow* constraint);    virtual const CArgAllow* GetConstraint(void) const;private:    CArgDescriptions::EType  m_Type;    CArgDescriptions::TFlags m_Flags;    CConstRef<CArgAllow>     m_Constraint;};class CArgDescOptional : virtual public CArgDescMandatory{public:    CArgDescOptional(const string& name, const string& comment,                     CArgDescriptions::EType  type,                     CArgDescriptions::TFlags flags);    virtual ~CArgDescOptional(void);    virtual CArgValue* ProcessDefault(void) const;};class CArgDescDefault : virtual public CArgDescOptional{public:    CArgDescDefault(const string& name, const string& comment,                    CArgDescriptions::EType  type,                    CArgDescriptions::TFlags flags,                    const string&            default_value);    virtual ~CArgDescDefault(void);    const string& GetDefaultValue(void) const { return m_DefaultValue; }    virtual CArgValue* ProcessDefault(void) const;    virtual void       VerifyDefault (void) const;private:    string m_DefaultValue;};class CArgDescSynopsis{public:    CArgDescSynopsis(const string& synopsis);    const string& GetSynopsis(void) const { return m_Synopsis; }private:    string m_Synopsis;};////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  CArgDesc_***::   classes for argument descriptions////    CArgDesc_Flag    : CArgDesc////    CArgDesc_Pos     : virtual CArgDescMandatory//    CArgDesc_PosOpt  : virtual CArgDescOptional, CArgDesc_Pos//    CArgDesc_PosDef  :         CArgDescDefault,  CArgDesc_PosOpt////    CArgDescSynopsis////    CArgDesc_Key     : CArgDesc_Pos,    CArgDescSynopsis//    CArgDesc_KeyOpt  : CArgDesc_PosOpt, CArgDescSynopsis//    CArgDesc_KeyDef  : CArgDesc_PosDef, CArgDescSynopsis//class CArgDesc_Flag : public CArgDesc{public:    CArgDesc_Flag(const string& name, const string& comment,                  bool set_value = true);    virtual ~CArgDesc_Flag(void);    virtual string GetUsageSynopsis(bool name_only = false) const;    virtual string GetUsageCommentAttr(void) const;    virtual CArgValue* ProcessArgument(const string& value) const;    virtual CArgValue* ProcessDefault(void) const;private:    bool m_SetValue;  // value to set if the arg is provided  };class CArgDesc_Pos : virtual public CArgDescMandatory{public:    CArgDesc_Pos(const string&            name,                 const string&            comment,                 CArgDescriptions::EType  type,                 CArgDescriptions::TFlags flags);    virtual ~CArgDesc_Pos(void);    virtual string GetUsageSynopsis(bool name_only = false) const;};class CArgDesc_PosOpt : virtual public CArgDescOptional,                        public CArgDesc_Pos{public:    CArgDesc_PosOpt(const string&            name,                    const string&            comment,                    CArgDescriptions::EType  type,                    CArgDescriptions::TFlags flags);    virtual ~CArgDesc_PosOpt(void);};class CArgDesc_PosDef : public CArgDescDefault,                        public CArgDesc_PosOpt{public:    CArgDesc_PosDef(const string&            name,                    const string&            comment,                    CArgDescriptions::EType  type,                    CArgDescriptions::TFlags flags,                    const string&            default_value);    virtual ~CArgDesc_PosDef(void);};class CArgDesc_Key : public CArgDesc_Pos, public CArgDescSynopsis{public:    CArgDesc_Key(const string&            name,                 const string&            comment,                 CArgDescriptions::EType  type,                 CArgDescriptions::TFlags flags,                 const string&            synopsis);    virtual ~CArgDesc_Key(void);    virtual string GetUsageSynopsis(bool name_only = false) const;};class CArgDesc_KeyOpt : public CArgDesc_PosOpt, public CArgDescSynopsis{public:    CArgDesc_KeyOpt(const string&            name,                    const string&            comment,                    CArgDescriptions::EType  type,                    CArgDescriptions::TFlags flags,                    const string&            synopsis);    virtual ~CArgDesc_KeyOpt(void);    virtual string GetUsageSynopsis(bool name_only = false) const;};class CArgDesc_KeyDef : public CArgDesc_PosDef, public CArgDescSynopsis{public:    CArgDesc_KeyDef(const string&            name,                    const string&            comment,                    CArgDescriptions::EType  type,                    CArgDescriptions::TFlags flags,                    const string&            synopsis,                    const string&            default_value);    virtual ~CArgDesc_KeyDef(void);    virtual string GetUsageSynopsis(bool name_only = false) const;};/* * =========================================================================== * $Log: ncbiargs_p.hpp,v $ * Revision 1000.0  2003/10/29 15:08:48  gouriano * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.5 * * Revision 1.5  2002/12/18 22:54:48  dicuccio * Shuffled some headers to avoid a potentially serious compiler warning * (deletion of incomplete type in Windows). * * Revision 1.4  2002/07/11 14:18:26  gouriano * exceptions replaced by CNcbiException-type ones * * Revision 1.3  2002/04/11 21:08:01  ivanov * CVS log moved to end of the file * * Revision 1.2  2001/01/22 23:07:15  vakatov * CArgValue::AsInteger() to return "int" (rather than "long") * * Revision 1.1  2000/12/24 00:05:46  vakatov * Initial revision * * =========================================================================== */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -