#ifndef __EXECP_H
#define __EXECP_H

#ifndef __OBJECT_H
#include <object.h>
#endif

// @doc EXTERNAL

// @class TExternal_app | Classe per l'esecuzione di oggetti esterni
//
// @base public | TObject
class TExternal_app : public TObject

// @comm Gli oggetti eseguiti dalla presente classe possono essere eseguiti
//       in background in tutti gli ambienti, oppure in modo sincrono.
//       <nl>Non sono implementate linee di comando; si suppone che l'utente
//       utilizzi la mailbox per questo.
{
  // @access Private Member

  // @cmember Nome dell'applicazione (deve essere allocata dall'utente)
  const char* _path;
  // @cmember Ultimo errore (codice dell'errore)
  int _error;
  // @cmember Ultimo exit code
  int _exitcode;
  // @cmember Numero di chiamate
  int _count;

  // @access Public Member
public:
  // @cmember Controlla se il processo puo' essere eseguito
  bool can_run() const;
  // @cmember Esegue il processo
  int run(bool async = FALSE, bool user = TRUE);
  // @cmember Ritorna il codice dell'ultimo errore
  int error()
  { return _error;};
  // @cmember Ritorna il l'ultimo codice di uscita
  int exitcode()
  { return _exitcode;};
  // @cmember Ritorna il numero di chiamate effettuate
  int count()
  { return _count; };

  // @cmember Costruttore
  TExternal_app(const char* p);
};

#endif
