Diff for /rpl/src/rpl.h between versions 1.8 and 1.16

version 1.8, 2010/02/10 10:14:26 version 1.16, 2010/03/07 17:03:30
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.11    RPL/2 (R) version 4.0.12
   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 22 Line 22
   
 #ifndef INCLUSION_RPL  #ifndef INCLUSION_RPL
 #define INCLUSION_RPL  #define INCLUSION_RPL
   
 #define _GNU_SOURCE  #define _GNU_SOURCE
   #define _REENTRANT
   
   // Nécessaire pour les systèmes qui ne comprennent pas _GNU_SOURCE
   #define _XOPEN_SOURCE 500
   
 /*  /*
 ================================================================================  ================================================================================
Line 70 Line 75
 #   include "termcap.h"  #   include "termcap.h"
 #   include "iconv.h"  #   include "iconv.h"
   
   #   include "openssl/evp.h"
   #   include "sqlite3.h"
   
 #   define HAVE_INLINE  #   define HAVE_INLINE
 #   define GSL_RANGE_CHECK_OFF  #   define GSL_RANGE_CHECK_OFF
 #   include "gsl/gsl_cdf.h"  #   include "gsl/gsl_cdf.h"
Line 276  typedef unsigned char   t_8_bits; Line 284  typedef unsigned char   t_8_bits;
         __VA_ARGS__; fflush(stdout); \          __VA_ARGS__; fflush(stdout); \
         pthread_kill(pthread_self(), SIGBUS); }} while(0)          pthread_kill(pthread_self(), SIGBUS); }} while(0)
   
   #define NOTICE(m) \
       do \
       { \
           ufprintf(stderr, "[%d-%llu] %s() from %s at line %d: %s\n", \
                   getpid(), (unsigned long long) pthread_self(), \
                   __FUNCTION__, __FILE__, __LINE__, m); \
           fflush(stderr); \
       } while(0)
   
   #ifdef __GLIBC__
   #include <execinfo.h>
 #define BACKTRACE(n) \  #define BACKTRACE(n) \
     do \      do \
     { \      { \
Line 300  typedef unsigned char   t_8_bits; Line 319  typedef unsigned char   t_8_bits;
         fflush(stdout); \          fflush(stdout); \
         pthread_mutex_unlock(&mutex); \          pthread_mutex_unlock(&mutex); \
     } while(0)      } while(0)
   #else
 #define NOTICE(m) \  #define BACKTRACE(n) NOTICE("BACKTRACE only defined in glibc")
     do \  #endif
     { \  
         ufprintf(stderr, "[%d-%llu] %s() from %s at line %d: %s\n", \  
                 getpid(), pthread_self(), __FUNCTION__, __FILE__, __LINE__, \  
                 m); \  
         fflush(stderr); \  
     } while(0)  
   
   
 /*  /*
Line 317  typedef unsigned char   t_8_bits; Line 330  typedef unsigned char   t_8_bits;
 ================================================================================  ================================================================================
 */  */
   
   #ifdef DEBUG_MEMOIRE
   void *debug_memoire_ajout(size_t taille, const unsigned char *fonction,
           unsigned long ligne, const unsigned char *argument);
   void *debug_memoire_modification(void *pointeur, size_t taille,
           const unsigned char *fonction, unsigned long ligne,
           const unsigned char *argument);
   void debug_memoire_retrait(void *ptr);
   
   #define malloc(s) debug_memoire_ajout(s, __FUNCTION__, __LINE__, #s)
   #define free(s) debug_memoire_retrait(s)
   #define realloc(s, t) debug_memoire_modification(s, t, \
               __FUNCTION__, __LINE__, #t)
   #endif
   
 #ifdef DEBUG_RETURN  #ifdef DEBUG_RETURN
 #define return uprintf("[%d] Return from <%s()> at line #%d " \  #define return uprintf("[%d] Return from <%s()> at line #%d " \
         "(%s [%d])\n", (int) getpid(), __FUNCTION__, \          "(%s [%d])\n", (int) getpid(), __FUNCTION__, \
         __LINE__, strerror(errno), errno); fflush(stdout); errno=0; return          __LINE__, strerror(errno), errno); fflush(stdout); errno = 0; return
 #endif  #endif
   
 #ifdef DEBUG_MUTEX  #ifdef DEBUG_MUTEX
