• Aucun résultat trouvé

La commande interp permet de cr´eer, manipuler ou d´etruire des interpr´eteurs et de partager entre eux des canaux. Les diverses actions sont obtenues grˆace aux sous-commandes suivantes :

interp alias InterpSource CommandeSource

Renvoie une liste Tcl dont les ´el´ements sont les arguments CommandeCible et Arg associ´es `a l’alias nomm´e CommandeSource. Ce sont des valeurs qui ont ´et´e sp´ecifi´ees au moment o`u l’alias a ´et´e cr´e´e. Il est possible que la commande source dans l’alias soit diff´erente de CommandeSource si jamais elle a ´et´e renomm´ee.

interp alias InterpSource CommandeSource {}

D´etruit l’alias pour CommandeSource dans l’interpr´eteur maˆıtre d´esign´e par InterpSource. L’argument CommandeSource se r´ef`ere au nom sous lequel l’alias a ´et´e cr´e´e; si la commande source a ´et´e renomm´ee, c’est la commande renomm´ee qui est d´etruite.

interp alias InterpSource CmdSource InterpCible CmdCible?Arg Arg...?

Cette commande cr´ee un alias entre deux interpr´eteurs esclaves (voir ci- dessous la m´ethode alias applicable `a une instance d’un interpr´eteur pour cr´eer un alias entre un esclave et son maˆıtre). Chacun des esclaves peut se trouver n’importe o`u dans la hi´erarchie des interpr´eteurs sous l’interpr´eteur qui a invoqu´e la commande.

Les arguments InterpSource et CmdSource identifient la source de l’alias : InterpSource est une liste Tcl dont les ´el´ements s´electionnent un interpr´eteur particulier. Par exemple, {a b} correspond `a un interpr´eteur b, esclave de l’interpr´eteur a, lui-mˆeme esclave de l’interpr´eteur appelant. Une liste vide {} d´esigne l’interpr´eteur qui invoque la commande. L’argument CmdSource indique le nom de la nouvelle commande qui sera cr´e´ee dans l’interpr´eteur source.

Les arguments InterpCible et CmdCible d´esignent un interpr´eteur et une com- mande cibles et les arguments Arg, s’il y en a, d´esignent des arguments suppl´ementaires qui seront ajout´es devant d’´eventuels arguments sp´ecifi´es dans l’invocation de CmdSource. CmdCible peut ne pas ˆetre d´efini au mo- ment de l’appel ou bien exister d´ej`a ; il n’est pas cr´e´e par cette commande. L’alias fait en sorte que la commande cible soit invoqu´ee dans l’interpr´eteur cible chaque fois que la commande source est invoqu´ee dans l’interpr´eteur source.

interp aliases?nomInterp?

. interp 100 sources pour tous les alias d´efinis dans l’interpr´eteur d´esign´e par l’argument nomInterp.

interp create?-safe??--??nomInterp?

Cette commande cr´ee un interpr´eteur maˆıtre identifi´e par nomInterp ainsi qu’une nouvelle commande dite commande esclave. Le nom de cette com- mande esclave est le dernier terme de nomInterp. Le nouvel interpr´eteur esclave et la commande esclave sont cr´e´es dans l’interpr´eteur identifi´e par l’argument nomInterp duquel on retire le dernier terme. Par exemple, si l’ar- gument nomInterp est {a b c} alors un nouvel interpr´eteur esclave et une commande esclave appel´es c sont cr´e´es dans l’interpr´eteur identifi´e par le che- min{a b}. Si l’argument nomInterp est omis, Tcl cr´ee un nom unique de la forme interpn o`u n est un nombre entier et l’utilise `a la fois pour l’interpr´eteur et la commande esclaves.

Avec l’option -safe (ou si l’interpr´eteur maˆıtre est s´ecuris´e), le nouvel in- terpr´eteur esclave sera s´ecuris´e. Le double tiret -- marque la fin des options en cas d’ambigu¨ıt´e.

Le r´esultat de la commande est le nom du nouvel interpr´eteur. Le nom de l’interp´eteur esclave ne doit pas exister d´ej`a parmi les autres interpr´eteurs du mˆeme maˆıtre sinon une erreur est g´en´er´ee.

interp delete?nomInterp...?

D´etruit z´ero ou plus interpr´eteurs sp´ecifi´es par les arguments nomInterp et, pour chaque interpr´eteur, d´etruit aussi ses interpr´eteurs esclaves. Les com- mandes esclaves sont d´etruites ´egalement. Si un argument nomInterp d´esigne un interpr´eteur qui n’existe pas, une erreur est g´en´er´ee.

interp eval nomInterp Arg?Arg...?

Cette commande concat`ene tous les arguments Arg `a la mani`ere de la com- mande concat (cf. p. 41) puis ´evalue la chaˆıne r´esultante comme un script dans l’interpr´eteur d´esign´e par nomInterp. Le r´esultat de cette ´evaluation est renvoy´e `a l’interpr´eteur appelant.

