version 1.15, 2011/11/18 09:51:32
|
version 1.18, 2011/11/26 10:01:26
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.4 |
RPL/2 (R) version 4.1.5 |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 268 validation_chaine(unsigned char *chaine)
|
Line 268 validation_chaine(unsigned char *chaine)
|
{ |
{ |
if ((*(chaine + 1)) == '"') |
if ((*(chaine + 1)) == '"') |
{ |
{ |
// Valide |
chaine += 2; |
} |
} |
else if ((*(chaine + 1)) == 'b') |
else if ((*(chaine + 1)) == 'b') |
{ |
{ |
// Valide |
chaine += 2; |
} |
} |
else if ((*(chaine + 1)) == 'n') |
else if ((*(chaine + 1)) == 'n') |
{ |
{ |
// Valide |
chaine += 2; |
} |
} |
else if ((*(chaine + 1)) == 't') |
else if ((*(chaine + 1)) == 't') |
{ |
{ |
// Valide |
chaine += 2; |
} |
} |
else if ((*(chaine + 1)) == 'x') |
else if ((*(chaine + 1)) == 'x') |
{ |
{ |
Line 347 validation_chaine(unsigned char *chaine)
|
Line 347 validation_chaine(unsigned char *chaine)
|
{ |
{ |
return(d_faux); |
return(d_faux); |
} |
} |
|
|
|
chaine += 4; |
} |
} |
else if ((*(chaine + 1)) == '\\') |
else if ((*(chaine + 1)) == '\\') |
{ |
{ |
// Valide |
chaine += 2; |
} |
} |
else |
else |
{ |
{ |
Line 360 validation_chaine(unsigned char *chaine)
|
Line 362 validation_chaine(unsigned char *chaine)
|
} |
} |
else |
else |
{ |
{ |
// Caractère valide |
chaine++; |
} |
} |
|
|
chaine++; |
|
} |
} |
|
|
return(d_vrai); |
return(d_vrai); |
Line 527 prochain_caractere(struct_processus *s_e
|
Line 527 prochain_caractere(struct_processus *s_e
|
} |
} |
else if ((*(chaine + 1)) == '\\') |
else if ((*(chaine + 1)) == '\\') |
{ |
{ |
suivant = chaine + 1; |
suivant = chaine + 2; |
} |
} |
else |
else |
{ |
{ |
Line 599 longueur_chaine(struct_processus *s_etat
|
Line 599 longueur_chaine(struct_processus *s_etat
|
================================================================================ |
================================================================================ |
Routine retournant un pointeur sur le i-ème caractère d'une chaîne |
Routine retournant un pointeur sur le i-ème caractère d'une chaîne |
================================================================================ |
================================================================================ |
Entrées : structure sur l'état du processus et chaîne |
Entrées : structure sur l'état du processus, chaîne et position du caractère |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
Sorties : longueur de la chaîne |
Sorties : pointeur sur le caractère |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
Effets de bord : néant |
Effets de bord : néant |
================================================================================ |
================================================================================ |
Line 633 pointeur_ieme_caractere(struct_processus
|
Line 633 pointeur_ieme_caractere(struct_processus
|
return(pointeur); |
return(pointeur); |
} |
} |
|
|
|
|
|
/* |
|
================================================================================ |
|
Routine retournant la position du caractère en fonction du pointeur |
|
dans la chaîne |
|
================================================================================ |
|
Entrées : structure sur l'état du processus, chaîne et position |
|
-------------------------------------------------------------------------------- |
|
Sorties : quantième dans la chaîne |
|
-------------------------------------------------------------------------------- |
|
Effets de bord : néant |
|
================================================================================ |
|
*/ |
|
|
|
integer8 |
|
position_caractere_de_chaine(struct_processus *s_etat_processus, |
|
unsigned char *chaine, unsigned char *position) |
|
{ |
|
integer8 i; |
|
|
|
i = 1; |
|
|
|
while(chaine != position) |
|
{ |
|
chaine = prochain_caractere(s_etat_processus, chaine); |
|
i++; |
|
|
|
if ((*chaine) == d_code_fin_chaine) |
|
{ |
|
return(0); |
|
} |
|
} |
|
|
|
return(i); |
|
} |
|
|
|
|
|
/* |
|
================================================================================ |
|
Conversion d'une chaîne en majuscule ou en minuscule |
|
================================================================================ |
|
Entrées : chaîne et indicateur ('M' pour majuscules, 'm' pour minuscules) |
|
-------------------------------------------------------------------------------- |
|
Sorties : néant |
|
-------------------------------------------------------------------------------- |
|
Effets de bord : néant |
|
================================================================================ |
|
*/ |
|
|
|
void |
|
conversion_chaine(struct_processus *s_etat_processus, |
|
unsigned char *chaine, unsigned char type) |
|
{ |
|
int (*fonction_1)(int); |
|
int (*fonction_2)(int); |
|
|
|
unsigned char *ptr; |
|
unsigned char *ptr2; |
|
unsigned char registre; |
|
|
|
if (type == 'M') |
|
{ |
|
fonction_1 = toupper; |
|
fonction_2 = tolower; |
|
} |
|
else |
|
{ |
|
fonction_1 = tolower; |
|
fonction_2 = toupper; |
|
} |
|
|
|
ptr = chaine; |
|
|
|
while((*ptr) != d_code_fin_chaine) |
|
{ |
|
ptr2 = prochain_caractere(s_etat_processus, ptr); |
|
|
|
if ((ptr2 - ptr) == 1) |
|
{ |
|
registre = fonction_1((*ptr)); |
|
|
|
if (fonction_2(registre) == (*ptr)) |
|
{ |
|
(*ptr) = registre; |
|
} |
|
} |
|
|
|
ptr = ptr2; |
|
} |
|
|
|
return; |
|
} |
|
|
// vim: ts=4 |
// vim: ts=4 |