Aide sur la Directive Defval


Revenir à la page d'accueil
defval nom [valeur]

Cette directive permet (à l'instar de la directive #define de c/c++) d'associer un nom symbolique à une valeur. Ce nom symbolique peut ensuite être utilisé dans le fichier de description. Lors de la
 lecture des directives suivantes, le nom symbolique sera remplacé (substitué) par la valeur qui lui est associée.
De plus, une directive #define correspondante sera aussi générée qui pourra ainsi être également
utilisée par l'application.	exemple:
	
				defval  BioLevel  19
	
Il est possible d'omettre la valeur lorsque l'on veut générer un define dans le projet dont on veut pouvoir simplement tester l'existence. Ex :	defval  key_bilap

L'avantage est évident : si le nom symbolique a bien été utilisé partout où l'on a besoin de la 
valeur correspondante (aussi bien dans le fichier de description que dans l'application) il suffira, lorsque l'on souhaite modifier cette valeur de n'avoir à intervenir que sur sa définition

Cette directive a été envisagée que pour la définition de valeur numérique. Cette valeur doit être saisie sans blanc. Par exemple,  la valeur obtenue 
par la déclaration:
		defval cplank 6.63 e-34 	sera 6.63 (et non pas 6.63e-34)

Néanmoins, il est aussi possible (bien que cette utilité reste à démontrer) de définir sous la même condition (càd sans blanc), une chaîne de caractères (entre côtes). Exemple:
			defval titre	"DYNAMIQUE"

Incidemment, en définissant une chaîne de caractères non mise entre côtes, il est aussi  possible de se redéfinire le langage des directives de Yao it-self. Exemple:

		defval define defval            		grâce à cette déclaration, la
 suivante
		define CINQ   7 			est reconnue comme la directive defval

		defval profondeur 19
		defval largeur 13                              l'ensemble de ces déclarations
		defval longueur 25                                            est équivalent
		defval espace space_dim                                          à :
		espace largeur longueur profondeur              space_dim 13 25 19
	
	
Mais un autre avantage, non négligeable, sur l'aspect modulaire apparaît. Si l'on souhaite remplacer un module ModA, par un autre  module, 
ModB, (en supposant bien sur que ce dernier soit efficient : même nombre d'entrées et de sorties, 
même connectivité,) il suffit de faire :

		defval  ModA ModB 
  	
	On pourrait presque dire que les modules déclarés dans le fichier de description sont
 virtuels !)

Les règles d'utilisation de defval sont les suivantes :

- Les noms symboliques suivants sont réservés et ne doivent donc pas être redéfinis dans le
fichier de description:
			YA1, YA2, YA3	      		 (correspondant à la taille de chaque axe)
par contre les #define correspondant sont générés et peuvent être utilisés par l'application.

- Une définition ne doit être redéfinie :
		defval epsi 0,5768
		defval epsi 0,5876			-> cette définition sera rejetée

- Mais par contre, on peut utiliser une valeur déjà définie dans une nouvelle définition :
		defval unite 1000
		defval kilo  unite			-> et donc kilo vaudra 1000

- En général, une définition ne s'applique pas sur une sous-chaîne de caractère. Ainsi, si l'on
a défini la macro	defval mod  truc
il n'y aura pas de substitution lorsque par exemple la directive modul sera rencontrée: celle-ci
ne sera donc pas remplacée par: trucul
Il y a cependant une exception à cette règle pour la définition des intervalles des directives ctin ctinm (voir ci-après) ; mais à titre 
d'exemple, si l'on a définie :	defval deep 17
       		on pourrait saisir l'intervalle	:	3..deep   

rappel : 
L'exec disp_devfal permet d'afficher le tableaux des définitions



Revenir à la page d'accueil