Вбудовані

Вбудовані

Вбудовані – це константи, змінні, функції та оператори, які надають додаткову інформацію та дозволяють маніпулювати даними.

Вбудовані константи

Вбудовані константи використовуються для надання інформації про параметри об’єкта, такі як максимальна рекомендована довжина імені, прапори тощо. Багато типів об’єктів мають власний розділ констант, у якому перераховано вбудовані константи для цього конкретного об’єкта (див., наприклад, UL_PIN).

Наступні вбудовані константи визначені на додаток до перелічених для різних типів об’єктів:

EAGLE_VERSION Номер версії програми EAGLE (int)
EAGLE_RELEASE Номер випуску програми EAGLE (int)
EAGLE_SIGNATURE рядок, що містить назву програми EAGLE, версію та інформацію про авторські права
EAGLE_PATH рядок, що містить повний шлях до виконуваного файлу EAGLE
EAGLE_DIR рядок, що містить каталог встановлення EAGLE ($EAGLEDIR)
EAGLE_HOME рядок, що містить домашній каталог користувача під час запуску EAGLE ($HOME)
eagle_epf рядок, що містить повний шлях до поточного використовуваного eagle.epf
OS_SIGNATURE рядок, що містить підпис операційної системи (наприклад, Mac…, Windows… або Linux)
REAL_EPSILON мінімальне додатне дійсне число таке, що 1,0 + REAL_EPSILON != 1,0
REAL_MAX найбільшу можливу реальну вартість
REAL_MIN найменше можливе (позитивне!) реальне значення. Найменше представлене число дорівнює -REAL_MAX
INT_MAX найбільше можливе значення int
INT_MIN найменше можливе значення int
ПІ значення "пі" (3.14…, дійсне)
використання рядок, що містить текст директиви #usage

Ці вбудовані константи містять шляхи до каталогів, визначені в діалоговому вікні каталогів, із будь-якими спеціальними змінними ($HOME та $EAGLEDIR), заміненими їхніми фактичними значеннями. Оскільки кожен шлях може складатися з кількох каталогів, ці константи є масивами рядків з окремим каталогом у кожному члені. Перший порожній член позначає кінець шляху:

 path_lbr []    Libraries path_dru []    Design Rules path_ulp []    User Language Programs path_scr []    Scripts path_cam [] CAM Jobs path_epf []    Projects

Використовуючи ці константи для створення повного імені файлу, вам потрібно використовувати роздільник каталогів, як у

 string s = path_lbr [ 0 ] + '/' + "mylib.lbr" ;

Бібліотеки, які зараз використовуються через команду USE:

 used_libraries []  

Вбудовані змінні

Вбудовані змінні використовуються для надання інформації під час виконання.

 int argc number of arguments given to the RUN command string argv [] arguments given to the RUN command ( argv [ 0 ] is the full ULP file name )

Вбудовані функції

Вбудовані функції використовуються для виконання певних завдань, як-от друк відформатованих рядків, сортування масивів даних тощо.

Ви також можете написати власні функції та використовувати їх для структурування вашої програми мови користувача.

Вбудовані функції згруповані в такі категорії:

  • Функції символів
  • Функції обробки файлів
  • Математичні функції
  • Різні функції
  • Мережеві функції
  • Функції друку
  • Рядкові функції
  • Функції часу
  • Функції об'єкта
  • Функції XML

Алфавітне посилання всіх вбудованих функцій:

 abs () acos () asin () atan () ceil () cfgget () cfgset () clrgroup () country () cos ()
exit () exp () fdlsignature () filedir () fileerror () fileext () fileglob () filename () fileread () filesetext () filesize () filetime () floor () frac () inch2u () ingroup () isalnum () isalpha () iscntrl () isdigit () isgraph () islower () isprint () ispunct () isspace () isupper () isxdigit () language () log () log10 () lookup () max () mic2u () mil2u () min () mm2u () neterror () netget () netpost () palette () pow () printf () round () setgroup () setvariant () sin () sleep () sort () sprintf () sqrt () status () strchr () strjoin () strlen () strlwr () strrchr () strrstr () strsplit () strstr () strsub () strtod () strtol () strupr () strxstr () system () t2day () t2dayofweek () t2hour () t2minute () t2month () t2second () t2string () t2year () tan () time () tolower () toupper () trunc () u2inch () u2mic () u2mil () u2mm () variant () xmlattribute () xmlattributes () xmlelement () xmlelements () xmltags () xmltext ()

Функції персонажа

Символьні функції використовуються для роботи з окремими символами.

Доступні такі функції символів:

 isalnum () isalpha () iscntrl () isdigit () isgraph () islower () isprint () ispunct () isspace () isupper () isxdigit () tolower () toupper ()

є…()

функція

Перевірте, чи належить персонаж до певної категорії.

Синтаксис

 int isalnum ( char c );
int isalpha ( char c );
int iscntrl ( char c );
int isdigit ( char c );
int isgraph ( char c );
int islower ( char c );
int isprint ( char c );
int ispunct ( char c );
int isspace ( char c );
int isupper ( char c );
int isxdigit ( char c );

Повернення

Функції is… повертають відмінне від нуля значення, якщо даний символ потрапляє в категорію; нуль інакше.

Категорії персонажів

 isalnum letters ( A to Z or a to z ) or digits ( 0 to 9 ) isalpha letters ( A to Z or a to z ) iscntrl delete characters or ordinary control characters ( 0x7F or 0x00 to 0x1F ) isdigit digits ( 0 to 9 ) isgraph printing characters ( except space ) islower lowercase letters ( a to z ) isprint printing characters ( 0x20 to 0x7E ) ispunct punctuation characters ( iscntrl or isspace ) isspace space , tab , carriage return , new line , vertical tab , or formfeed ( 0x09 to 0x0D , 0x20 ) isupper uppercase letters ( A to Z ) isxdigit hex digits ( 0 to 9 , A to F , a to f )

приклад

 char c = 'A' ;
