Diff for /rpl/src/rpl.h between versions 1.46 and 1.51

version 1.46, 2010/06/28 14:30:33 version 1.51, 2010/08/06 15:26:51
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.17    RPL/2 (R) version 4.0.18
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2010 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 31 Line 31
 #   define  _DARWIN_C_SOURCE  #   define  _DARWIN_C_SOURCE
 #endif  #endif
   
   #ifdef OS2
   #   define _BSD_SOURCE
   #   define _XOPEN_SOURCE    600
   
   #   include <types.h>
       enum { SHUT_RD = 0, SHUT_WR, SHUT_RDWR };
   #   define SHUT_RD      SHUT_RD
   #   define SHUT_WR      SHUT_WR
   #   define SHUT_RDWR    SHUT_RDWR
   #   define SEM_FAILED   NULL
   #   undef IPV6
   
   #   include "getaddrinfo-conv.h"
   #else
   #   define IPV6
   #endif
   
   
 /*  /*
 ================================================================================  ================================================================================
Line 66 Line 83
 #   include <dlfcn.h>  #   include <dlfcn.h>
 #   include <fcntl.h>  #   include <fcntl.h>
 #   include <pthread.h>  #   include <pthread.h>
   
   #   ifdef OS2
   #       undef pthread_mutexattr_settype
   #       define pthread_mutexattr_settype(a, b)
   #   endif
   
 #   include <pwd.h>  #   include <pwd.h>
 #   include <semaphore.h>  
   #   ifndef OS2
   #       include <semaphore.h>
   #   else
   #       include <sys/sem.h>
           typedef int sem_t;
   
           sem_t *sem_open(const char *nom, int oflag, ...);
           int sem_init(sem_t *sem, int shared, unsigned int value);
           int sem_close(sem_t *sem);
           int sem_wait(sem_t *sem);
           int sem_trywait(sem_t *sem);
           int sem_post(sem_t *sem);
           int sem_getvalue(sem_t *sem, int *value);
           int sem_unlink(const char *nom);
           int sem_destroy(sem_t *sem);
   #   endif
   
 #   include <setjmp.h>  #   include <setjmp.h>
 #   include <signal.h>  #   include <signal.h>
 #   include <termios.h>  #   include <termios.h>
Line 127 Line 167
 */  */
   
 #ifndef RPLARGS  #ifndef RPLARGS
 #   ifdef Darwin  #   if defined(Darwin)
 #       define SIGPOLL              SIGINFO  #       define SIGPOLL              SIGINFO
 #   endif  #   endif
   
Line 190  typedef FILE     file; Line 230  typedef FILE     file;
 typedef unsigned char           t_8_bits;  typedef unsigned char           t_8_bits;
   
 #ifndef RPLARGS  #ifndef RPLARGS
 #   include "rpltypes.conv.h"  #   include "rpltypes-conv.h"
 #else  #else
 #   include "rpltypes.h"  #   include "rpltypes.h"
 #endif  #endif
Line 362  int sem_getvalue2(sem_t *semaphore, int Line 402  int sem_getvalue2(sem_t *semaphore, int
   
 // Redéfinition de abs pour un fonctionnement en entier de type long long int  // Redéfinition de abs pour un fonctionnement en entier de type long long int
   
 #if 1  #ifdef __GNUC__
 #   define abs(i) ({ typeof(i) _i; _i = (i); (_i >= 0) ? _i : -_i; })  #   define abs(i) ({ typeof(i) _i; _i = (i); (_i >= 0) ? _i : -_i; })
 // typeof() est une extension de gcc, mais est présent sur d'autres compilateurs  // typeof() est une extension de gcc, mais est présent sur d'autres compilateurs
 // comme Sun Studio. Dans le cas où typeof() n'existe pas, il est possible  // comme Sun Studio. Dans le cas où typeof() n'existe pas, il est possible
Line 1213  typedef struct liste_pile_systeme Line 1253  typedef struct liste_pile_systeme
   
     /*      /*
     type clôture :      type clôture :
     C     CASE  : END termine un test SELECT/CASE/THEN/END/DEFAULT/END.      C     SELECT  : END termine un test SELECT/DEFAULT/END.
     D     DO    : END termine une boucle DO/UNTIL/END.      D     DO      : END termine une boucle DO/UNTIL/END.
     I     IF    : END termine un test IF/THEN (ELSE)/END.      I     IF      : END termine un test IF/THEN (ELSE)/END.
     J     IFERR : END termine un test IFERR/THEN (ELSE)/END.      J     IFERR   : END termine un test IFERR/THEN (ELSE)/END.
     W     WHILE : END termine une boucle WHILE/REPEAT/END.      K     CASE    : END termine un test CASE/THEN/END
       W     WHILE   : END termine une boucle WHILE/REPEAT/END.
     F     FOR   : NEXT ou STEP termine une boucle avec compteur.  
     S     START : NEXT ou STEP termine une boucle sans compteur.      F     FOR     : NEXT ou STEP termine une boucle avec compteur.
     L     LOOP  : boucle utilisé dans le traitement de l'instruction RETURN.      S     START   : NEXT ou STEP termine une boucle sans compteur.
       L     LOOP    : boucle utilisé dans le traitement de l'instruction RETURN.
             Elle correspond à une boucle FOR ou START mais sans son              Elle correspond à une boucle FOR ou START mais sans son
             initialisation.              initialisation.
     */      */
   
     unsigned long               adresse_retour;      unsigned long               adresse_retour;
     unsigned long               niveau_courant;      unsigned long               niveau_courant;
       struct_objet                *pointeur_adresse_retour;
 } struct_liste_pile_systeme;  } struct_liste_pile_systeme;
 #endif  #endif
   
