Las estructuras de datos de EAGLE se almacenan en archivos XML:
Estos archivos de datos contienen una jerarquía de objetos. En un programa de idioma del usuario, puede acceder a estas jerarquías a través de sus respectivas sentencias de acceso integradas:
library(L) { ... }
schematic(S) { ... }
board(B) { ... }Estas sentencias de acceso configuran un contexto en el que se puede acceder a todos los objetos incluidos en la biblioteca, el esquema o la placa.
Se puede acceder a las propiedades de estos objetos a través de los miembros. Existen dos tipos de miembros:
Los miembros de datos devuelven inmediatamente los datos solicitados de un objeto. Por ejemplo, en
board(B) {
printf("%s\n", B.name);
}el nombre del miembro de datos del objeto de la placa B devuelve el nombre de la placa. Los miembros de datos también pueden devolver otros objetos,
board(B) {
printf("%f\n", B.grid.size);
}como cuando el miembro de datos de la rejilla de la placa devuelve un objeto de la rejilla, del que el miembro de datos que se refiere al tamaño devuelve el tamaño de la rejilla.
Los miembros de bucle se utilizan para acceder a varios objetos del mismo tipo, que se encuentran en un objeto de nivel superior:
board(B) {
B.elements(E) {
printf("%-8s %-8s\n", E.name, E.value);
}
}En este ejemplo se trata la función de miembro de bucle elements() de la placa para configurar un bucle a través de todos los elementos de la placa. El bloque que sigue a la sentencia B.elements(E) ejecuta cada elemento en orden y se puede hacer referencia al elemento actual dentro del bloque a través del nombre E.
Los miembros de bucle procesan los objetos en orden alfanumérico, siempre que tengan un nombre.
La función del miembro de bucle crea una variable del tipo que sea necesario para poder contener los objetos solicitados. Puede utilizar cualquier nombre válido para una variable de este tipo, por lo que el ejemplo anterior también se puede escribir como
board(MyBoard) {
MyBoard.elements(TheCurrentElement) {
printf("%-8s %-8s\n", TheCurrentElement.name, TheCurrentElement.value);
}
}y haría exactamente lo mismo. El ámbito de la variable creada por una función para el miembro de bucle se limita a la sentencia (o bloque) inmediatamente después del inicio de la función de bucle.
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