Line 460  typedef unsigned char   t_8_bits; Line 487  typedef unsigned char   t_8_bits;
 #   define d_es_nombre_max_descripteurs         2011  #   define d_es_nombre_max_descripteurs         2011
 #   define d_es_interruption_invalide           2012  #   define d_es_interruption_invalide           2012
 #   define d_es_contexte                        2013  #   define d_es_contexte                        2013
   #   define d_es_somme_controle                  2014
 #endif  #endif
   
 /*  /*
Line 592  typedef unsigned char   t_8_bits; Line 620  typedef unsigned char   t_8_bits;
 #   define d_ex_locales                         76  #   define d_ex_locales                         76
 #   define d_ex_representation                  77  #   define d_ex_representation                  77
 #   define d_ex_erreur_profilage                78  #   define d_ex_erreur_profilage                78
   #   define d_ex_enregistrement_inexistant       79
 #endif  #endif
   
 /*  /*
Line 820  typedef struct descripteur_fichier Line 849  typedef struct descripteur_fichier
     unsigned long               identifiant;      unsigned long               identifiant;
   
     unsigned char               effacement;      unsigned char               effacement;
       unsigned char               type; // C (file *) ou S (sqlite *)
     unsigned char               *nom;      unsigned char               *nom;
   
     pid_t                       pid;      pid_t                       pid;
     pthread_t                   tid;      pthread_t                   tid;
   
     file                        *descripteur;      file                        *descripteur_c;
       sqlite3                     *descripteur_sqlite;
 } struct_descripteur_fichier;  } struct_descripteur_fichier;
 #endif  #endif
   
Line 996  typedef struct descripteur_thread Line 1027  typedef struct descripteur_thread
   
     struct_objet                *argument;      struct_objet                *argument;
   
     pid_t                   pid;      pid_t                       pid;
     volatile pthread_t      tid;      volatile pthread_t          tid;
   
     pthread_t                   thread_pere;      pthread_t                   thread_pere;
   
Line 1396  typedef struct processus Line 1427  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
     stack_t                     pile_signal;      stack_t                     pile_signal;
   #   else
   #   define SA_ONSTACK           0
   #   define RTLD_LOCAL           0
   #   endif
   
 /* Contextes                                            */  /* Contextes                                            */
   
Line 1672  typedef struct processus Line 1708  typedef struct processus
   
 /* Autres                                               */  /* Autres                                               */
   
       char                        *rpl_home;
   
     gsl_rng                     *generateur_aleatoire;      gsl_rng                     *generateur_aleatoire;
     const gsl_rng_type          *type_generateur_aleatoire;      const gsl_rng_type          *type_generateur_aleatoire;
   
