библиотека
-
ИМЯ
- auto_execok, auto_import, auto_load, auto_mkindex, auto_qualify, auto_reset, tcl_findLibrary, parray, tcl_endOfWord, tcl_startOfNextWord, tcl_startOfPreviousWord, tcl_wordBreakAfter, tcl_wordBreakBefore — стандартная библиотека процедур Tcl
- СИНОПСИС
- ВВЕДЕНИЕ
- ПРОЦЕДУРЫ КОМАНД
-
auto_execok cmd
- auto_import pattern
- auto_load cmd
- auto_mkindex dir pattern pattern ...
- auto_reset
- auto_qualify command namespace
- tcl_findLibrary basename version patch initScript enVarName varName
- parray arrayName ?pattern?
- tcl_endOfWord str start
- tcl_startOfNextWord str start
- tcl_startOfPreviousWord str start
- tcl_wordBreakAfter str start
- tcl_wordBreakBefore str start
- auto_import pattern
- ПЕРЕМЕННЫЕ
- ПЕРЕМЕННЫЕ УПРАВЛЕНИЯ АВТОЗАГРУЗКОЙ И ПАКЕТАМИ
-
auto_execs
- auto_index
- auto_noexec
- auto_noload
- auto_path
- env(TCL_LIBRARY)
- env(TCLLIBPATH)
- auto_index
- ПЕРЕМЕННЫЕ ОПРЕДЕЛЕНИЯ ГРАНИЦ СЛОВ
-
tcl_nonwordchars
- tcl_wordchars
- СМОТРИТЕ ТАКЖЕ
- КЛЮЧЕВЫЕ СЛОВА
Имя
auto_execok, auto_import, auto_load, auto_mkindex, auto_qualify, auto_reset, tcl_findLibrary, parray, tcl_endOfWord, tcl_startOfNextWord, tcl_startOfPreviousWord, tcl_wordBreakAfter, tcl_wordBreakBefore — стандартная библиотека процедур TclСинопсис
auto_execok cmdauto_import pattern
auto_load cmd
auto_mkindex dir pattern pattern ...
auto_qualify command namespace
auto_reset
tcl_findLibrary basename version patch initScript enVarName varName
parray arrayName ?pattern?
tcl_endOfWord str start
tcl_startOfNextWord str start
tcl_startOfPreviousWord str start
tcl_wordBreakAfter str start
tcl_wordBreakBefore str start
Введение
Tcl включает библиотеку процедур Tcl для часто используемых функций. Определенные в библиотеке Tcl процедуры являются универсальными и подходят для использования во многих различных приложениях. Путь к библиотеке Tcl возвращается командой info library. Помимо библиотеки Tcl, каждое приложение обычно имеет собственную библиотеку вспомогательных процедур; путь к этой библиотеке обычно задаётся значением глобальной переменной $app_library, где app — имя приложения. Например, путь к библиотеке Tk хранится в переменной tk_library.Для доступа к процедурам в библиотеке Tcl приложение должно выполнить загрузку файла init.tcl в библиотеке, например, с помощью команды Tcl
source [file join [info library] init.tcl]
Если процедура библиотеки Tcl_Init вызывается из процедуры Tcl_AppInit приложения, это происходит автоматически. Код в init.tcl определит процедуру unknown и организует загрузку других процедур по требованию с помощью механизма автозагрузки, определённого ниже.
Процедуры команд
Следующие процедуры предоставляются в библиотеке Tcl:- auto_execok cmd
- Определяет, существует ли исполняемый файл или встроенная команда оболочки с именем cmd. Если да, то возвращает список аргументов, которые необходимо передать команде exec для выполнения исполняемого файла или встроенной команды оболочки, указанной именем cmd. Если нет, возвращает пустую строку. Эта команда проверяет каталоги в текущем пути поиска (указанном переменной среды PATH) при поиске исполняемого файла с именем cmd. В системах Windows поиск расширяется теми же каталогами и расширениями файлов, что и используется командой exec. Команда Auto_execok запоминает информацию о предыдущих поисках в массиве с именем auto_execs; это позволяет избежать поиска пути при последующих вызовах для той же команды cmd. Команда auto_reset может использоваться для принудительной очистки кэшированной информации auto_execok.
- auto_import pattern
- Команда Auto_import вызывается во время импорта пространства имён, чтобы определить, находятся ли импортируемые команды, указанные шаблоном pattern, в загружаемой библиотеке. Если да, то команды загружаются, чтобы они были доступны интерпретатору для создания ссылок импорта. Если команды не находятся в загружаемой библиотеке, auto_import ничего не делает. Сопоставление шаблонов выполняется в соответствии с правилами сопоставления шаблонов команды импорта пространства имён.
- auto_load cmd
- Эта команда пытается загрузить определение Tcl-команды с именем cmd. Для этого она ищет в пути автозагрузки, который представляет собой список одного или нескольких каталогов. Путь автозагрузки задаётся глобальной переменной auto_path, если она существует. Если переменная auto_path отсутствует, используется переменная среды TCLLIBPATH, если она существует. В противном случае путь автозагрузки состоит только из каталога Tcl-библиотеки. В каждом каталоге пути автозагрузки должен быть файл tclIndex, описывающий одну или несколько команд, определённых в данном каталоге, и скрипт для их загрузки. Файл tclIndex должен быть сгенерирован командой auto_mkindex. Если команда cmd найдена в файле индекса, то соответствующий скрипт выполняется для создания команды. Команда auto_load возвращает 1, если cmd была успешно создана. Команда возвращает 0, если не было записи об индексе для cmd или если скрипт фактически не определил cmd (например, из-за устаревшей информации индекса). Если при обработке скрипта произошла ошибка, то возвращается эта ошибка. Команда Auto_load считывает информацию об индексе только один раз и сохраняет её в массиве auto_index; последующие вызовы auto_load проверяют наличие cmd в массиве, а не повторно считывают файлы индекса. Кэшированная информация индекса может быть удалена командой auto_reset. Это принудит следующую команду auto_load перечитать базу данных индекса с диска.
- auto_mkindex dir pattern pattern ...
- Создаёт индекс, пригодный для использования командой auto_load. Команда ищет в dir все файлы, имена которых соответствуют любому из аргументов pattern (сопоставление выполняется с помощью команды glob), генерирует индекс всех Tcl-процедур команд, определённых во всех соответствующих файлах, и сохраняет информацию индекса в файл с именем tclIndex в dir. Если шаблоны не указаны, предполагается шаблон *.tcl. Например, команда
auto_mkindex foo *.tcl
прочитает все файлы .tcl в подкаталоге foo и сгенерирует новый файл индекса foo/tclIndex.
Команда Auto_mkindex анализирует Tcl-скрипты, вызывая их в подчинённом интерпретаторе и отслеживая команды proc и namespace, которые выполняются. Расширения могут использовать (недокументированный) пакет auto_mkindex_parser для регистрации других команд, которые могут внести вклад в индекс auto_load. Вам придётся прочитать авто.tcl, чтобы понять, как это работает.
Auto_mkindex_old (имеющая такую же синтаксическую структуру, как auto_mkindex) анализирует Tcl-скрипты относительно простым способом: если любая строка содержит слово “proc” в начале, то она предполагается определением процедуры, и следующее слово в строке принимается как имя процедуры. Определения процедур, которые не появляются таким образом (например, имеют пробелы перед proc), не будут индексироваться. Если ваш скрипт содержит «опасный» код, такой как код глобальной инициализации или имена процедур со специальными символами, такими как $, *, [ или ], вам безопаснее использовать auto_mkindex_old.
- auto_reset
- Уничтожает всю информацию, кэшированную командами auto_execok и auto_load. Эта информация будет повторно считана с диска при следующем обращении. Команда Auto_reset также удаляет все процедуры, перечисленные в индексе автозагрузки, чтобы при следующем использовании были загружены их свежие копии.
- auto_qualify command namespace
- Вычисляет список полных квалифицированных имён для command. Этот список отражает путь, по которому стандартный Tcl-интерпретатор выполняет поиск команд: сначала он ищет команду в текущем пространстве имён, а затем в глобальном пространстве имён. Соответственно, если command относительная, а namespace не ::, то возвращаемый список содержит два элемента: command, ограниченную namespace, как если бы это была команда в пространстве имён namespace; и command как если бы это была команда в глобальном пространстве имён. В противном случае, если command абсолютная (она начинается с ::), или namespace равна ::, список содержит только command как команду в глобальном пространстве имён.
Команда Auto_qualify используется средствами автозагрузки в Tcl, как для создания индексов автозагрузки, таких как pkgIndex.tcl, так и для фактической автозагрузки функций во время выполнения.
- tcl_findLibrary basename version patch initScript enVarName varName
- Это стандартная процедура поиска, используемая расширениями во время их инициализации. Они вызывают эту процедуру, чтобы найти свою библиотеку скриптов в нескольких стандартных каталогах. Последний компонент имени каталога библиотеки обычно basenameversion (например, tk8.0), но может быть «library» в иерархиях построения. Файл initScript будет вызван в интерпретатор, как только он будет найден. Каталог, в котором найден этот файл, сохраняется в глобальной переменной varName. Если эта переменная уже определена (например, кодом C во время инициализации приложения), то поиск не выполняется. В противном случае поиск осуществляется в следующих каталогах: каталог, указанный переменной среды enVarName; относительно каталога Tcl-библиотеки; относительно исполняемого файла в стандартном каталоге bin или bin/arch; относительно исполняемого файла в текущем дереве построения; относительно исполняемого файла в параллельном дереве построения.
- parray arrayName ?pattern?
- Выводит на стандартный вывод имена и значения всех элементов массива arrayName или только имена, соответствующие pattern (используя правила сопоставления string match) и их значения, если pattern задан. ArrayName должен быть массивом, доступным вызывающей стороне parray. Это может быть как локальный, так и глобальный массив.
- tcl_endOfWord str start
- Возвращает индекс первого расположения конца слова, которое встречается после начального индекса start в строке str. Расположение конца слова определяется как первый не-словообразующий символ, следующий за первым словообразующим символом после начальной точки. Возвращает -1, если после начальной точки нет других расположений конца слова. См. описание tcl_wordchars и tcl_nonwordchars ниже для получения более подробной информации о том, как Tcl определяет, какие символы являются словообразующими.
- tcl_startOfNextWord str start
- Возвращает индекс первого расположения начала слова, которое встречается после начального индекса start в строке str. Расположение начала слова определяется как первый словообразующий символ, следующий за не-словообразующим символом. Возвращает -1, если после начальной точки нет других расположений начала слова.
- tcl_startOfPreviousWord str start
- Возвращает индекс первого расположения начала слова, которое встречается перед начальным индексом start в строке str. Возвращает -1, если перед начальной точкой нет других расположений начала слова.
- tcl_wordBreakAfter str start
- Возвращает индекс первой границы слова после начального индекса start в строке str. Возвращает -1, если после начальной точки нет других границ в данной строке. Возвращаемый индекс относится ко второму символу пары, которая образует границу.
- tcl_wordBreakBefore str start
- Возвращает индекс первой границы слова перед начальным индексом start в строке str. Возвращает -1, если перед начальной точкой нет других границ в данной строке. Возвращаемый индекс относится ко второму символу пары, которая образует границу.
Переменные
Следующие глобальные переменные определены или используются процедурами в Tcl-библиотеке. Они делятся на две широкие категории: обработка неизвестных команд и пакетов и определение того, что является словами.Переменные автозагрузки и управления пакетами
- auto_execs
- Используется auto_execok для записи информации о том, существуют ли определённые команды в виде исполняемых файлов.
- auto_index
- Используется auto_load для сохранения индексной информации, считанной с диска.
- auto_noexec
- Если задано какое-либо значение, то unknown не будет пытаться выполнить автоматическое выполнение команд.
- auto_noload
- Если задано какое-либо значение, то unknown не будет пытаться загрузить автоматические команды.
- auto_path
- Если задано, то оно должно содержать допустимый список Tcl, содержащий каталоги для поиска во время операций автоматической загрузки (включая файлы индекса пакетов при использовании обработчика по умолчанию package unknown). Эта переменная инициализируется во время запуска и содержит в порядке следования: каталоги, указанные в переменной среды TCLLIBPATH, каталог, указанный в глобальной переменной tcl_library, родительский каталог tcl_library, каталоги, указанные в переменной tcl_pkgPath. Дополнительные места поиска файлов и индексов пакетов обычно добавляются в эту переменную с помощью lappend.
- env(TCL_LIBRARY)
- Если задано, то оно указывает расположение каталога, содержащего скрипты библиотек (значение этой переменной будет присвоено переменной tcl_library и, следовательно, возвращено командой info library). Если эта переменная не задана, используется значение по умолчанию.
- env(TCLLIBPATH)
- Если задано, то оно должно содержать допустимый список Tcl, содержащий каталоги для поиска во время операций автоматической загрузки. Каталоги должны быть указаны в формате Tcl, используя «/» в качестве разделителя пути независимо от платформы. Эта переменная используется только при инициализации переменной auto_path.
Переменные определения границ слов
Эти переменные используются только в командах tcl_endOfWord, tcl_startOfNextWord, tcl_startOfPreviousWord, tcl_wordBreakAfter и tcl_wordBreakBefore.- tcl_nonwordchars
- Эта переменная содержит регулярное выражение, используемое процедурами, такими как tcl_endOfWord, для определения, является ли символ частью слова или нет. Если шаблон соответствует символу, символ считается несловесным символом. В Windows пробелы, табуляции и символы новой строки считаются несловесными символами. В Unix всё, кроме цифр, букв и подчёркиваний, считается несловесными символами.
- tcl_wordchars
- Эта переменная содержит регулярное выражение, используемое процедурами, такими как tcl_endOfWord, для определения, является ли символ частью слова или нет. Если шаблон соответствует символу, символ считается символом слова. В Windows слова состоят из любых символов, которые не являются пробелами, табуляцией или новой строкой. В Unix слова состоят из цифр, букв или подчёркиваний.
См. также
env, info, re_syntax
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/library.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/library.htm