home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC7.DMS / in.adf / classes.lha / Classes / DOS / Arguments.h next >
Encoding:
C/C++ Source or Header  |  1995-01-31  |  1.8 KB  |  75 lines

  1. #ifndef CPP_DOS_ARGUMENTS_H
  2. #define CPP_DOS_ARGUMENTS_H
  3.  
  4. // CLI Argumente Auswertung
  5. //
  6. // Autor: Jochen Becher
  7. //
  8. // Historie:
  9. // Version 1.0 am 19. Februar 94
  10.  
  11. #ifndef DOS_RDARGS_H
  12. #include <dos/rdargs.h>
  13. #endif
  14.  
  15. #ifndef CPP_DOS_DOS_H
  16. #include <classes/dos/dos.h>
  17. #endif
  18.  
  19. #ifndef CPP_EXCEPTIONS_EXCEPTIONS_H
  20. #include <classes/exceptions/exceptions.h>
  21. #endif
  22.  
  23. class RDArgsC : public DosObjectC {
  24. public:
  25.     RDArgsC(struct TagItem *tags = NULL) throw (DosObjectX, MemoryX)
  26.         : DosObjectC(DOS_RDARGS,tags) { };
  27.     RDArgsC(Tag tag1type, ...) throw (DosObjectX, MemoryX)
  28.         : DosObjectC(DOS_RDARGS,(struct TagItem *) &tag1type) { };
  29.     struct RDArgs *object() const
  30.         { return (struct RDArgs *) DosObjectC::object(); };
  31. };
  32.  
  33. class ArgsC {
  34. friend class ArgsMCursorC;
  35. public:
  36.     ArgsC(STRPTR argTemplate, struct RDArgs *rdargs = NULL) throw (RDArgsX, MemoryX);
  37.     ArgsC(STRPTR argTemplate, RDArgsC &) throw (RDArgsX, MemoryX);
  38.     ArgsC(const ArgsC &) throw (RDArgsX, MemoryX);
  39.     ~ArgsC();
  40.     ArgsC &operator= (const ArgsC &) throw (RDArgsX, MemoryX);
  41.     STRPTR getStr(LONG i, STRPTR dfault = NULL) const;
  42.     STRPTR getStr(STRPTR keyword, STRPTR dfault = NULL) const;
  43.     LONG getNumber(LONG i, LONG dfault = 0) const;
  44.     LONG getNumber(STRPTR keyword, LONG dfault = 0) const;
  45.     BOOL getSwitch(LONG i) const;
  46.     BOOL getSwitch(STRPTR keyword) const;
  47.     VOID free();
  48. protected:
  49.     VOID read(STRPTR argTemplate, struct RDArgs *) throw (RDArgsX, MemoryX);
  50. private:
  51.     struct RDArgs *args;
  52.     STRPTR templ;
  53.     ULONG argcount;
  54.     ULONG *argarray;
  55. };
  56.  
  57. class ArgsMCursorC {
  58. public:
  59.     ArgsMCursorC(ArgsC &, LONG i);
  60.     ArgsMCursorC(ArgsC &, STRPTR keyword);
  61.     ArgsMCursorC(const ArgsMCursorC &);
  62.     ArgsMCursorC &operator = (const ArgsMCursorC &);
  63.     ULONG count() const;
  64.     VOID first();
  65.     BOOL isDone() const;
  66.     VOID next();
  67.     STRPTR itemStr() const;
  68.     LONG itemNumber() const;
  69. private:
  70.     ULONG *marg;
  71.     ULONG *arg;
  72. };
  73.  
  74. #endif
  75.