Line 2356  void conversion_hms_vers_decimal(real8 * Line 2394  void conversion_hms_vers_decimal(real8 *
 void conversion_radians_vers_degres(real8 *angle);  void conversion_radians_vers_degres(real8 *angle);
 void correction_formateur_tex(struct_processus *s_etat_processus,  void correction_formateur_tex(struct_processus *s_etat_processus,
         unsigned char **ligne);          unsigned char **ligne);
   void debug_memoire_verification(struct_processus *s_etat_processus);
 void depilement_pile_systeme(struct_processus *s_etat_processus);  void depilement_pile_systeme(struct_processus *s_etat_processus);
 void derivation(struct_processus *s_etat_processus,  void derivation(struct_processus *s_etat_processus,
         struct_objet **s_expression);          struct_objet **s_expression);
Line 2493  complex16 sommation_vecteur_complexe(com Line 2532  complex16 sommation_vecteur_complexe(com
 */  */
   
 #ifndef RPLARGS  #ifndef RPLARGS
 int rplinit(int argc, char *argv[], unsigned char ***resultats);  int rplinit(int argc, char *argv[], unsigned char ***resultats, char *rpl_home);
 #endif  #endif
   
 /*  /*
Line 2596  logical1 analyse_syntaxique(struct_proce Line 2635  logical1 analyse_syntaxique(struct_proce
 logical1 caracteristiques_fichier(struct_processus *s_etat_processus,  logical1 caracteristiques_fichier(struct_processus *s_etat_processus,
         unsigned char *nom, logical1 *existence, logical1 *ouverture,          unsigned char *nom, logical1 *existence, logical1 *ouverture,
         unsigned long *unite);          unsigned long *unite);
   logical1 controle(struct_processus *s_etat_processus, unsigned char *fichier,
           unsigned char *type, unsigned char *somme_candidate);
 logical1 creation_variable(struct_processus *s_etat_processus,  logical1 creation_variable(struct_processus *s_etat_processus,
         struct_variable *s_variable,          struct_variable *s_variable,
         unsigned char autorisation_creation_variable_statique,          unsigned char autorisation_creation_variable_statique,
Line 2615  logical1 empilement_pile_last(struct_pro Line 2656  logical1 empilement_pile_last(struct_pro
         unsigned long nombre_arguments);          unsigned long nombre_arguments);
 logical1 evaluation(struct_processus *s_etat_processus, struct_objet *s_objet,  logical1 evaluation(struct_processus *s_etat_processus, struct_objet *s_objet,
         unsigned char type_evaluation);          unsigned char type_evaluation);
   logical1 initialisation_fichier_acces_direct(struct_processus *s_etat_processus,
           sqlite3 *sqlite, logical1 binaire);
   logical1 initialisation_fichier_acces_indexe(struct_processus *s_etat_processus,
           sqlite3 *sqlite, logical1 binaire);
 logical1 recherche_instruction_suivante(struct_processus *s_etat_processus);  logical1 recherche_instruction_suivante(struct_processus *s_etat_processus);
 logical1 retrait_variable(struct_processus *s_etat_processus,  logical1 retrait_variable(struct_processus *s_etat_processus,
         unsigned char *nom_variable, unsigned char type);          unsigned char *nom_variable, unsigned char type);
Line 2675  inline ssize_t write_atomic(struct_proce Line 2720  inline ssize_t write_atomic(struct_proce
 */  */
   
 int alsprintf(unsigned char **strp, const char *fmt, ...);  int alsprintf(unsigned char **strp, const char *fmt, ...);
   int tex_fprintf(struct_processus *s_etat_processus,
           file *flux, const char *format, ...);
 int transliterated_fprintf(struct_processus *s_etat_processus, file *flux,  int transliterated_fprintf(struct_processus *s_etat_processus, file *flux,
         const char *format, ...);          const char *format, ...);
 int valsprintf(unsigned char **strp, const char *fmt, va_list ap);  int valsprintf(unsigned char **strp, const char *fmt, va_list ap);
Line 2735  struct_processus *copie_etat_processus(s Line 2782  struct_processus *copie_etat_processus(s
   
 /*  /*
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
   Fonctions renvoyant un pointeur sur un fichier (file *)    Fonctions renvoyant un pointeur sur un fichier (file *) ou un descripteur
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
   
 #ifndef RPLARGS  #ifndef RPLARGS
 file *creation_fichier_tex(struct_processus *s_etat_processus);  file *creation_fichier_tex(struct_processus *s_etat_processus);
 file *descripteur_fichier(struct_processus *s_etat_processus,  struct_descripteur_fichier *descripteur_fichier(struct_processus
         struct_fichier *s_fichier);          *s_etat_processus, struct_fichier *s_fichier);
 #endif  #endif
   
 /*  /*

Removed from v.1.8  
changed lines
  Added in v.1.16


CVSweb interface <joel.bertrand@systella.fr>