#ifndef __EXECP_H
#define __EXECP_H

#ifndef __STRINGS_H
#include <strings.h>
#endif

// @doc EXTERNAL

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

// @author:(INTERNAL) Villa

// @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:(INTERNAL) Private Member
{
  
  // @cmember:(INTERNAL) Nome dell'applicazione (deve essere allocata dall'utente)
  const char* _path;
  // @cmember:(INTERNAL) Ultimo errore (codice dell'errore)
  int _error;
  // @cmember:(INTERNAL) Ultimo exit code
  word _exitcode;
  // @cmember:(INTERNAL) 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
  word run(bool async = FALSE, bool user = TRUE, bool iconize = TRUE, bool show = TRUE);
  // @cmember Ritorna il codice dell'ultimo errore
  int error()
  { return _error; }
  // @cmember Ritorna l'ultimo codice di uscita
  word exitcode()
  { return _exitcode; }
  // @cmember Ritorna il numero di chiamate effettuate
  int count()
  { return _count; }

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

#endif