Les structures de données EAGLE sont stockées dans des fichiers XML :
Ces fichiers de données contiennent une hiérarchie d’objets. Dans un programme de langage utilisateur, vous pouvez accéder à ces hiérarchies via leurs instructions d’accès intégrées respectives :
library(L) { ... }
schematic(S) { ... }
board(B) { ... }Ces instructions d’accès définissent un contexte qui vous permet d’accéder à tous les objets contenus dans la bibliothèque, le schéma ou le circuit imprimé.
Les propriétés de ces objets sont accessibles via les membres. Il existe deux types de membres :
Les membres de données renvoient immédiatement les données demandées à partir d’un objet. Par exemple, dans :
board(B) {
printf("%s\n", B.name);
}le nom du membre de données de l’objet de circuit imprimé B renvoie le nom du circuit imprimé. Les membres de données peuvent également renvoyer d’autres objets, comme dans l’exemple suivant :
board(B) {
printf("%f\n", B.grid.size);
}où le membre de données de grille du circuit imprimé renvoie un objet de grille dont le membre de données de taille renvoie ensuite la taille de la grille.
Les membres de boucle sont utilisés pour accéder à plusieurs objets du même type, qui sont contenus dans un objet de niveau supérieur :
board(B) {
B.elements(E) {
printf("%-8s %-8s\n", E.name, E.value);
}
}Dans cet exemple, la fonction de membre de boucle elements() du circuit imprimé est utilisée pour définir une boucle qui parcourt tous les éléments du circuit imprimé. Le bloc qui suit l’instruction B.elements(E) est exécuté successivement pour chaque élément. À l’intérieur du bloc, l’élément actif est référencé sous le nom E.
Les membres de boucle traitent les objets dans l’ordre alphanumérique, dans la mesure où ils ont un nom.
Une fonction de membre de boucle crée une variable du type nécessaire pour contenir les objets requis. Vous pouvez utiliser tout nom valide pour cette variable. L’exemple ci-dessus peut donc aussi s’écrire comme suit :
board(MyBoard) {
MyBoard.elements(TheCurrentElement) {
printf("%-8s %-8s\n", TheCurrentElement.name, TheCurrentElement.value);
}
}Le résultat est exactement le même. La portée de la variable créée par une fonction de membre de boucle est limitée à l’instruction (ou au bloc) qui se trouve immédiatement après l’appel de fonction de boucle.
LIBRARY
GRID
LAYER
DEVICESET
DEVICE
GATE
FOOTPRINT
CONTACT
PAD
SMD
CIRCLE
HOLE
RECTANGLE
FRAME
DIMENSION
TEXT
WIRE
POLYSHAPE
WIRE
POLYCUTOUT
WIRE
PACKAGE3D
SYMBOL
PIN
CIRCLE
RECTANGLE
FRAME
DIMENSION
TEXT
WIRE
POLYSHAPE
WIRESCHEMATIC
GRID
LAYER
LIBRARY
ATTRIBUTE
VARIANTDEF
COMPONENT
ATTRIBUTE
VARIANT
SHEET
CIRCLE
RECTANGLE
FRAME
DIMENSION
TEXT
WIRE
POLYSHAPE
WIRE
INSTANCE
ATTRIBUTE
MODULEINST
BUS
SEGMENT
LABEL
TEXT
WIRE
WIRE
NET
SEGMENT
JUNCTION
PINREF
PORTREF
TEXT
WIRE
MODULE
PORT
COMPONENT
SHEET
(same as above)BOARD
GRID
LAYER
LIBRARY
ATTRIBUTE
VARIANTDEF
CIRCLE
HOLE
RECTANGLE
FRAME
DIMENSION
TEXT
WIRE
POLYSHAPE
WIRE
POLYCUTOUT
WIRE
ELEMENT
ATTRIBUTE
VARIANT
SIGNAL
CONTACTREF
POLYPOUR
WIRE
VIA
WIRE