version 1.62, 2015/01/05 15:32:24
|
version 1.65, 2015/06/11 21:20:41
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.20 |
RPL/2 (R) version 4.1.22 |
Copyright (C) 1989-2015 Dr. BERTRAND Joël |
Copyright (C) 1989-2015 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 130
|
Line 130
|
#define logical int |
#define logical int |
#define string char * |
#define string char * |
#define integer int |
#define integer int |
#define object struct_objet * |
|
|
|
#define declareStructure typedef struct { |
#define declareStructure typedef struct { |
#define declareUnion typedef union { |
#define declareUnion typedef union { |
Line 139
|
Line 138
|
#define target(a) (*a) |
#define target(a) (*a) |
#define address(a) (&a) |
#define address(a) (&a) |
|
|
|
#define subroutine(name) int name() |
#define beginGroup { __CATCH_SYSTEM_ERROR__; |
#define beginGroup { __CATCH_SYSTEM_ERROR__; |
#define endGroup __CATCH_SYSTEM_ERROR__; } |
#define endGroup __CATCH_SYSTEM_ERROR__; } |
#define beginMacro do beginGroup |
#define beginMacro do beginGroup |
Line 327
|
Line 327
|
char *ptr1, *ptr2; \ |
char *ptr1, *ptr2; \ |
int drapeau; \ |
int drapeau; \ |
unsigned long i; \ |
unsigned long i; \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
if (strcmp(version, _d_version_rpl) != 0) \ |
if (strcmp(version, _d_version_rpl) != 0) \ |
{ \ |
{ \ |
notice(stdout, "Versions mismatch : library %s, expected %s\n", \ |
notice(stdout, "Versions mismatch : library %s, expected %s\n", \ |
Line 566
|
Line 568
|
// Constantes symboliques |
// Constantes symboliques |
|
|
#define createSymbolicConstant(rpl_object, type, value) do { \ |
#define createSymbolicConstant(rpl_object, type, value) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
if ((strcmp(#type, "integer") != 0) && (strcmp(#type, "real") != 0)) \ |
if ((strcmp(#type, "integer") != 0) && (strcmp(#type, "real") != 0)) \ |
systemError("Type not allowed for symbolic constant"); \ |
systemError("Type not allowed for symbolic constant"); \ |
__taille_bloc = sizeof(t_8_bits) * 8; \ |
__taille_bloc = sizeof(t_8_bits) * 8; \ |
Line 606
|
Line 610
|
__constante--; } while(0) |
__constante--; } while(0) |
|
|
#define createSymbolicComplexConstant(rpl_object, rp, ip) do { \ |
#define createSymbolicComplexConstant(rpl_object, rp, ip) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
__taille_bloc = sizeof(t_8_bits) * 8; \ |
__taille_bloc = sizeof(t_8_bits) * 8; \ |
__indice_bloc = (35 - 1) / __taille_bloc; \ |
__indice_bloc = (35 - 1) / __taille_bloc; \ |
__indice_bit = (35 - 1) % __taille_bloc; \ |
__indice_bit = (35 - 1) % __taille_bloc; \ |
Line 778
|
Line 784
|
|
|
#define createVectorObject(rpl_object, size, otype, structure, cat) do { \ |
#define createVectorObject(rpl_object, size, otype, structure, cat) do { \ |
integer8 i; \ |
integer8 i; \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
if (rpl_object != NULL) \ |
if (rpl_object != NULL) \ |
systemError("Reallocated object"); \ |
systemError("Reallocated object"); \ |
if ((rpl_object = allocation(cat)) == NULL) \ |
if ((rpl_object = allocation(cat)) == NULL) \ |
Line 900
|
Line 908
|
else executionError("Type mismatch error"); } while(0) |
else executionError("Type mismatch error"); } while(0) |
|
|
#define createRealVectorObject(rpl_object, size) \ |
#define createRealVectorObject(rpl_object, size) \ |
createVectorObject(object, size, real8, struct_vecteur, VRL) |
createVectorObject(rpl_object, size, real8, struct_vecteur, VRL) |
|
|
// A FIXER |
// A FIXER |
|
|
Line 957
|
Line 965
|
#define elseIfIsName(rpl_object) } else if (isName(rpl_object)) |
#define elseIfIsName(rpl_object) } else if (isName(rpl_object)) |
|
|
#define setName(rpl_object, value) do { \ |
#define setName(rpl_object, value) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
ifIsName(rpl_object) \ |
ifIsName(rpl_object) \ |
{ \ |
{ \ |
if ((*rpl_object).nombre_occurrences > 1) \ |
if ((*rpl_object).nombre_occurrences > 1) \ |
Line 982
|
Line 992
|
(*((struct_nom *) (*rpl_object).objet)).symbole = d_vrai; } while(0) |
(*((struct_nom *) (*rpl_object).objet)).symbole = d_vrai; } while(0) |
|
|
#define createNameObject(rpl_object) do { \ |
#define createNameObject(rpl_object) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
if (rpl_object != NULL) \ |
if (rpl_object != NULL) \ |
systemError("Reallocated object"); \ |
systemError("Reallocated object"); \ |
if ((rpl_object = allocation(NOM)) == NULL) \ |
if ((rpl_object = allocation(NOM)) == NULL) \ |
Line 1001
|
Line 1013
|
#define elseIfIsString(rpl_object) else if (isString(rpl_object)) |
#define elseIfIsString(rpl_object) else if (isString(rpl_object)) |
|
|
#define setString(rpl_object, string) do { \ |
#define setString(rpl_object, string) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
ifIsString(rpl_object) \ |
ifIsString(rpl_object) \ |
{ \ |
{ \ |
if (string == NULL) executionError("Nullified string"); else \ |
if (string == NULL) executionError("Nullified string"); else \ |
Line 1028
|
Line 1042
|
else executionError("Type mismatch error"); } while(0) |
else executionError("Type mismatch error"); } while(0) |
|
|
#define createStringObject(rpl_object) do { \ |
#define createStringObject(rpl_object) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
if (rpl_object != NULL) \ |
if (rpl_object != NULL) \ |
systemError("Reallocated object"); \ |
systemError("Reallocated object"); \ |
if ((rpl_object = allocation(CHN)) == NULL) \ |
if ((rpl_object = allocation(CHN)) == NULL) \ |
Line 1052
|
Line 1068
|
(*rpl_object).objet = NULL; } while(0) |
(*rpl_object).objet = NULL; } while(0) |
|
|
#define addObjectToList(list, rpl_object) do { \ |
#define addObjectToList(list, rpl_object) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
ifIsList(list) \ |
ifIsList(list) \ |
{ \ |
{ \ |
struct_objet *__tmp_rpl_object; \ |
struct_objet *__tmp_rpl_object; \ |
Line 1085
|
Line 1103
|
else executionError("Type mistmatch error"); } while(0) |
else executionError("Type mistmatch error"); } while(0) |
|
|
#define insertObjectIntoList(list, rpl_object) do { \ |
#define insertObjectIntoList(list, rpl_object) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
ifIsList(list) \ |
ifIsList(list) \ |
{ \ |
{ \ |
struct_objet *__tmp_rpl_object; \ |
struct_objet *__tmp_rpl_object; \ |
Line 1115
|
Line 1135
|
else executionError("Type mistmatch error"); } while(0) |
else executionError("Type mistmatch error"); } while(0) |
|
|
#define removeObjectFromList(list, rpl_object) do { \ |
#define removeObjectFromList(list, rpl_object) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
ifIsList(list) \ |
ifIsList(list) \ |
{ \ |
{ \ |
if ((*list).objet != NULL) \ |
if ((*list).objet != NULL) \ |
Line 1176
|
Line 1198
|
#define size(a) sizeof(a) |
#define size(a) sizeof(a) |
|
|
#define allocate(a) ({ void *ptr; \ |
#define allocate(a) ({ void *ptr; \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
if ((ptr = malloc(a)) == NULL) \ |
if ((ptr = malloc(a)) == NULL) \ |
systemError("Memory allocation error"); ptr; }) |
systemError("Memory allocation error"); ptr; }) |
|
|
#define deallocate(a) free(a) |
#define deallocate(a) do { \ |
|
struct_processus *s_etat_processus; \ |
|
s_etat_processus = (*rpl_arguments).s_etat_processus; \ |
|
free(a); } while(0) |
|
|
/* |
/* |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |