Lisaac/Prototype

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Question : Comment je fait une classe toto ?[modifier | modifier le wikicode]

Il suffit de créer un fichier toto.li contenant :

Section Header
+ name := TOTO;
- category := APPLICATION;

Remarques :

  • Il n'y a pas de classes en Lisaac mais des prototypes.
  •  := est l'affectation
  • Les prototypes sont identifiés EN_MAJUSCULES avec des _.
  • Le nom du fichier doit être le même que le nom du prototype mais en minuscule et l'extension du fichier est li.
  • Les mots clefs comme Section et Header doivent avoir précisément cette casse.
  • les identifiants comme name sont en minuscule.
  • Ce n'est pas une convention, le compilateur est sensible à la casse et vous signalera les erreurs de ce type.

Q : Où sont passées les accolades ou les mots clés de début et de fin de définition de classes ?[modifier | modifier le wikicode]

Vu qu'il y a un et un seul prototype par fichier nous n'en avons pas vraiment besoin, n'est ce pas ? Par contre il y a à la place une section d'entête décrivant l'identifiant du prototype.

Q: A quoi sert le mot category ?[modifier | modifier le wikicode]

C'est un petit peu compliqué à expliquer à ce niveau du tutorial. Disons pour le moment qu'il existe des catégories d'objets que le compilateur ne traitera pas de la même manière. Par exemple un objet peut représenter un dispositif matériel comme une souris, chaque souris aura un et un seul objet MOUSE associé ce qui restreint l'utilisation de l'objet. Alors que les classes que vous écrirez pour vos applications n'auront pas ces caractéristiques.

Les catégories sont une fonctionnalité à utiliser avec IsaacOS. Elles permettent de séparer les privilèges des objets. Les catégories peuvent être :

  • KERNEL : pour un élément du noyau.
  • DRIVER : pour les drivers de l'O.S.
  • APPLICATION : pour les objets normaux

Selon leur catégorie, les objets ont le droit d'accéder à d'autres objets ou non. Un objet de niveau KERNEL ne pourra utiliser que d'autre objets KERNEL alors qu'un objet niveau APPLICATION peut utiliser n'importe quel objet. Il existe de plus une catégorie DOCILE. Un tel peut être utilisé par n'importe quel objet mais ne peuvent accéder qu'aux objets autorisés pour la catégorie de l'objet qui l'utilise. Ces objets sont généralement des objets de la bibliothèque.

Q: Que signifient ces + et - ?[modifier | modifier le wikicode]

  • '+' devant le slot name, signifie que l'objet est clonable à condition qu'il hérite d'un objet lui offrant la possibilité de cloner (typiquement OBJECT). C'est le cas le plus courant.
  • '-' signifie que l'objet est non clonable. Cela correspond a un singleton.
  • Le '-' devant category sera expliqué plus tard

Q: C'est nul ton truc ! J'ai essayé de compiler mais il ne veut pas.[modifier | modifier le wikicode]

C'est normal, il faut juste attendre quelques sections. En fait cette classe (vide) est correcte mais on ne peut pas la compiler séparement.

Par contre le compilateur n'accepte pour le moment que les sections sous la forme "section HEADER", ce document se base sur la prochaine version du compilateur (0.2). Pensez donc à remplacer dans tous les exemples "Section" par "section" et le nom des sections comme "Header" par "HEADER".