library

Команды стандартной библиотеки процедур Tcl.

СИНТАКСИС

      auto_execok cmd
      auto_load cmd
      auto_mkindex dir pattern pattern
      auto_reset
      parray arrayName
      tcl_endOfWord str start
      tcl_startOfNextWord str start
      tcl_startOfPreviousWord str start
      tcl_wordBreakAfter str start
      tcl_wordBreakBefore str start
    

ОПИСАНИЕ

Tcl содержит библиотеку Tcl-процедур общего назначения.

Местонахождение библиотеки Tcl можно получить с помощью команды info library. Обычно, помимо этой библиотеки, приложения имеют собственные библиотеки служебных процедур. Местонахождение процедур приложения обычно содержит глобальная переменная , где app - имя приложения. Например, для Tk это переменная .

Для того, чтобы использовать процедуры из Tcl-библиотеки, приложению необходимо прочитать файл init.tcl библиотеки, например, командой

      source [file join [info library] init.tcl]
    

Если в приложении процедура Tcl_AppInit вызывает библиотечную процедуру Tcl_Init, то такая команда выполняется автоматически. Код в файле init.tcl определит процедуру unknown и позволит остальным процедурам загружаться по требованию при помощи механизма автозагрузки, описанного ниже.

КОМАНДНЫЕ ПРОЦЕДУРЫ

Библиотека Tcl предоставляет пользователю следующие процедуры:

auto_execok cmd
Эта команда просматривает каталоги в текущем пути поиска (заданном переменной окружения PATH) и проверяет, есть ли в каталогах исполняемый файл по имени cmd. Если файл присутствует, то команда возвращает 1, если нет - то 0. Команда запоминает сведения о предыдущем поиске в массиве auto_execs, это позволяет обходиться без поиска в каталогах при последующих вызовах этой же команды. Для удаления из памяти этой информации можно использовать команду auto_reset.
auto_load cmd

Эта команда загружает определение для Tcl-команды cmd. Для этого она просматривает путь автозагрузки, являющийся списком из одного или более каталогов. Он содержится в глобальной переменной auto_path, если она существует. В противном случае используется переменная окружения TCLLIBPATH. Если же и она не существует, список автозагрузки состоит из каталога, в котором находится Tcl-библиотека.

В каждом из каталогов, входящих в путь автозагрузки, должен находиться файл tclIndex, список команд, определенных в этом каталоге, и скрипты для загрузки каждой команды. Файл tclIndex должен быть создан с помощью команды auto_mkindex.

Если команда была успешно загружена, то auto_load возвращает 1. Команда возвращает 0, если нужная команда не была найдена в списках команд или указанная команда загрузки не позволила создать команду (например, если файл tclIndex устарел). Если при выполнении указанного загрузочного скрипта возникла ошибка, команда возвращает ошибку.

Команда auto_load читает индексные файлы только один раз и сохраняет полученную информацию в массиве auto_index. При последующих обращениях к команде auto_load сначала проверяется массив и только если информация о процедуре не найдена, приступает к просмотру индексных файлов. Эта информация может быть удалена с помощью команды auto_reset. После команды auto_reset следующий вызов auto_load к повторному чтению индексных файлов.

auto_mkindex dir pattern pattern...

Команда создает индекс для использования его командой auto_load. Для этого команда просматривает каталог dir в поисках файлов с именами, удовлетворяющими аргументам pattern (сравнение выполняется командой glob), и создает индекс всех командных процедур Tcl, определенных в обнаруженных файлах, и сохраняет индекс в файле tclIndex в этой dir. Если не задано ни одного шаблона pattern, то по умолчанию принимается *.tcl. Например, команда

	  auto_mkindex foo *.tcl
	

просматривает все .tcl-файлы в каталоге foo и создает новый индексный файл foo/tclIndex.

Команда auto_mkindex просматривает Tcl-скрипты очень простым способом: если в очередной строке, начиная с первого символа, написано слово proc, считается, что это определение процедуры, а следующее слово есть имя процедуры. Процедуры, определение которых не подходит под описанное (например, если перед словом proc стоят пробелы), не попадают в индексный файл.

auto_reset
Команда удаляет всю информацию, накопленную командами auto_execok и auto_load. При следующем обращении к этой информации она будет считана с диска заново. Эта команда также удаляет все процедуры, перечисленные в массиве auto_index, так что при следующем обращении к ним будут загружены новые копии.
parray arrayName
Команда выдает на стандартный выход имена и значения элементов массива arrayName. Массив должен быть доступен в контексте вызова. Он может быть как локальным, так и глобальным.
tcl_endOfWord str start
Возвращает индекс первого конца слова после указанного индекса start в строке str. Первым концом слова считается первый символ, не принадлежащий слову, следующий за первым после начальной точки символом слова. Возвращает -1, если после начальной точки больше нет концов слова. Способ распознавания символов слов, используемый в Tcl, приведен в описании переменных tcl_wordchars и tcl_nonwordchars.
tcl_startOfNextWord str start
Возвращает индекс первого начала слова после указанного индекса start в строке str. Первым началом слова считается первый символ слова, следующий за символом, не принадлежащим слову. Возвращает -1, если после начальной точки больше нет начала слова.
tcl_startOfPreviousWord str start
Возвращает индекс первого начала слова до указанного индекса start в строке str. Возвращает -1, если после начальной точки больше нет начала слова.
tcl_wordBreakAfterstr 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-список с каталогами для просмотра при операциях автозагрузки.

env(TCL_LIBRARY) - если переменная задана, то она указывает местоположение каталога с библиотечными скриптами (команда info library возвращает значение этой переменной). Если переменная не определена, то используется значение по умолчанию.

env(TCLLIBPATH) - если переменная задана, то она должна содержать действующий Tcl список каталогов для поиска при операциях автозагрузки. Эта переменная используется только тогда, когда не определена переменная auto_path.

tcl_nonwordchars - переменная содержит регулярное выражение, используемое такими процедурами, как tcl_endOfWord для определения, является ли символ частью слова или нет. Если образец соответствует символу, то символ считается не принадлежащим к слову. В Unix такими символами являются все символы, кроме цифр, букв и символа подчеркивания.

tcl_wordchars - переменная содержит регулярное выражение, используемое такими процедурами, как tcl_endOfWord для определения, является ли символ частью слова или нет. Если образец соответствует символу, то символ считается частью слова. В Unix слова состоят из цифр, букв и символа подчеркивания.

unknown_active - эта переменная служит флагом для индикации активности команды unknown: команда сама устанавливает ее. Переменная используется для выявления ошибок, при которых unknown бесконечно рекурсивно обращается к себе. Перед окончанием работы unknown переменная сбрасывается.