EAGLE 데이터 구조는 다음과 같이 XML 파일에 저장됩니다.
이러한 데이터 파일에는 객체 계층이 포함되어 있습니다. 사용자 언어 프로그램에서는 각 내장 액세스 문을 통해 이러한 계층에 액세스할 수 있습니다.
library(L) { ... }
schematic(S) { ... }
board(B) { ... }
이러한 액세스 문은 라이브러리, 구조도 또는 보드에 포함된 모든 객체에 액세스할 수 있는 컨텍스트를 설정합니다.
이러한 객체의 특성은 멤버를 통해 액세스할 수 있습니다. 멤버에는 다음과 같은 두 가지 유형이 있습니다.
데이터 멤버는 객체에서 요청된 데이터를 즉시 반환합니다. 예를 들어 다음과 같은 경우
board(B) {
printf("%s\n", B.name);
}
보드 객체 B의 데이터 멤버 이름은 보드의 이름을 반환합니다. 또한 데이터 멤버는 다음과 같이 다른 객체를 반환할 수 있습니다.
board(B) {
printf("%f\n", B.grid.size);
}
여기서 보드의 그리드 데이터 멤버는 그리드 객체를 반환하며, 크기 데이터 멤버는 그리드의 크기를 반환합니다.
루프 멤버는 상위 수준 객체에 포함된 동일한 종류의 다중 객체에 액세스하는 데 사용됩니다.
board(B) {
B.elements(E) {
printf("%-8s %-8s\n", E.name, E.value);
}
}
이 예에서는 보드의 elements() 루프 멤버 함수를 사용하여 보드의 모든 요소를 반복하는 루프를 설정합니다. B.elements(E)
문 다음의 블록은 각 요소에 대해 차례로 실행되고, 현재 요소는 블록 안에서 이름 E를 통해 참조할 수 있습니다.
루프 멤버는 이름이 있는 경우 알파벳순으로 객체를 처리합니다.
루프 멤버 함수는 요청된 객체를 보관하는 데 필요한 유형의 변수를 작성합니다. 이러한 변수에 대해 어떤 유효한 이름도 자유롭게 사용할 수 있으므로 위의 예를 다음과 같이 작성할 수도 있습니다.
board(MyBoard) {
MyBoard.elements(TheCurrentElement) {
printf("%-8s %-8s\n", TheCurrentElement.name, TheCurrentElement.value);
}
}
또한 해당 예는 정확하게 동일한 작업을 수행할 수 있습니다. 루프 멤버 함수에 의해 작성된 변수의 범위는 루프 함수 호출 바로 다음에 나오는 문(또는 블록)으로 제한됩니다.
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
WIRE
SCHEMATIC
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