if ( isxdigit ( c )) printf ( "%c is hex
" , c );
else printf ( "%c is not hex
" , c );

до…()

функція

Перетворити символ у верхній або нижній регістр.

Синтаксис

 char tolower ( char c );
char toupper ( char c );

Повернення

Функція tolower повертає перетворений символ, якщо c є верхнім регістром. Усі інші символи повертаються без змін. Функція toupper повертає перетворений символ, якщо c є малим регістром. Усі інші символи повертаються без змін.

Дивіться також strupr, strlwr

Функції обробки файлів

Функції обробки імен файлів використовуються для роботи з іменами, розмірами та часовими мітками файлів.

Перегляньте output() для отримання інформації про те, як писати у файл.

fileerror()

функція

Повертає статус операцій введення/виведення.

Синтаксис

 int fileerror ();

Повернення

Функція fileerror повертає 0, якщо все гаразд.

Дивіться також output, printf, fileread

fileerror перевіряє статус будь-яких операцій введення/виведення, які були виконані з моменту останнього виклику цієї функції, і повертає 0, якщо все було добре. Якщо будь-яка з операцій введення-виведення спричинила помилку, буде повернено значення, відмінне від 0.

Ви повинні викликати fileerror перед будь-якими операціями введення-виведення, щоб скинути попередній стан помилки, і викликати його знову після операцій введення-виведення, щоб перевірити, чи вони були успішними.

Коли fileerror повертає значення, відмінне від 0 (таким чином вказуючи на помилку), відповідне повідомлення про помилку вже було надано користувачеві.

приклад

 fileerror (); output ( "file.txt" , "wt" ) { printf ( "Test
" );
  }
if ( fileerror ())
   exit ( 1 );

fileglob()

функція

Виконайте пошук у каталозі.

Синтаксис

 int fileglob ( string & array [], string pattern );

Повернення

Функція fileglob повертає кількість записів, скопійованих у масив.

Дивіться також dlgFileOpen(), dlgFileSave()

fileglob виконує пошук у каталозі за шаблоном .

шаблон може містити " " та "?" як символи підстановки. Якщо *шаблон закінчується на '/', буде повернено вміст даного каталогу.

Імена в отриманому масиві, які закінчуються на '/', є іменами каталогів.

Масив відсортовано за алфавітом, першими йдуть каталоги.

Спеціальні записи «.» і «..» (для поточного та батьківського каталогів) ніколи не повертаються в масиві.

Якщо шаблон не збігається або якщо у вас немає дозволу на пошук у вказаному каталозі, отриманий масив буде порожнім.

Примітка для користувачів Windows: роздільником каталогу в масиві завжди є коса риска. Це гарантує, що програми мови користувача працюватимуть незалежно від платформи. У шаблоні зворотна коса риска ('') також розглядається як роздільник каталогу.

Сортування імен файлів у Windows виконується без урахування регістру.

приклад

 string a [];
int n = fileglob ( a , "*.brd" );

Функції імен файлів

функція

Розділити назву файлу на окремі частини.

Синтаксис

 string filedir ( string file );
string fileext ( string file );
string filename ( string file );
string filesetext ( string file , string newext );

Повернення

filedir повертає каталог файлу (включно з літерою диска під Windows).

fileext повертає розширення файлу.

filename повертає назву файлу (включно з розширенням).

filesetext повертає файл із розширенням newext.

Дивіться також функції Filedata

приклад

 if ( board ) board ( B ) { output ( filesetext ( B . name , ".out" )) {
    ...
    }
  }

Функції Filedata

функція

Отримує мітку часу та розмір файлу.

Синтаксис

 int filesize ( string filename );
int filetime ( string filename );

Повернення

filesize повертає розмір (у байтах) заданого файлу.

filetime повертає мітку часу даного файлу в секундах. Формат сумісний для використання з функціями часу.

Дивіться також час, функції імені файлу

приклад

 board ( B ) printf ( "Board: %s
Size: %d
Time: %s
" , B . name , filesize ( B . name ), t2string ( filetime ( B . name )));

Функції введення файлів

Функції введення файлів використовуються для читання даних із файлів. Доступний такий вхідний файл:

  • fileread()

Перегляньте output() для отримання інформації про те, як писати у файл.

fileread()

функція

Читає дані з файлу.

Синтаксис

 int fileread ( dest , string file );

Повернення

fileread повертає кількість об’єктів, прочитаних із файлу.

Фактичне значення значення, що повертається, залежить від типу dest .

Дивіться також пошук, strsplit, fileerror

Якщо dest є масивом символів, файл читатиметься як необроблені двійкові дані, а значення, що повертається, відображає кількість байтів, прочитаних у масиві символів (що дорівнює розміру файлу).

Якщо dest є рядковим масивом, файл читатиметься як текстовий файл (по одному рядку на елемент масиву), а поверненим значенням буде кількість рядків, зчитаних у рядковий масив. Символи нового рядка буде видалено.

Якщо dest є рядком, весь файл буде зчитано в цей рядок, а повернуте значення буде довжиною цього рядка (яка не обов’язково дорівнює розміру файлу, якщо операційна система зберігає текстові файли з "cr/lf" замість символу нового рядка).

приклад

 char b [];
int nBytes = fileread ( b , "data.bin" );
string lines [];
int nLines = fileread ( lines , "data.txt" );
string text ;
int nChars = fileread ( text , "data.txt" );

Математичні функції

Математичні функції використовуються для виконання математичних операцій. Доступні такі математичні функції:

 abs () acos () asin () atan () ceil () cos () exp () floor () frac () log () log10 () max () min () pow () round () sin () sqrt () trunc () tan ()

Повідомлення про помилки

Якщо аргументи виклику математичної функції призводять до помилки, повідомлення про помилку покаже фактичні значення аргументів. Таким чином заяви

 real x = - 1.0 ; real r = sqrt ( 2 * x );

призведе до повідомлення про помилку

 Invalid argument in call to 'sqrt(-2)'

Функції абсолюту, максимуму та мінімуму

функція

Абсолют, максимум і мінімум функцій.

Синтаксис

 type abs ( type x ); type max ( type x , type y ); type min ( type x , type y );

Повернення

abs повертає абсолютне значення x.

max повертає максимум x і y.

min повертає мінімум x і y.

Тип повернення цих функцій такий самий, як і (більший) тип аргументів. Тип має бути char, int або real.

приклад

 real x = 2.567 , y = 3.14 ; printf ( "The maximum is %f
" , max ( x , y ));

Функції округлення

функція

Функції округлення.

Синтаксис

 real ceil ( real x ); real floor ( real x ); real frac ( real x ); real round ( real x ); real trunc ( real x );

Повернення

ceil повертає найменше ціле число не менше за x.

floor повертає найбільше ціле число, не більше за x.

frac повертає дробову частину x.

round повертає x, округлене до найближчого цілого числа.

trunc повертає цілу частину x.

приклад

 real x = 2.567 ; printf ( "The rounded value of %f is %f
" , x , round ( x ));

Тригонометричні функції

функція

Тригонометричні функції.

Синтаксис

 real acos ( real x ); real asin ( real x ); real atan ( real x ); real cos ( real x ); real sin ( real x ); real tan ( real x );

Повернення

acos повертає арккосинус x.

asin повертає арксинус x.

atan повертає арктангенс x.

cos повертає косинус x.

sin повертає синус x.

tan повертає тангенс x.

Константи

PI значення "пі" (3.14…)

Примітка:

Кути подано в радіанах.

приклад

 real x = PI / 2 ; printf ( "The sine of %f is %f
" , x , sin ( x ));

Експоненціальні функції

функція

Експоненціальні функції.

Синтаксис

 real exp ( real x ); real log ( real x ); real log10 ( real x ); real pow ( real x , real y ); real sqrt ( real x );

Повернення

exp повертає експоненту e у степені x. log повертає натуральний логарифм x. log10 повертає логарифм x за основою 10. pow повертає значення x у степені y. sqrt повертає квадратний корінь з x.

приклад

 real x = 2.1 ; printf ( "The square root of %f is %f
" , x , sqrt ( x )); printf ( "The 3rd root of %f is %f
" , x , pow ( x , 1.0 / 3 ));

Різні функції

Для виконання різних завдань використовуються різні функції.

Доступні такі різні функції:

  • Параметри конфігурації
  • країна()
  • вихід()
  • fdlsignature()
  • мова()
  • пошук()
  • палітра()
  • sort()
  • статус()
  • система()
  • Перетворення одиниць

Параметри конфігурації

функція

Зберігати та отримувати параметри конфігурації.

Синтаксис

 string cfgget ( string name [, string default ]);
void cfgset ( string name , string value );

Повернення

cfgget повертає значення параметра, що зберігається під заданим іменем. Якщо такий параметр ще не збережено, повертається необов’язкове значення за замовчуванням (або порожній рядок, якщо за замовчуванням не вказано). Функція cfgget отримує значення, які раніше були збережені за допомогою виклику cfgset().

Функція cfgset встановлює задане значення параметра з заданим іменем.

Дійсні символи для назви: «A»-«Z», «a»-«z», «0»-’9», «.» і '_'.

Назви параметрів чутливі до регістру.

Параметри зберігаються у файлі користувача eaglerc . Щоб переконатися, що різні програми на мові користувача не перезаписують параметри одна одної, якщо вони використовують однакові імена параметрів, рекомендується розміщувати назву ULP на початку назви параметра. Наприклад, ULP з назвою mytool.ulp , яка використовує параметр з назвою MyParam, може зберігати цей параметр під назвою

 mytool . MyParam

Оскільки параметри конфігурації зберігаються у файлі eaglerc , який також містить усі інші параметри користувача EAGLE, також можна отримати доступ до параметрів EAGLE за допомогою cfgget() і cfgset() . Щоб переконатися, що параметри ULP не конфліктують з будь-якими параметрами EAGLE, параметри EAGLE повинні мати префікс "EAGLE:", як у

 EAGLE : Option . XrefLabelFormat

Зауважте, що немає документації щодо всіх внутрішніх параметрів EAGLE та того, як вони зберігаються у файлі eaglerc . Також будьте дуже обережні, змінюючи будь-який із цих параметрів! Як і з самим файлом eaglerc , ви повинні маніпулювати цими параметрами, лише якщо знаєте, що робите! Деякі параметри EAGLE можуть вимагати перезапуску EAGLE, щоб зміни вступили в силу. У файлі eaglerc параметри мови користувача зберігаються з префіксом "ULP:". Тому цей префікс можна додатково поставити перед назвами параметрів мови користувача, як у

 ULP : mytool . MyParam

приклад

 string MyParam = cfgget ( "mytool.MyParam" , "SomeDefault" );
MyParam = "OtherValue" ; cfgset ( "mytool.MyParam" , MyParam );

країна()

функція

Повертає код країни використовуваної системи.

Синтаксис

 string country ();

Повернення

country повертає рядок, що складається з двох символів у верхньому регістрі, який ідентифікує країну, що використовується в поточній системі. Якщо неможливо визначити таке налаштування країни, буде повернено значення за умовчанням "США".

Дивіться також мова

приклад

 dlgMessageBox ( "Your country code is: " + country ());

вихід()

функція

Вихід із програми мови користувача.

Синтаксис

 void exit ( int result );
void exit ( string command );

Дивіться також БІГТИ

Функція виходу завершує виконання програми мовою користувача.

Якщо задано цілочисельний результат, він використовуватиметься як значення, що повертається програмою. Якщо задано рядкову команду , ця команда буде виконана так, ніби її було введено в командний рядок одразу після команди RUN. У цьому випадку значення, що повертається ULP, має значення EXIT_SUCCESS.

Константи

 EXIT_SUCCESS return value for successful program execution ( value 0 ) EXIT_FAILURE return value for failed program execution ( value - 1 )

fdlsignature()

функція

Розраховує цифровий підпис для Premier Farnell's Design Link.

Синтаксис

 string fdlsignature ( string s , string key );

Функція fdlsignature використовується для обчислення цифрового підпису під час доступу до інтерфейсу Design Link компанії Premier Farnell.

мова()

функція

Повертає код мови використовуваної системи.

Синтаксис

 string language ();

Повернення

language повертає рядок, що складається з двох символів нижнього регістру, який ідентифікує мову, що використовується в поточній системі. Якщо неможливо визначити такий параметр мови, буде повернено значення за замовчуванням "en".

Дивіться також країна

Функція мови може бути використана, щоб змусити ULP використовувати інший рядок повідомлення, залежно від того, яку мову використовує поточна система.

У наведеному нижче прикладі всі рядки, які використовуються в ULP, перераховані в масиві рядків I18N[] , перед яким стоїть рядок, що містить різні мовні коди, підтримувані цим ULP. Зверніть увагу на символи vtab, які використовуються для розділення окремих частин кожного рядка (вони важливі для функції пошуку), а також на використання ком для розділення рядків. Фактична робота виконується у функції tr() , яка повертає перекладену версію заданого рядка. Якщо оригінальний рядок не можна знайти в масиві I18N або немає перекладу для поточної мови, оригінальний рядок буде використано без перекладу.

Перша мова, визначена в масиві I18N , має бути тією, якою написані рядки, що використовуються в ULP, і, як правило, має бути англійською, щоб зробити програму доступною для найбільшої кількості користувачів.

приклад

 string I18N [] = {
  "env"
  "dev"
  "itv"
  ,
  "I18N Demov"
  "Beispiel f?r Internationalisierungv"
  "Esempio per internazionalizzazionev"
  ,
  "Hello world!v"
  "Hallo Welt!v"
  "Ciao mondo!v"
  ,
  "+Okv"
  "+Okv"
  "+Approvazionev"
  ,
  "-Cancelv"
  "-Abbrechenv"
  "-Annullamentov"
  };
int Language = strstr ( I18N [ 0 ], language ()) / 3 ;
string tr ( string s )
{
  string t = lookup ( I18N , s , Language , 'v' );
  return t ? t : s ;
} dlgDialog ( tr ( "I18N Demo" )) { dlgHBoxLayout dlgSpacing ( 350 ); dlgLabel ( tr ( "Hello world!" )); dlgHBoxLayout { dlgPushButton ( tr ( "+Ok" )) dlgAccept (); dlgPushButton ( tr ( "-Cancel" )) dlgReject ();
    }
  };

пошук()

функція

Шукає дані в масиві рядків.

Синтаксис

 string lookup ( string array [], string key , int field_index [, char separator ]);
string lookup ( string array [], string key , string field_name [, char separator ]);

Повернення

lookup повертає значення поля, визначеного field_index або field_name . Якщо поле не існує або не знайдено відповідного ключа рядка, повертається порожній рядок.

Дивіться також fileread, strsplit

Масив, який можна використовувати з lookup(), складається з рядків тексту, кожен рядок представляє один запис даних.

Кожен запис даних містить довільну кількість полів, які розділені символами-роздільниками (за замовчуванням — , табулятор). Перше поле в записі використовується як ключ і має номер 0.

Усі записи повинні мати унікальні ключові поля, і жодне з ключових полів не може бути порожнім; інакше не визначено, який запис буде знайдено.

Якщо перший рядок у масиві містить запис «Заголовок» (тобто запис, де кожне поле описує свій вміст), використання пошуку з рядком field_name автоматично визначає індекс цього поля. Це дозволяє використовувати функцію пошуку, не знаючи точно, який індекс поля містить потрібні дані. Користувач повинен переконатися, що перший запис дійсно містить інформацію заголовка.

Якщо ключовим параметром у виклику lookup() є порожній рядок, буде використано перший рядок масиву. Це дозволяє програмі визначити, чи є запис заголовка з потрібними іменами полів.

Якщо поле містить символ роздільника, це поле має бути взято в подвійні лапки (як у "abc;def", припускаючи, що крапка з комою (';') використовується як роздільник). Те саме стосується, якщо поле містить подвійні лапки ("), у цьому випадку подвійні лапки всередині поля потрібно подвоїти (як у "abc;""def"";ghi", що буде abc;"def"; ghi).

Найкраще використовувати роздільник "табуляція" за замовчуванням, який не має цих проблем (жодне поле не може містити табулятор).

Ось приклад файлу даних (";" використано як роздільник для кращої читабельності):

 Name ; Manufacturer ; Code ; Price
7400 ; Intel ; I - 01 - 234 - 97 ; $0 . 10
68HC12 ; Motorola ; M68HC1201234 ; $3 . 50

приклад

 string OrderCodes [];
if ( fileread ( OrderCodes , "ordercodes" ) > 0 ) {
   if ( lookup ( OrderCodes , "" , "Code" , ';' )) { schematic ( SCH ) { SCH . parts ( P ) {
          string OrderCode ;
          // both following statements do exactly the same:
          OrderCode = lookup ( OrderCodes , P . device . name , "Code" , ';' );
          OrderCode = lookup ( OrderCodes , P . device . name , 2 , ';' );
          }
        }
      }
   else dlgMessageBox ( "Missing 'Code' field in file 'ordercodes'); }

палітра()

функція

Повертає інформацію про колірну палітру.

Синтаксис

 int palette ( int index [, int type ]);

Повернення

Функція палітри повертає ціле значення ARGB у формі 0xaarrggbb або тип палітри, яка наразі використовується (залежно від значення індексу).

Функція палітри повертає значення ARGB кольору з заданим індексом (який може бути в діапазоні від 0 до PALETTE_ENTRIES-1). Якщо тип не вказано (або дорівнює -1), використовуватиметься палітра, призначена поточному вікну редактора. В іншому випадку тип визначає, яку палітру кольорів використовувати (PALETTE_BLACK, PALETTE_WHITE або PALETTE_COLORED). Спеціальне значення -1 для індексу змушує функцію повертати тип палітри, яка зараз використовується у вікні редактора.

Якщо індекс або тип виходять за межі діапазону, буде надано повідомлення про помилку та ULP буде припинено.

Константи

ПАЛЕТ_ТИПИ кількість типів палітри (3)
PALETTE_BLACK палітра чорного фону (0)
ПАЛІТРА_БІЛА палітра білого фону (1)
PALETTE_COLORED палітра кольорового фону (2)
PALETTE_ENTRIES кількість кольорів на палітру (64)

спати()

функція

Спить кількість секунд.

Синтаксис

 void sleep ( int seconds );

Дивіться також time()

Функція сну затримує виконання програми ULP на кілька секунд.

sort()

функція

Сортує масив або набір масивів.

Синтаксис

 void sort ( int number , array1 [, array2 ,...]);

Функція сортування або безпосередньо сортує заданий масив1, або сортує набір масивів (починаючи з масиву2), у цьому випадку передбачається, що масив1 є масивом int, який використовуватиметься як масив покажчиків.

У будь-якому випадку числовий аргумент визначає кількість елементів у масиві.

Сортування одного масиву

Якщо функція сортування викликається з одним єдиним масивом, цей масив буде відсортовано безпосередньо, як у наступному прикладі:

 string A [];
int n = 0 ; A [ n ++] = "World" ; A [ n ++] = "Hello" ; A [ n ++] = "The truth is out there..." ; sort ( n , A );
for ( int i = 0 ; i < n ; ++ i ) printf ( A [ i ]);

Сортування набору масивів

Якщо функція сортування викликається з кількома масивами, перший масив має бути масивом типу int, тоді як усі інші масиви можуть мати будь-який тип масиву та містити дані для сортування. У наступному прикладі показано, як перший масив буде використовуватися як вказівник:

 numeric string Nets [], Parts [], Instances [], Pins [];
int n = 0 ;
int index []; schematic ( S ) { S . nets ( N ) N . pinrefs ( P ) {
    Nets [ n ] = N . name ;
    Parts [ n ] = P . part . name ;
    Instances [ n ] = P . instance . name ;
    Pins [ n ] = P . pin . name ;
    ++ n ;
    } sort ( n , index , Nets , Parts , Instances , Pins );
  for ( int i = 0 ; i < n ; ++ i ) printf ( "%-8s %-8s %-8s %-8s
" ,
             Nets [ index [ i ]], Parts [ index [ i ]],
             Instances [ index [ i ]], Pins [ index [ i ]]);
  }

Ідея цього полягає в тому, що одна мережа може мати кілька контактів, підключених до неї, і в списку мереж ви можете відсортувати назви мереж, а в одній мережі також потрібно відсортувати назви частин і так далі. Зверніть увагу на використання ключового слова numeric у масивах рядків. Це призводить до того, що рядки сортуються таким чином, що враховує числову частину в кінці рядків, що призводить до IC1, IC2,… IC9, IC10 замість алфавітного порядку IC1, IC10, IC2,… .IC9.

Під час сортування набору масивів перший (індексний) масив має мати тип int і його не потрібно ініціалізувати. Будь-який вміст, який міг мати індексний масив до виклику функції сортування, буде перезаписано отриманими значеннями індексу.

статус()

функція

Відображає повідомлення про стан у рядку стану.

Синтаксис

 void status ( string message );

Дивіться також dlgMessageBox()

Функція статусу відображає вказане повідомлення в рядку стану вікна редактора, у якому запущено ULP.

система()

функція

Виконує зовнішню програму.

Синтаксис

 int system ( string command );

Повернення

Системна функція повертає статус завершення команди. Зазвичай це 0, якщо все гаразд, і не нуль у разі помилки.

Системна функція виконує зовнішню програму, задану командним рядком, і чекає, поки програма завершиться.

Перенаправлення введення/виведення

Якщо зовнішня програма зчитує свій стандартний ввід із (або записує свій стандартний вивід) у певний файл, введення/виведення має бути перенаправлено.

У Linux і Mac OS X це робиться простим додаванням «<» або «>» до командного рядка, а потім потрібного імені файлу, як у

 system ( "program < infile > outfile" );

який запускає програму та змушує її читати з infile і записувати у outfile.

У Windows для цього потрібно явно запустити командний процесор, як у

 system ( "cmd.exe /c program < infile > outfile" );

(у системах Windows на основі DOS використовуйте command.com замість cmd.exe).

Фонове виконання

Системна функція чекає, поки задана програма завершиться. Це корисно для програм, які працюють лише кілька секунд або повністю захоплюють увагу користувача.

Якщо зовнішня програма виконується довше, і ви хочете, щоб системний виклик повернувся негайно, не чекаючи завершення програми, ви можете просто додати «&» до командного рядка в Linux і Mac OS X, як у

 system ( "program &" );

У Windows вам потрібно явно запустити командний процесор, щоб зробити це, як у

 system ( "cmd.exe /c start program" );

(у системах Windows на основі DOS використовуйте command.com замість cmd.exe).

приклад

 int result = system ( "simulate -f filename" );

Це викликало б програму моделювання, надаючи їй файл, який щойно створив ULP. Зауважте, що симуляція тут є лише прикладом, вона не є частиною пакета EAGLE!

Якщо ви хочете контролювати, які системні команди фактично виконуються, ви можете написати функцію-обгортку, яка запитуватиме у користувача підтвердження перед виконанням команди, наприклад

 int MySystem ( string command )
{
  if ( dlgMessageBox ( "!Ok to execute the following command?<p><tt>" + command + "</tt>" , "&Yes" , "&No" ) == 0 )
     return system ( command );
  return - 1 ;
}
int result = MySystem ( "simulate -f filename" );

Перетворення одиниць

функція

Перетворює внутрішні одиниці.

Синтаксис

 real u2inch ( int n ); real u2mic ( int n ); real u2mil ( int n ); real u2mm ( int n );
int inch2u ( real n );
int mic2u ( real n );
int mil2u ( real n );
int mm2u ( real n );

Повернення

u2inch повертає значення n у дюймах.

u2mic повертає значення n у мікронах (1/1000 мм).

u2mil повертає значення n у мілях (1/1000 дюйма).

u2mm повертає значення n у міліметрах.

inch2u повертає значення n (у дюймах) як внутрішні одиниці.

mic2u повертає значення n (у мікронах) як внутрішні одиниці.

mil2u повертає значення n (у мілях) як внутрішні одиниці.

mm2u повертає значення n (у міліметрах) як внутрішні одиниці.

Дивіться також UL_GRID

EAGLE зберігає всі значення координат і розмірів як int значення з роздільною здатністю 1/320000 мм (0,003125?). Наведені вище функції перетворення одиниць можна використовувати для перетворення цих внутрішніх одиниць у потрібні одиниці вимірювання та навпаки.

приклад

 board ( B ) { B . elements ( E ) { printf ( "%s at (%f, %f)
" , E . name , u2mm ( E . x ), u2mm ( E . y ));
    }
  }

Мережеві функції

Мережеві функції використовуються для доступу до віддалених сайтів в Інтернеті.

neterror()

функція

Повертає повідомлення про помилку останнього виклику мережевої функції.

Синтаксис

 string neterror ( void );

Повернення

neterror повертає текстове повідомлення з описом помилки, що сталася під час останнього виклику мережевої функції.

Якщо помилки не сталося, повертається порожній рядок.

Дивіться також netget, netpost

Функцію neterror слід викликати після того, як будь-яка інша мережева функція повернула від’ємне значення, що вказує на те, що сталася помилка. Повернене значення neterror – це текстовий рядок, який можна надати користувачеві.

Для помилок, пов’язаних із з’єднаннями SSL (HTTPS), також зверніть увагу на примітку в netget .

приклад

 string Result ;
if ( netget ( Result , "http://web.cadsoft.de/cgi-bin/http-test?see=me&hear=them" ) >= 0 ) {
   // process Result
   }
else dlgMessageBox ( neterror ());

netget()

функція

Виконує запит GET у мережі.

Синтаксис

 int netget ( dest , string url [, int timeout ]);

Повернення

netget повертає кількість об'єктів, прочитаних з мережі. Справжнє значення значення, що повертається, залежить від типу dest.

У разі помилки повертається від’ємне значення, і можна викликати neterror(), щоб відобразити користувачеві повідомлення про помилку.

Дивіться також netpost, neterror, fileread

Функція netget надсилає вказану URL-адресу в мережу та зберігає результат у змінній dest. Якщо мережева активність не відбувалася протягом секунд очікування, з’єднання буде розірвано. Тайм-аут за замовчуванням становить 20 секунд.

URL-адреса має містити протокол для використання (HTTP, HTTPS або FTP) і може містити пари параметрів ім’я=значення, як у

 http : //web.cadsoft.de/cgi-bin/http-test?see=me&hear=them ftp : //ftp.cadsoft.de/eagle/userfiles/README

Якщо для доступу до віддаленого сайту потрібні ідентифікатор користувача та пароль, їх можна вказати як

 https : //userid:password@www.site.com/...

Якщо dest є масивом символів, результат розглядатиметься як необроблені двійкові дані, а повернуте значення відображає кількість байтів, що зберігаються в масиві символів.

Якщо dest є масивом рядків, результат розглядатиметься як текстові дані (один рядок на елемент масиву), а поверненим значенням буде кількість рядків, що зберігаються в масиві рядків. Символи нового рядка буде видалено.

Якщо dest є рядком, результат буде збережено в цьому рядку, а поверненим значенням буде довжина рядка. Зауважте, що у випадку двійкових даних результат скорочується при першому входженні байта зі значенням 0x00.

Якщо вам потрібно використовувати проксі-сервер для доступу до Інтернету через HTTP або HTTPS, ви можете налаштувати це в діалоговому вікні «Налаштувати» в розділі «Довідка/Перевірити наявність оновлень» на панелі керування.

Підключення SSL

Для з’єднань SSL (запит за HTTPS) необхідні сертифікати, які можуть бути відсутніми або термін дії яких закінчився в деяких системах. Після цього з’єднання переривається з відповідним повідомленням про помилку, яке можна запитати за допомогою neterror(). За допомогою цього повідомлення про помилку можна буде встановити відсутні або оновити прострочені сертифікати та змусити з’єднання працювати таким чином. Як це зробити залежить від вашої системи (у Windows, наприклад, через панель керування/Властивості браузера тощо).

приклад

 string Result ;
if ( netget ( Result , "http://web.cadsoft.de/cgi-bin/http-test?see=me&hear=them" ) >= 0 ) {
   // process Result
   }
else dlgMessageBox ( neterror ());

netpost()

функція

Виконує запит POST у мережі.

Синтаксис

 int netpost ( dest , string url , string data [, int timeout [, string content_type ] ]);

Повернення

netpost повертає кількість об'єктів, прочитаних з мережі. Фактичне значення значення, що повертається, залежить від типу dest . У разі помилки повертається від’ємне значення, і можна викликати neterror() , щоб відобразити користувачеві повідомлення про помилку.

Дивіться також netget, neterror, fileread

Функція netpost надсилає надані дані за вказаною URL-адресою в мережі та зберігає результат у змінній dest .

Якщо мережева активність не відбувалася протягом секунд очікування, з’єднання буде розірвано. Тайм-аут за замовчуванням становить 20 секунд.

Якщо задано content_type , він замінює типовий тип вмісту "text/html; charset=utf-8". URL-адреса має містити протокол для використання (HTTP або HTTPS).

Якщо для доступу до віддаленого сайту потрібні ідентифікатор користувача та пароль, їх можна вказати як

 https : //userid:password@www.secret-site.com/...

Якщо dest є масивом символів, результат розглядатиметься як необроблені двійкові дані, а повернуте значення відображає кількість байтів, що зберігаються в масиві символів.

Якщо dest є масивом рядків, результат розглядатиметься як текстові дані (один рядок на елемент масиву), а поверненим значенням буде кількість рядків, що зберігаються в масиві рядків. Символи нового рядка буде видалено.

Якщо dest є рядком, результат буде збережено в цьому рядку, а поверненим значенням буде довжина рядка. Зауважте, що у випадку двійкових даних результат скорочується при першому входженні байта зі значенням 0x00.

Якщо вам потрібно використовувати проксі-сервер для доступу до Інтернету через HTTP або HTTPS, ви можете налаштувати це в діалоговому вікні «Налаштувати» в розділі «Довідка/Перевірити наявність оновлень» на панелі керування.

Якщо у вас виникають проблеми, пов’язані з підключенням SSL (HTTPS), зверніть увагу на примітку в netget.

приклад

 string Data = "see=me
hear=them" ;
string Result ;
if ( netpost ( Result , "http://web.cadsoft.de/cgi-bin/http-test" , Data ) >= 0 ) {
   // process Result
   }
else dlgMessageBox ( neterror ());

Функції друку

Функції друку використовуються для друку форматованих рядків.

printf()

функція

Записує відформатований вихід у файл.

Синтаксис

 int printf ( string format [, argument , ...]);

Повернення

Функція printf повертає кількість символів, записаних у файл, відкритий останнім оператором виведення. У разі помилки printf повертає -1.

Дивіться також sprintf, output, fileerror

Рядок форматування

Рядок формату визначає, як аргументи будуть перетворені, відформатовані та надруковані. Аргументів має бути рівно стільки, скільки потрібно для формату. Кількість і тип аргументів буде перевірено на відповідність формату, і будь-яка невідповідність призведе до повідомлення про помилку. Рядок формату містить два типи об’єктів: звичайні символи та специфікатори формату.

  • Звичайні символи просто дослівно копіюються на вихід
  • Специфікатори формату отримують аргументи зі списку аргументів і застосовують до них форматування

Специфікатори формату

Специфікатор формату має такий вигляд:

 % [ flags ] [ width ] [. prec ] type

Кожна специфікація формату починається символом відсотка (%). Після % йде наступне в такому порядку:

 an optional sequence of flag characters , [ flags ] an optional width specifier , [ width ] an optional precision specifier , [. prec ] the conversion type character , type

Символи типу перетворення

d десяткове ціл
о беззнаковий вісімковий внутр
u unsigned decimal int
x unsigned hexadecimal int (з a, b,…)
X unsigned hexadecimal int (з A, B,…)
f дійсне значення зі знаком виду [-]dddd.dddd
д дійсне значення зі знаком виду [-]d.dddde[?]ddd
E те саме, що e, але з E для експоненти
g дійсне значення зі знаком у формі e або f на основі заданого значення та точності
Г те саме, що g, але з E для експоненти, якщо використовується формат e
в один символ
с рядок символів
% друкується символ %

Символи прапора

Наступні символи прапорів можуть з’являтися в будь-якому порядку та в будь-якій комбінації:

"-" відформатований елемент вирівнюється за лівим краєм у межах поля; зазвичай елементи вирівнюються за правим краєм
"+" позитивний елемент зі знаком завжди починатиметься зі знака плюс (+); зазвичай тільки негативні елементи починаються зі знака
" " підписаний позитивний елемент завжди починатиметься з пробілу; якщо вказано і "+", і " ", "+" перевизначає " "

Специфікатори ширини

Специфікатор ширини встановлює мінімальну ширину поля для вихідного значення.

Ширина вказується або безпосередньо, через рядок десяткової цифри, або непрямо, через зірочку (*). Якщо ви використовуєте зірочку для специфікатора ширини, попередній аргумент (який має бути int) до того, що форматується (за допомогою цього специфікатора формату), визначає мінімальну ширину поля виводу.

Ні в якому разі відсутність або мала ширина поля не викликає його скорочення. Якщо результат перетворення ширший за ширину поля, поле просто розширюється, щоб містити результат перетворення.

п Друкується принаймні n символів. Якщо вихідне значення містить менше ніж n символів, вихід доповнюється пробілами (доповнюється праворуч, якщо встановлено позначку «-», доповнюється ліворуч в іншому випадку).
0n Друкується принаймні n символів. Якщо вихідне значення містить менше n символів, воно заповнюється зліва нулями.
* Список аргументів надає специфікатор ширини, який має передувати фактичному аргументу, який форматується.

Специфікатори точності

Специфікатор точності завжди починається з крапки (.), щоб відокремити його від будь-якого попереднього специфікатора ширини. Тоді, як і ширина, точність вказується або безпосередньо через рядок десяткової цифри, або опосередковано, через зірочку (*). Якщо ви використовуєте зірочку для специфікатора точності, попередній аргумент (який має бути int) до того, що форматується (за допомогою цього специфікатора формату), визначає точність.

немає Точність встановлена за замовчуванням.
.0 Для типів int точність встановлена за замовчуванням; для реальних типів десяткова кома не друкується.
Друкується n символів або n знаків після коми. Якщо вихідне значення містить більше ніж n символів, результат може бути скороченим або округленим (залежно від символу типу).
* Список аргументів надає специфікатор точності, який має передувати фактичному аргументу, який форматується.

Значення точності за замовчуванням

douxX 1
eEf 6
gG всі значущі цифри
в ніякого ефекту
с надрукувати весь рядок

Як специфікація точності (.n) впливає на перетворення

douxX .n вказує, що буде надруковано принаймні n символів. Якщо вхідний аргумент містить менше n цифр, вихідне значення доповнюється нулями зліва. Якщо вхідний аргумент містить більше n цифр, вихідне значення не скорочується.
eEf .n визначає, що n символів друкуються після коми, а остання надрукована цифра округлюється.
gG .n вказує, що друкується щонайбільше n значущих цифр.
в .n не впливає на результат.
с .n вказує, що друкується не більше n символів.

Двійкові нульові символи

На відміну від sprintf, функція printf може друкувати двійкові нульові символи (0x00).

 char c = 0x00 ; printf ( "%c" , c );

приклад

 int i = 42 ; real r = 3.14 ;
char c = 'A' ;
string s = "Hello" ; printf ( "Integer: %8d
" , i ); printf ( "Hex: %8X
" , i ); printf ( "Real: %8f
" , r ); printf ( "Char: %-8c
" , c ); printf ( "String: %-8s
" , s );

sprintf()

функція

Записує відформатований вихід у рядок.

Синтаксис

 int sprintf ( string result , string format [, argument , ...]);

Повернення

Функція sprintf повертає кількість символів, записаних у рядку результату. У разі помилки sprintf повертає -1.

Дивіться також printf

Рядок форматування

Дивіться printf .

Двійкові нульові символи

Зверніть увагу, що sprintf не може повертати рядки з вбудованими двійковими нульовими символами (0x00). Якщо отриманий рядок містить двійковий нульовий символ, будь-які символи після цього нульового символу буде видалено. Використовуйте printf, якщо вам потрібно вивести двійкові дані.

приклад

 string result ;
int number = 42 ; sprintf ( result , "The number is %d" , number );

Рядкові функції

Рядкові функції використовуються для роботи з рядками символів.

Доступні такі рядкові функції:

 strchr () strjoin () strlen () strlwr () strrchr () strrstr () strsplit () strstr () strsub () strtod () strtol () strupr () strxstr ()

strchr()

функція

Сканує рядок на предмет першого входження даного символу.

Синтаксис

 int strchr ( string s , char c [, int index ]);

Повернення

Функція strchr повертає ціле зміщення символу в рядку або -1, якщо символ не зустрічається в рядку.

Дивіться також strrchr, strstr

Якщо вказано індекс , пошук починається з цієї позиції. Від’ємні значення відраховуються з кінця рядка.

приклад

 string s = "This is a string" ;
char c = 'a' ;
int pos = strchr ( s , c );
if ( pos >= 0 ) printf ( "The character %c is at position %d
" , c , pos );
else printf ( "The character was not found
" );

strjoin()

функція

Об’єднує рядковий масив, щоб сформувати один рядок.

Синтаксис

 string strjoin ( string array [], char separator );

Повернення

Функція strjoin повертає об’єднані записи масиву.

Дивіться також strsplit, lookup, fileread

strjoin об’єднує всі записи в масиві, розділених заданим роздільником, і повертає результуючий рядок.

Якщо роздільником є символ нового рядка ('
'), результуючий рядок завершуватиметься символом нового рядка. Це робиться для отримання текстового файлу, який складається з N рядків (кожен із яких закінчується символом нового рядка), який зчитується за допомогою функції fileread() і розбивається на масив із N рядків, які приєднуються до вихідного рядка під час читання. з файлу.

приклад

 string a [] = { "Field 1" , "Field 2" , "Field 3" };
string s = strjoin ( a , ':' );

strlen()

функція

Обчислює довжину рядка.

Синтаксис

 int strlen ( string s );

Повернення

Функція strlen повертає кількість символів у рядку.

приклад

 string s = "This is a string" ;
int l = strlen ( s ); printf ( "The string is %d characters long
" , l );

strlwr()

функція

Перетворює великі літери в рядку на малі.

Синтаксис

 string strlwr ( string s );

Повернення

Функція strlwr повертає змінений рядок. Оригінальний рядок (заданий як параметр) не змінюється.

Дивіться також strupr, tolower

приклад

 string s = "This Is A String" ;
string r = strlwr ( s ); printf ( "Prior to strlwr: %s - after strlwr: %s
" , s , r );

strrchr()

функція

Сканує рядок на наявність останнього входження заданого символу.

Синтаксис

 int strrchr ( string s , char c [, int index ]);

Повернення

Функція strrchr повертає ціле зміщення символу в рядку або -1, якщо символ не зустрічається в рядку.

Дивіться також strchr, strrstr

Якщо вказано індекс , пошук починається з цієї позиції. Від’ємні значення відраховуються з кінця рядка.

приклад

 string s = "This is a string" ;
char c = 'a' ;
int pos = strrchr ( s , c );
if ( pos >= 0 ) printf ( "The character %c is at position %d
" , c , pos );
else printf ( "The character was not found
" );

strrstr()

функція

Сканує рядок на предмет останнього входження заданого підрядка.

Синтаксис

 int strrstr ( string s1 , string s2 [, int index ]);

Повернення

Функція strrstr повертає ціле зміщення першого символу s2 у s1 або -1, якщо підрядок не зустрічається в рядку.

Дивіться також strstr, strrchr

Якщо вказано індекс, пошук починається з цієї позиції. Від’ємні значення відраховуються з кінця рядка.

приклад

 string s1 = "This is a string" , s2 = "is a" ;
int pos = strrstr ( s1 , s2 );
if ( pos >= 0 ) printf ( "The substring starts at %d
" , pos );
else printf ( "The substring was not found
" );

strsplit()

функція

Розділяє рядок на окремі поля.

Синтаксис

int strsplit(рядок &масив[], рядок s, роздільник символів);

Повернення

Функція strsplit повертає кількість записів, скопійованих у масив.

Дивіться також strjoin, lookup, fileread

strsplit розділяє рядок s за вказаним роздільником і зберігає отримані поля в масиві.

Якщо роздільником є символ нового рядка ('
'), останнє поле буде мовчки видалено, якщо воно порожнє. Це робиться для того, щоб мати текстовий файл, який складається з N рядків (кожен із яких закінчується символом нового рядка) і зчитується функцією fileread(), щоб розділити його на масив із N рядків. З будь-яким іншим роздільником порожнє поле в кінці рядка зараховуватиметься, тому "a:b:c:" призведе до 4 полів, останнє з яких буде порожнім.

приклад

 string a [];
int n = strsplit ( a , "Field 1:Field 2:Field 3" , ':' );

strstr()

функція

Сканує рядок на предмет першого входження заданого підрядка.

Синтаксис

 int strstr ( string s1 , string s2 [, int index ]);

Повернення

Функція strstr повертає ціле зміщення першого символу s2 у s1 або -1, якщо підрядок не зустрічається в рядку.

Дивіться також strrstr, strchr, strxstr

Якщо вказано індекс , пошук починається з цієї позиції. Від’ємні значення відраховуються з кінця рядка.

приклад

 string s1 = "This is a string" , s2 = "is a" ;
int pos = strstr ( s1 , s2 );
if ( pos >= 0 ) printf ( "The substring starts at %d
" , pos );
else printf ( "The substring was not found
" );

strsub()

функція

Витягує підрядок із рядка.

Синтаксис

string strsub(string s, int start[, int length]);

Повернення

Функція strsub повертає підрядок, позначений значенням початку та довжини . Значення довжини має бути додатним, інакше буде повернено порожній рядок. Якщо довжину опущено, повертається решта рядка (починаючи з start ).

Якщо початок вказує на позицію за межами рядка, повертається порожній рядок.

приклад

 string s = "This is a string" ;
string t = strsub ( s , 4 , 7 ); printf ( "The extracted substring is: %s
" , t );

strtod()

функція

Перетворює рядок на дійсне значення.

Синтаксис

 real strtod ( string s );

Повернення

Функція strtod повертає числове представлення заданого рядка як дійсне значення. Перетворення закінчується на першому символі, який не вписується у формат реальної константи. У разі виникнення помилки під час перетворення рядка буде повернено 0.0.

Дивіться також strtol

приклад

 string s = "3.1415" ; real r = strtod ( s ); printf ( "The value is %f
" , r );

strtol()

функція

Перетворює рядок на ціле число.

Синтаксис

 int strtol ( string s );

Повернення

Функція strtol повертає числове представлення заданого рядка як значення int. Перетворення завершується на першому символі, який не вписується у формат цілочисельної константи. Якщо під час перетворення рядка станеться помилка, буде повернено 0.

Дивіться також strtod

приклад

 string s = "1234" ;
int i = strtol ( s ); printf ( "The value is %d
" , i );

strupr()

функція

Перетворює малі літери в рядку на великі.

Синтаксис

 string strupr ( string s );

Повернення

Функція strupr повертає змінений рядок. Оригінальний рядок (заданий як параметр) не змінюється.

Дивіться також strlwr, toupper

приклад

 string s = "This Is A String" ;
string r = strupr ( s ); printf ( "Prior to strupr: %s - after strupr: %s
" , s , r );

strxstr()

функція

Сканує рядок на предмет першого входження заданого регулярного виразу.

Синтаксис

 int strxstr ( string s1 , string s2 [, int index [, int & length ]]);

Повернення

Функція strxstr повертає ціле зміщення підрядка в s1, який відповідає регулярному виразу в s2, або -1, якщо регулярний вираз не збігається в рядку.

Дивіться також strstr, strchr, strrstr

Якщо вказано індекс , пошук починається з цієї позиції. Від’ємні значення відраховуються з кінця рядка.

Якщо вказано довжину , у цій змінній повертається фактична довжина відповідного підрядка.

Регулярні вирази дозволяють знаходити шаблон у текстовому рядку. Наприклад, регулярний вираз "i.*a" знайде послідовність символів, яка починається з "i", за якою слідує будь-який символ ('.') будь-яку кількість разів ('*') і закінчується ' a'. Воно збігатиметься з "is a", а також "is this a" чи "ia". Докладні відомості про регулярні вирази можна знайти, наприклад, у книзі «Опанування регулярних виразів» Джеффрі Фрідла.

приклад

 string s1 = "This is a string" , s2 = "i.*a" ;
int len = 0 ;
int pos = strxstr ( s1 , s2 , 0 , len );
if ( pos >= 0 ) printf ( "The substring starts at %d and is %d charcaters long
" , pos , len );
else printf ( "The substring was not found
" );

Функції URN

Функції URN використовуються для обробки URN.

urnbase()

функція

Витягує базовий URN із рядка URN.

Синтаксис

 string urnbase ( string urn );

Повернення

Функція urnbase повертає базовий URN наданого URN, тобто URN без версії в кінці або /. Наприклад, основний URN для "urn:adsk.eagle:footprint:123/4" є "urn:adsk.eagle:footprint:123". Якщо версія відсутня, буде повернено вхідний рядок.

приклад

 string urn = "urn:adsk.eagle:footprint:123/4" ;
string base = urnbase ( urn ); printf ( "The base URN is: %s
" , base );

urnversion()

функція

Витягує версію з рядка URN.

Синтаксис

 int urnversion ( string urn );

Повернення

Функція urnversion повертає версію наданого URN, тобто номер після /. Якщо версія відсутня, повертається -1.

приклад

 string urn = "urn:adsk.eagle:footprint:123/4" ;
int version = urnversion ( urn ); printf ( "The URN version is: %d
" , version );

Функції часу

Функції часу використовуються для отримання та обробки інформації про час і дату.

Доступні такі функції часу:

 sleep () t2day () t2dayofweek () t2hour () t2minute () t2month () t2second () t2string () t2year () time () timems ()

час()

функція

Отримує поточний системний час.

Синтаксис

 int time ( void );

Повернення

Функція часу повертає поточний системний час як кількість секунд, що минули з дати, що залежить від системи.

Дивіться також Перетворення часу, filetime, timems()

приклад

 int CurrentTime = time ();

timems()

функція

Отримує кількість мілісекунд від початку ULP.

Синтаксис

 int timems ( void );

Повернення

Функція timems повертає кількість мілісекунд від початку ULP. Через 86400000 мілісекунд (тобто кожні 24 години) значення знову починається з 0.

Дивіться також час

приклад

 int elapsed = timems ();

Перетворення часу

функція

Перетворення значення часу на день, місяць, рік тощо.

Синтаксис

 int t2day ( int t );
int t2dayofweek ( int t );
int t2hour ( int t );
int t2minute ( int t );
int t2month ( int t );
int t2second ( int t );
int t2year ( int t );

string t2string ( int t [, string format ]);

Повернення

 * t2day * returns the day of the month ( 1. . 31 )
* t2dayofweek * returns the day of the week ( 0 = sunday .. 6 )
* t2hour * returns the hour ( 0. . 23 )
* t2minute * returns the minute ( 0. . 59 )
* t2month * returns the month ( 0. . 11 )
* t2second * returns the second ( 0. . 59 )
* t2year * returns the year ( including century !)
* t2string * returns a formatted string containing date and time

Дивіться також час

Функція t2string без додаткового параметра формату перетворює вказаний час t у рядок країни за місцевим часом.

Якщо t2string викликається з рядком формату, цей формат використовується для визначення того, як має виглядати результат.

У рядку формату можна використовувати такі вирази:

d день у вигляді числа без нуля на початку (від 1 до 31)
дд день у вигляді числа з нулем на початку (від 01 до 31)
ддд скорочена локалізована назва дня (наприклад, "Пн" на "Сон")
дддд довга локалізована назва дня (наприклад, "понеділок" на "неділя")
М місяць як число без нуля на початку (1-12)
ММ місяць у вигляді числа з нулем на початку (01-12)
МММ скорочена локалізована назва місяця (наприклад, «січень» до «грудень»)
ММММ довга локалізована назва місяця (наприклад, від "січень" до "грудень")
рр рік як двозначне число (00-99)
рррр рік у вигляді чотиризначного числа
ч година без початкового нуля (від 0 до 23 або від 1 до 12, якщо відображається AM/PM)
чч година з нулем на початку (від 00 до 23 або від 01 до 12, якщо відображається AM/PM)
м хвилина без початкового нуля (від 0 до 59)
мм хвилина з нулем на початку (від 00 до 59)
с другий без початкового нуля (від 0 до 59)
ss другий з нулем на початку (від 00 до 59)
з мілісекунди без початкових нулів (завжди 0, оскільки даний час має роздільну здатність лише одну секунду)
ззз мілісекунди з нулями на початку (завжди 000, оскільки заданий час має роздільність лише одну секунду)
AP використовуйте дисплей AM/PM (AP буде замінено на "AM" або "PM")
ап використовуйте дисплей am/pm (ap буде замінено на "am" або "pm")
U відображати заданий час як UTC (має бути першим символом; за замовчуванням це місцевий час

Усі інші символи будуть скопійовані «як є». Будь-яка послідовність символів, укладена в одинарні лапки, розглядатиметься як текст і не використовуватиметься як вираз. Дві послідовні одинарні лапки ('') замінюються одинарними лапками у вихідних даних.

приклад

 int t = time (); printf ( "It is now %02d:%02d:%02d
" , t2hour ( t ), t2minute ( t ), t2second ( t )); printf ( "ISO time is %s
" , t2string ( t , "Uyyyy-MM-dd hh:mm:ss" ));

Функції об'єкта

Функції об’єктів використовуються для доступу до загальної інформації про об’єкти.

Доступні наступні функції об’єкта:

 clrgroup () ingroup () setgroup () setvariant () variant ()

clrgroup()

функція

Очищає прапори групи об’єкта.

Синтаксис

 void clrgroup ( object );

Дивіться також ingroup(), setgroup(), команду GROUP

Функція clrgroup() очищає прапори групи даного об’єкта, щоб він більше не був частиною попередньо визначеної групи.

При застосуванні до об’єкта, який містить інші об’єкти (наприклад, UL_BOARD або UL_NET), прапори групи всіх об’єктів, що містяться, очищаються рекурсивно, але з аналогічними обмеженнями, як для setgroup() .

приклад

 board ( B ) { B . elements ( E ) clrgroup ( E );
  }

ingroup()

функція

Перевіряє, чи входить об'єкт до групи.

Синтаксис

 int ingroup ( object );

Повернення

Функція ingroup повертає ненульове значення, якщо даний об’єкт входить до групи.

Дивіться також clrgroup(), setgroup(), команду GROUP

Якщо групу визначено в редакторі, можна використати функцію ingroup() , щоб перевірити, чи є певний об’єкт частиною групи.

Об’єкти з єдиною координатою, які можна окремо вибрати на поточному малюнку (наприклад, UL_TEXT, UL_VIA, UL_CIRCLE тощо), повертають ненульове значення під час виклику ingroup(), якщо ця координата входить до визначеної групи.

UL_WIRE повертає 0, 1, 2 або 3, залежно від того, чи немає жодної, першої, другої чи обох кінцевих точок у групі.

UL_RECTANGLE і UL_FRAME повертає ненульове значення, якщо один або більше його кутів є в групі. Значення має біт 0, встановлений для верхнього правого кута, біт 1 для верхнього лівого, біт 2 для нижнього лівого та біт 3 для нижнього правого кута.

Об’єкти вищого рангу, які не мають координат (UL_NET, UL_SEGMENT, UL_SIGNAL, UL_POLYGON) або фактично недоступні як об’єкти малювання (UL_SHEET, UL_DEVICESET, UL_SYMBOL, UL_FOOTPRINT), повертають ненульове значення, якщо один або кілька об’єктів у них знаходяться в групі. Докладніше про ієрархії об’єктів див. у розділі Типи об’єктів.

UL_CONTACTREF і UL_PINREF, хоча й не мають власних координат, повертають ненульове значення, якщо UL_CONTACT або UL_PIN, на який посилається, відповідно, є в межах групи. Для інших об’єктів, які не можна вибрати, наприклад UL_GRID, UL_VARIANT або проводів об’єкта UL_TEXT або UL_FRAME, поведінка ingroup() не визначена, тому її не слід використовувати.

Ідентифікація об’єкта контекстного меню

Якщо ULP запускається з контекстного меню, до вибраного об’єкта можна отримати доступ за допомогою групового механізму. З виділеного об'єкта створюється одноелементна група. Тому його можна ідентифікувати за допомогою ingroup() . (див. також SET і RUN).

приклад

 output ( "group.txt" ) { board ( B ) { B . elements ( E ) {
      if ( ingroup ( E )) printf ( "Element %s is in the group
" , E . name );
      }
    }
  }

setgroup()

функція

Встановлює прапори групи об’єкта.

Синтаксис

 void setgroup ( object [, int flags ]);

Дивіться також команду clrgroup(), ingroup(), GROUP

Функція setgroup() встановлює прапори групи даного об’єкта, щоб він став частиною групи.

Якщо прапорці не задані, об’єкт додається до групи в цілому (тобто всі його точки вибору, якщо їх більше однієї).

Якщо flags має ненульове значення, встановлюються лише групові прапори заданих точок об'єкта. Для UL_WIRE це означає, що «1» встановлює прапор групи для першої точки, «2» — для другої точки, а «3» встановлює обидва. Будь-які раніше встановлені прапорці групи залишаються незмінними після виклику setgroup() .

При застосуванні до об’єкта, який містить інші об’єкти (наприклад, UL_BOARD або UL_NET), прапори групи всіх об’єктів, що містяться, встановлюються рекурсивно з такими обмеженнями:

Це не стосується UL_LIBRARY та UL_SCHEMATIC. Підпорядковані об’єкти, які не можна вибрати або окремо вибрати, не позначаються (наприклад, об’єкти UL_GRID або UL_VARIANT або дроти об’єктів UL_TEXT або UL_FRAME).

Докладніше про ієрархії об’єктів див. у розділі Типи об’єктів.

приклад

 board ( B ) { B . elements ( E ) setgroup ( E );
  }

setvariant()

функція

Встановлює поточний варіант складання.

Синтаксис

 int setvariant ( string name );

Див. також variant(), UL_VARIANTDEF, команда VARIANT

Функція setvariant() встановлює поточний варіант збірки на той, який задано ім’ям. Це можна використати, щоб прокрутити всі частини та «побачити» їхні дані точно так, як визначено в заданому варіанті.

ім'я має посилатися на дійсний варіант складання, який міститься в поточному кресленні.

Ця функція повертає ненульове значення, якщо даний варіант збірки існує, і нульове значення в іншому випадку.

Варіант збірки, встановлений викликом setvariant(), активний, лише доки не повернеться програма мови користувача. Після цього варіант на жеребкуванні буде таким же, як і до старту УЛП.

Встановлення варіанту монтажу на платі можливе лише за умови завантаження узгодженої принципової схеми.

приклад

 if ( setvariant ( "My variant" )) {
   // do something ...
else
   // error: unknown variant

варіант()

функція

Запит поточного варіанту складання.

Синтаксис

 string variant ( void );

Див. також setvariant(), UL_VARIANTDEF, команда VARIANT

Функція variant() повертає ім’я поточного варіанту складання. Якщо наразі не вибрано жодного варіанта, повертається порожній рядок ('').

приклад

 string CurrentVariant = variant ();

Функції XML

Функції XML використовуються для обробки даних XML (розширювана мова розмітки). Доступні такі функції XML:

 xmlattribute () xmlattributes () xmlelement () xmlelements () xmltags () xmltext ()

xmlattribute(), xmlattributes()

функція

Витягніть атрибути тегу XML.

Синтаксис

 string xmlattribute ( string xml , string tag , string attribute );
int xmlattributes ( string & array [], string xml , string tag );

Дивіться також xmlelement(), xmltags(), xmltext()

Функція xmlattribute повертає значення заданого атрибута з заданого тегу в заданому коді xml. Якщо атрибут з’являється більше одного разу в одному тегу, береться значення його останнього входження.

Функція xmlattributes зберігає імена всіх атрибутів із заданого тегу в заданому коді xml у масиві та повертає кількість знайдених атрибутів. Порядок не обов’язково такий самий, як у заданому коді xml. Якщо атрибут з’являється більше одного разу в одному тегу, його ім’я з’являється в масиві лише один раз.

Тег надається у вигляді шляху.

Якщо даний код xml містить помилку, результат виконання будь-якої функції XML є порожнім, а користувачеві відображається діалогове вікно з попередженням, яке містить інформацію про те, де в коді ULP і XML сталася помилка. Зауважте, що номер рядка та стовпця в коді XML відноситься до фактичного рядка, наданого цій функції як параметр xml.

приклад

 // String XML contains the following data:
//<root>
// <body abc="def" xyz="123">
// ...
// </body>
//</root>

string s [];
int n = xmlattributes ( s , XML , "root/body" );

// Result: { "abc", "xyz" }

string s = xmlattribute ( XML , "root/body" , "xyz" );

// Result: "123"

xmlelement(), xmlelements()

функція

Витягти елементи з коду XML.

Синтаксис

 string xmlelement ( string xml , string tag );
int xmlelements ( string & array [], string xml , string tag );

Дивіться також xmltags(), xmlattribute(), xmltext()

Функція xmlelement повертає повний елемент XML заданого тегу в заданому коді xml. Результат все ще містить зовнішній XML-тег елемента, тому його можна використовувати для подальшої обробки іншими функціями XML. Будь-які пробіли в частинах простого тексту елемента зберігаються. Однак загальне форматування тегів XML в елементі та порядок атрибутів елемента можуть відрізнятися від оригінального коду xml. Якщо в xml є більше одного входження тегу, буде повернено перше. Використовуйте xmlelements , якщо хочете отримати всі входження.

Функція xmlelements працює так само, як xmlelement, але повертає всі входження елементів із заданим тегом. Повернене значення — це кількість елементів, що зберігаються в масиві.

Тег надається у вигляді шляху.

Якщо даний код xml містить помилку, результат виконання будь-якої функції XML є порожнім, а користувачеві відображається діалогове вікно з попередженням, яке містить інформацію про те, де в коді ULP і XML сталася помилка. Зауважте, що номер рядка та стовпця в коді XML відноситься до фактичного рядка, наданого цій функції як параметр xml.

приклад

 // String XML contains the following data:
//<root>
// <body>
// <contents>
// <string>Some text 1</string>
// <any>anything 1</any>
// </contents>
// <contents>
// <string>Some text 2</string>
// <any>anything 2</any>
// </contents>
// <appendix>
// <string>Some text 3</string>
// </appendix>
// </body>
//</root>
//

string s = xmlelement ( XML , "root/body/appendix" );

// Result: " <appendix>
 <string>Some text 3</string>
 </appendix>
"

string s [];
int n = xmlelements ( s , XML , "root/body/contents" );

// Result: { " <contents>
 <string>Some text 1</string>
 <any>anything 1</any>
 </contents>
",
// " <contents>
 <string>Some text 2</string>
 <any>anything 2</any>
 </contents>
"
// }

xmltags()

функція

Витягніть список імен тегів у XML-код.

Синтаксис

 int xmltags ( string & array [], string xml , string tag );

Дивіться також xmlelement(), xmlattribute(), xmltext()

Функція xmltags повертає імена всіх тегів на верхньому рівні даного тегу в заданому коді xml. Поверненим значенням є кількість імен тегів, що зберігаються в масиві.

Ім’я кожного тегу повертається лише один раз, навіть якщо воно з’являється кілька разів у коді XML.

Тег надається у вигляді шляху.

Якщо даний код xml містить помилку, результат виконання будь-якої функції XML є порожнім, а користувачеві відображається діалогове вікно з попередженням, яке містить інформацію про те, де в коді ULP і XML сталася помилка. Зауважте, що номер рядка та стовпця в коді XML відноситься до фактичного рядка, наданого цій функції як параметр xml.

приклад

 //String XML contains the following data:
//<root>
// <body>
// <contents>
// <string>Some text 1</string>
// <any>anything 1</any>
// </contents>
// <contents>
// <string>Some text 2</string>
// <any>anything 2</any>
// </contents>
// <appendix>
// <string>Some text 3</string>
// </appendix>
// </body>
//</root>
//

string s [];
int n = xmltags ( s , XML , "root/body" );

// Result: { "contents", "appendix" }

int n = xmltags ( s , XML , "" );        

// Result: "root"

xmltext()

функція

Витягти текстові дані елемента XML.

Синтаксис

 string xmltext ( string xml , string tag );

Дивіться також xmlelement(), xmlattribute(), xmltags()

Функція xmltext повертає текстові дані з заданого тегу в заданому коді xml.

Будь-які теги в тексті видаляються, пробіли (включаючи символи нового рядка) зберігаються.

Тег надається у вигляді шляху.

Якщо даний код xml містить помилку, результат виконання будь-якої функції XML є порожнім, а користувачеві відображається діалогове вікно з попередженням, яке містить інформацію про те, де в коді ULP і XML сталася помилка. Зауважте, що номер рядка та стовпця в коді XML відноситься до фактичного рядка, наданого цій функції як параметр xml.

приклад

 // String XML contains the following data:
//<root>
// <body>
// Some <b>text</b>.
// </body>
//</root>
//

string s = xmltext ( XML , "root/body" );

// Result: "
 Some text.
 "

Вбудовані заяви

Вбудовані оператори зазвичай використовуються для відкриття певного контексту, у якому можна отримати доступ до структур даних або файлів. Загальний синтаксис вбудованого оператора такий

 name ( parameters ) statement

де name — це ім’я вбудованого оператора, parameters означає один або кілька параметрів, а statement — це код, який буде виконано в контексті, відкритому вбудованим оператором.

Зауважте, що оператор може бути складеним оператором, як у

 board ( B ) { B . elements ( E ) printf ( "Element: %s
" , E . name ); B . Signals ( S ) printf ( "Signal: %s
" , S . name );
  }

Доступні наступні вбудовані оператори:

  • дошка()
  • devicesset()
  • бібліотека()
  • модуль()
  • вихід()
  • footprint() (новий з EAGLE 9.1)
  • схематичний()
  • лист()
  • символ()

дошка()

функція

Відкриває контекст дошки.

Синтаксис

 board ( identifier ) statement

Див. також схему, бібліотеку

Оператор дошки відкриває контекст дошки, якщо поточне вікно редактора містить малюнок дошки. Створюється змінна типу UL_BOARD, якій надається ім’я, указане ідентифікатором.

Після успішного відкриття контексту дошки та створення змінної дошки оператор виконується. У межах оператора можна отримати доступ до змінної плати, щоб отримати додаткові дані з плати.

Якщо поточне вікно редактора не містить креслення дошки, видається повідомлення про помилку, і ULP припиняється.

Перевірте, чи є дошка

Використовуючи оператор дошки без аргументу, ви можете перевірити, чи поточне вікно редактора містить малюнок дошки. У цьому випадку дошка поводиться як ціла константа, повертаючи 1, якщо в поточному вікні редактора є малюнок дошки, і 0 в іншому випадку.

Доступ до плати зі схеми

Якщо поточне вікно редактора містить схематичний малюнок, ви все ще можете отримати доступ до дошки цієї схеми, поставивши перед оператором дошки префікс project, як у

 project . board ( B ) { ... }

Це відкриє контекст дошки незалежно від того, чи містить поточне вікно редактора дошку чи схематичний малюнок. Однак десь на робочому столі повинно бути вікно редактора, яке містить цю дошку!

приклад

 if ( board ) board ( B ) { B . elements ( E ) printf ( "Element: %s
" , E . name );
     }

devicesset()

функція

Відкриває контекст набору пристроїв.

Синтаксис

 deviceset ( identifier ) statement

Дивіться також слід, символ, бібліотека

Оператор deviceset відкриває контекст набору пристроїв, якщо поточне вікно редактора містить малюнок пристрою. Створюється змінна типу UL_DEVICESET, якій надається ім’я, указане ідентифікатором.

Після успішного відкриття контексту набору пристроїв і створення змінної набору пристроїв оператор виконується. У межах оператора можна отримати доступ до змінної набору пристроїв, щоб отримати додаткові дані з набору пристроїв.

Якщо поточне вікно редактора не містить креслення пристрою, видається повідомлення про помилку та ULP припиняється.

Перевірте, чи є набір пристрою

Використовуючи оператор devicesset без аргументу, ви можете перевірити, чи поточне вікно редактора містить малюнок пристрою. У цьому випадку набір пристроїв поводиться як ціла константа, повертаючи 1, якщо в поточному вікні редактора є малюнок пристрою, і 0 в іншому випадку.

приклад

 if ( deviceset ) deviceset ( D ) { D . gates ( G ) printf ( "Gate: %s
" , G . name );
     }

бібліотека()

функція

Відкриває контекст бібліотеки.

Синтаксис

 library ( identifier ) statement

Дивіться також плата, схема, набір пристроїв, слід, символ

Оператор бібліотеки відкриває контекст бібліотеки, якщо поточне вікно редактора містить малюнок бібліотеки. Створюється змінна типу UL_LIBRARY, якій присвоюється ім’я, указане ідентифікатором.

Після успішного відкриття контексту бібліотеки та створення змінної бібліотеки оператор виконується. У межах оператора можна отримати доступ до змінної бібліотеки, щоб отримати додаткові дані з бібліотеки.

Якщо поточне вікно редактора не містить креслення бібліотеки, видається повідомлення про помилку та ULP припиняється.

Перевірте, чи є бібліотека

Використовуючи оператор бібліотеки без аргументу, ви можете перевірити, чи поточне вікно редактора містить малюнок бібліотеки. У цьому випадку бібліотека поводиться як ціла константа, повертаючи 1, якщо в поточному вікні редактора є малюнок бібліотеки, і 0 в іншому випадку.

приклад

 if ( library ) library ( L ) { L . devices ( D ) printf ( "Device: %s
" , D . name );
     }

модуль()

функція

Відкриває контекст модуля.

Синтаксис

 module ( identifier ) statement

Дивіться також дошка, бібліотека, схема, аркуш

Інструкція module відкриває контекст модуля, якщо поточне #вікно редактора містить креслення модуля. Оператор module відкриває контекст модуля, якщо у вікні редактора наразі редагується креслення модуля. Створюється змінна типу UL_MODULE, якій надається ім’я, указане ідентифікатором.

Після успішного відкриття контексту модуля та створення змінної модуля оператор виконується. У межах оператора можна отримати доступ до змінної модуля, щоб отримати додаткові дані з модуля.

Якщо поточне вікно редактора не містить креслення модуля, видається повідомлення про помилку та ULP припиняється.# Якщо у вікні редактора наразі креслення модуля не редагується, видається повідомлення про помилку та ULP припиняється.

Перевірте, чи є модуль

Використовуючи оператор module без аргументу, ви можете перевірити, чи поточне вікно редактора містить креслення модуля. У цьому випадку module поводиться як ціла константа, повертаючи 1, якщо в поточному вікні редактора є малюнок модуля, і 0 в іншому випадку.

приклад

 if ( module )
   module ( M ) { printf ( "Module: %s
" , M . name );
     }

вихід()

функція

Відкриває вихідний файл для наступних викликів printf().

Синтаксис

 output ( string filename [, string mode ]) statement

Дивіться також printf, fileerror

Інструкція виводу відкриває файл із заданим іменем і режимом для виведення через наступні виклики printf(). Якщо файл було успішно відкрито, оператор виконується, після чого файл закривається.

Якщо файл неможливо відкрити, видається повідомлення про помилку, і виконання ULP припиняється.

За замовчуванням вихідний файл записується в каталог проекту.

Режими файлів

Параметр режиму визначає спосіб відкриття вихідного файлу. Якщо параметр режиму не вказано, за замовчуванням буде "wt".

 a append to an existing file , or create a new file if it does not exist w create a new file ( overwriting an existing file ) t open file in text mode b open file in binary mode D delete this file when ending the EAGLE session ( only works together with w ) F force using this file name ( normally *. brd , *. sch and *. lbr are rejected )

Символи режиму можуть з'являтися в будь-якому порядку та комбінації. Однак лише останнє з a і w або t і b, відповідно, є значущим. Наприклад, режим "abtw" відкриє файл для текстового запису, який буде таким самим, як "wt".

Вкладені оператори виведення

оператори виводу можуть бути вкладеними, доки доступно достатньо дескрипторів файлів і за умови, що жодні активні оператори виводу не звертаються до одного файлу.

приклад

 void PrintText ( string s )
{ printf ( "This also goes into the file: %s
" , s );
} output ( "file.txt" , "wt" ) { printf ( "Directly printed
" );
  PrintText ( "via function call" );
  }

footprint(), нове з EAGLE 9.1

функція

Відкриває контекст сліду.

Синтаксис

 footprint ( identifier ) statement ( new as of EAGLE 9.1 )

Дивіться також бібліотека, набір пристроїв, символ

Інструкція footprint відкриває контекст пакета, якщо поточне вікно редактора містить малюнок пакета. Створюється змінна типу UL_FOOTPRINT, якій надається ім’я, указане ідентифікатором.

Примітка: інструкція сліду є новою в EAGLE 9.1. Для зворотної сумісності з попередніми версіями EAGLE пакет доступний як псевдонім.

Після успішного відкриття контексту сліду та створення змінної сліду оператор виконується. У межах оператора можна отримати доступ до змінної сліду для отримання додаткових даних із сліду.

Якщо поточне вікно редактора не містить креслення контуру, видається повідомлення про помилку та ULP припиняється.

Перевірте, чи є слід

Використовуючи інструкцію footprint без аргументу, ви можете перевірити, чи поточне вікно редактора містить малюнок footprint. У цьому випадку футпринт поводиться як ціла константа, повертаючи 1, якщо у поточному вікні редактора є малюнок футпринту, і 0 в іншому випадку.

приклад

 if ( footprint ) footprint ( F ) { F . contacts ( C ) printf ( "Contact: %s
" , C . name );
     }

схематичний()

функція

Відкриває схематичний контекст.

Синтаксис

 schematic ( identifier ) statement

Дивіться також дошка, бібліотека, модуль, аркуш

Схематичний оператор відкриває контекст схеми, якщо поточне вікно редактора містить схематичний малюнок. Створюється змінна типу UL_SCHEMATIC, якій надається ім’я, указане ідентифікатором.

Після успішного відкриття контексту схеми та створення змінної схеми оператор виконується. У межах оператора можна отримати доступ до змінної схеми, щоб отримати додаткові дані зі схеми.

Якщо поточне вікно редактора не містить схематичного малюнка, видається повідомлення про помилку, і ULP припиняється.

Перевірте, чи є схема

Використовуючи оператор схеми без аргументу, ви можете перевірити, чи містить поточне вікно редактора схематичний малюнок. У цьому випадку schematic поводиться як ціла константа, повертаючи 1, якщо в поточному вікні редактора є схематичний малюнок, і 0 в іншому випадку.

Доступ до схеми з дошки

Якщо поточне вікно редактора містить креслення дошки, ви все одно можете отримати доступ до схеми цієї дошки, поставивши перед схемним оператором префікс project, як у

 project . schematic ( S ) { ... }

Це відкриє контекст схеми незалежно від того, чи містить поточне вікно редактора схему чи креслення дошки. Однак десь на робочому столі повинно бути вікно редактора, яке містить цю схему!

Доступ до поточного аркуша

Використовуйте оператор sheet для прямого доступу до поточного завантаженого аркуша.

Доступ до поточного модуля

Використовуйте оператор module для прямого доступу до редагованого модуля.

приклад

 if ( schematic ) schematic ( S ) { S . parts ( P ) printf ( "Part: %s
" , P . name );
     }

лист()

функція

Відкриває контекст аркуша.

Синтаксис

 sheet ( identifier ) statement

Дивіться також схему

Оператор sheet відкриває контекст аркуша, якщо поточне вікно редактора містить малюнок аркуша. Створюється змінна типу UL_SHEET, якій присвоюється ім’я, указане ідентифікатором.

Після успішного відкриття контексту аркуша та створення змінної аркуша оператор виконується. У межах оператора можна отримати доступ до змінної аркуша, щоб отримати додаткові дані з аркуша.

Якщо поточне вікно редактора не містить креслення аркуша, видається повідомлення про помилку та ULP припиняється.

Перевірте, чи є аркуш

Використовуючи оператор sheet без аргументу, ви можете перевірити, чи містить поточне вікно редактора малюнок аркуша. У цьому випадку sheet поводиться як ціла константа, повертаючи 1, якщо в поточному вікні редактора є малюнок аркуша, і 0 в іншому випадку.

приклад

 if ( sheet ) sheet ( S ) { S . instances ( I ) printf ( "Instance: %s
" , I . name );
     }

символ()

функція

Відкриває контекст символу.

Синтаксис

 symbol ( identifier ) statement

Дивіться також бібліотека, набір пристроїв, слід

Оператор символу відкриває контекст символу, якщо поточне вікно редактора містить малюнок символу. Створюється змінна типу UL_SYMBOL, якій надається ім’я, указане ідентифікатором.

Після успішного відкриття контексту символу та створення змінної символу оператор виконується. У межах оператора можна отримати доступ до змінної символу для отримання додаткових даних із символу.

Якщо поточне вікно редактора не містить креслення символу, видається повідомлення про помилку та ULP припиняється.

Перевірте, чи є символ

Використовуючи оператор символу без аргументу, ви можете перевірити, чи містить поточне вікно редактора малюнок символу. У цьому випадку символ поводиться як ціла константа, повертаючи 1, якщо в поточному вікні редактора є малюнок символу, і 0 в іншому випадку.

приклад

 if ( symbol ) symbollass="pun">( S ) { S . pins ( P ) printf ( "Pin: %s
" , P . name );
     }

Орігінал сторінки: Builtins