interp exists nomInterp

Renvoie 1 si l’interpr´eteur maˆıtre sp´ecifi´e par nomInterp existe dans le maˆıtre, 0 sinon. Si nomInterp est omis, l’interpr´eteur appelant est utilis´e.

interp expose nomInterp NomCach´e?CommandeExpos´ee?

R´ev`ele une commande cach´ee NomCach´e, lui attribuant ´eventuellement le nouveau nom CommandeExpos´ee (qui doit ˆetre un nom valide dans l’espace de noms global) dans l’interpr´eteur d´esign´e par nomInterp. S’il existe d´ej`a une commande de ce nom, l’instruction ´echouera.

interp hide nomInterp CommandeExpos´ee?CommandeCach´ee?

Cache, dans l’interpr´eteur d´esign´e par nomInterp, la commande Comman- deExpos´ee en lui donnant le nom de la commande cach´ee CommandeCach´ee, ou en gardant son nom si l’argument CommandeCach´ee n’est pas sp´ecifi´e. S’il existe d´ej`a une commande cach´ee de ce nom, l’instruction ´echouera. Ni Com- mandeExpos´ee, ni CommandeCach´ee ne peuvent contenir de qualificateurs d’espaces de noms sinon une erreur est g´en´er´ee. Les commandes `a cacher

sont recherch´ees dans l’espace de noms global mˆeme si l’espace de noms cou- rant est diff´erent. Cela empˆeche que des interpr´eteurs esclaves ne trompent l’interpr´eteur maˆıtre afin de lui faire cacher une mauvaise commande en ren- dant l’espace de noms courant diff´erent de l’espace global.

interp hidden nomInterp

Renvoie une liste des noms de toutes les commandes cach´ees dans l’interpr´eteur identifi´e par nomInterp.

interp invokehidden nomInterp?-global? CommandeCach´ee?Arg...?

Invoque la commande cach´ee CommandeCach´ee avec les arguments fournis dans l’interpr´eteur d´esign´e par nomInterp. Aucune substitution ou ´evaluation ne sont appliqu´ees aux arguments. Si le drapeau -global est pr´esent, la com- mande cach´ee est invoqu´ee au niveau global dans l’interpr´eteur cible ; sinon elle est invoqu´ee dans le cadre courant de la pile et peut acc´eder aux variables locales dans ce cadre et les cadres ext´erieurs.

interp issafe?nomInterp?

Renvoie 1 si l’interpr´eteur identifi´e par l’argument nomInterp est s´ecuris´e, 0 sinon.

interp marktrusted nomInterp

Marque l’interpr´eteur identifi´e par l’argument nomInterp comme sˆur (trus- ted ). N’expose pas les commandes cach´ees. Cette commande peut ˆetre in- voqu´ee seulement `a partir d’un interpr´eteur r´eput´e sˆur. La commande est sans effet si l’interpr´eteur identifi´e par nomInterp est d´ej`a r´eput´e sˆur. interp share InterpSource Canal InterpDestination

Fait du canal entr´ee/sortie identifi´e par Canal un canal partag´e entre l’in- terpr´eteur identifi´e par InterpSource et l’interpr´eteur identifi´e par InterpDes- tination. Les deux interpr´eteurs ont les mˆemes permissions sur le canal. Cha- cun des deux interpr´eteurs doit invoquer une commande close pour fermer le canal sous-jacent. Par ailleurs les canaux accessibles depuis un interpr´eteur sont automatiquement referm´es lorsque cet interpr´eteur est d´etruit.

interp slaves?nomInterp?

Renvoie une liste des noms de tous les interpr´eteurs esclaves associ´es `a l’in- terpr´eteur identifi´e par nomInterp. Si nomInterp est omis, l’interpr´eteur ap- pelant est utilis´e.

interp target nomInterp Alias

Renvoie une liste Tcl d´ecrivant l’interpr´eteur cible pour un alias. L’alias est sp´ecifi´e avec un nom d’interpr´eteur et un nom de commande source, exacte- ment comme avec la commande interp alias vue ci-dessus. Le nom de l’in- terpr´eteur cible est renvoy´e comme chemin d’interpr´eteur relativement `a l’in- terpr´eteur invoquant. Si l’interpr´eteur cible pour l’alias est l’interpr´eteur in- voquant alors une liste vide est renvoy´ee. Si l’interpr´eteur cible pour l’alias n’est pas l’interpr´eteur invoquant ou un de ses descendants alors une erreur est g´en´er´ee. La commande cible n’a pas `a ˆetre d´efinie au moment de cette invocation.

. interp 102 interp transfer InterpSource Canal InterpDestination

Rend le canal entr´ee/sortie identifi´e par Canal disponible dans l’interpr´eteur identifi´e par InterpDestination et indisponible dans l’interpr´eteur identifi´e par InterpSource.