// $Source: /usr/local/SimSoft/SoftShop/Basics/io/ProgArgs.h,v $
// $Revision: 1.14 $
// $Author: baum $
// $Date: 2001/11/29 15:52:23 $
//
// Login name of the user who locked the revision
// $Locker:  $
// Tag name used to checkout the file
// $Name: Release-20 $
// State assigned to revision
// $State: Exp $
//
//
// $Log: ProgArgs.h,v $
// Revision 1.14  2001/11/29 15:52:23  baum
// -In Kalender.cpp und Kalender.h Handsteuerung eingebaut
//


#ifndef _PROGARGS_H
#define _PROGARGS_H


#ifdef _PROGARGS_CPP
#  undef _impexp
#  define _impexp __declspec(dllexport)
#elif defined BUILD_BASICS_DLL
#  undef _impexp
#  define _impexp __declspec(dllexport)
#else
#  undef _impexp
#  define _impexp __declspec(dllimport)
#endif

#if defined __GNUG__ || defined __hpux
#  undef _impexp
#  define _impexp
#endif


// a class-utility for evaluating commandline-arguments
//##ModelId=3FBCBCC4034B
class _impexp ProgArgs
  {
  public:
    // the number of arguments passed to the program
	//##ModelId=3FBCBCC4034C
    static int Argc ();

    // all the arguments
	//##ModelId=3FBCBCC4035C
    static const char** Argv ();

    // single arguments (or NULL if index >= Argc ())
	//##ModelId=3FBCBCC4035E
    static const char* Argv (int index);

    // value for parameter (or NULL if not in Argv ())
	//##ModelId=3FBCBCC40361
    static const char* OptionString (const char* option);

    // true if parameter in Argv (), else false
	//##ModelId=3FBCBCC4036D
    static bool OptionSet (const char* option);

    // setting/cleaning things up (use only one setup-func)
    #ifdef WIN32
	//##ModelId=3FBCBCC40370
      static void setup ();  // Windows-Style setup (uses GetCommandLine ())
    #endif
	//##ModelId=3FBCBCC4037A
    static void setup (int argc, char** argv);	// we believe in these
	//##ModelId=3FBCBCC4037E
    static void cleanup ();
	//##ModelId=3FBCBCC40380
    static bool isInitialized ();

  protected:

  private:
    // default constructor, declared but not defined
	//##ModelId=3FBCBCC4038B
    ProgArgs ();

    // copy constructor, declared but not defined
	//##ModelId=3FBCBCC4038C
    ProgArgs (const ProgArgs&);

    // assignment operator, declared but not defined
	//##ModelId=3FBCBCC4038E
    ProgArgs& operator = (const ProgArgs&);

    // destructor, declared but not defined
	//##ModelId=3FBCBCC4039A
    ~ProgArgs ();

    // static data
	//##ModelId=3FBCBCC4039B
    static int    ClassArgC;
	//##ModelId=3FBCBCC4039C
    static char** ClassArgV;
	//##ModelId=3FBCBCC403A9
    static char*  ClassCmdLine;

  // friends
    friend class FileSystem;
};	// class ProgArgs


#endif	// !defined _PROGARGS_H

//	$Filename: C:\Software\SoftShop\Basics\io\ProgArgs.h $	ends