Line 1528  typedef struct processus Line 1570  typedef struct processus
     pthread_t                   thread_fusible;      pthread_t                   thread_fusible;
     pthread_t                   thread_surveille_par_fusible;      pthread_t                   thread_surveille_par_fusible;
   
 #   ifndef Cygwin  #   if !defined(Cygwin)
     stack_t                     pile_signal;      stack_t                     pile_signal;
 #   else  #   else
 #   define SA_ONSTACK           0  #   define SA_ONSTACK           0
Line 1791  typedef struct processus Line 1833  typedef struct processus
   
     unsigned char               traitement_interruption;  /* Y/N */      unsigned char               traitement_interruption;  /* Y/N */
     unsigned char               traitement_interruptible; /* Y/N */      unsigned char               traitement_interruptible; /* Y/N */
       unsigned char               traitement_at_poke;       /* Y/N */
   
     struct_objet                *at_exit;      struct_objet                *at_exit;
       struct_objet                *at_poke;
   
 /* Variables volatiles                                  */  /* Variables volatiles                                  */
   
Line 1989  void instruction_asr(struct_processus *s Line 2033  void instruction_asr(struct_processus *s
 void instruction_atan(struct_processus *s_etat_processus);  void instruction_atan(struct_processus *s_etat_processus);
 void instruction_atanh(struct_processus *s_etat_processus);  void instruction_atanh(struct_processus *s_etat_processus);
 void instruction_atexit(struct_processus *s_etat_processus);  void instruction_atexit(struct_processus *s_etat_processus);
   void instruction_atpoke(struct_processus *s_etat_processus);
 void instruction_autoscale(struct_processus *s_etat_processus);  void instruction_autoscale(struct_processus *s_etat_processus);
 void instruction_axes(struct_processus *s_etat_processus);  void instruction_axes(struct_processus *s_etat_processus);
   
 void instruction_b_vers_r(struct_processus *s_etat_processus);  void instruction_b_vers_r(struct_processus *s_etat_processus);
 void instruction_backspace(struct_processus *s_etat_processus);  void instruction_backspace(struct_processus *s_etat_processus);
   void instruction_backtrace(struct_processus *s_etat_processus);
 void instruction_beep(struct_processus *s_etat_processus);  void instruction_beep(struct_processus *s_etat_processus);
 void instruction_bessel(struct_processus *s_etat_processus);  void instruction_bessel(struct_processus *s_etat_processus);
 void instruction_bin(struct_processus *s_etat_processus);  void instruction_bin(struct_processus *s_etat_processus);
Line 2009  void instruction_cllcd(struct_processus Line 2055  void instruction_cllcd(struct_processus
 void instruction_clmf(struct_processus *s_etat_processus);  void instruction_clmf(struct_processus *s_etat_processus);
 void instruction_close(struct_processus *s_etat_processus);  void instruction_close(struct_processus *s_etat_processus);
 void instruction_clratexit(struct_processus *s_etat_processus);  void instruction_clratexit(struct_processus *s_etat_processus);
   void instruction_clratpoke(struct_processus *s_etat_processus);
 void instruction_clrcntxt(struct_processus *s_etat_processus);  void instruction_clrcntxt(struct_processus *s_etat_processus);
 void instruction_clrerr(struct_processus *s_etat_processus);  void instruction_clrerr(struct_processus *s_etat_processus);
 void instruction_clrfuse(struct_processus *s_etat_processus);  void instruction_clrfuse(struct_processus *s_etat_processus);

Removed from v.1.46  
changed lines
  Added in v.1.51


CVSweb interface <joel.bertrand@systella.fr>