projman/hlp/ru/tcl/library.html
2018-02-05 17:23:37 +03:00

270 lines
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
<head>
<title>library</title>
</head>
<body>
<h1>library</h1>
<p>Команды стандартной библиотеки процедур Tcl.</p>
<h2>СИНТАКСИС</h2>
<pre>
<a href=#auto_execok><strong>auto_execok</strong></a> <em>cmd</em>
<a href=#auto_load><strong>auto_load</strong></a> <em>cmd</em>
<a href=#auto_mkindex><strong>auto_mkindex</strong></a> <em>dir</em> <em>pattern</em> <em>pattern</em>
<a href=#auto_reset><strong>auto_reset</strong></a>
<a href=#parray><strong>parray</strong></a> <em>arrayName</em>
<a href=#tcl_endOfWord><strong>tcl_endOfWord</strong></a> <em>str</em> <em>start</em>
<a href=#tcl_endOfWord><strong>tcl_startOfNextWord</strong></a> <em>str</em> <em>start</em>
<a href=#tcl_startOfPreviousWord><strong>tcl_startOfPreviousWord</strong></a> <em>str</em> <em>start</em>
<a href=#tcl_wordBreakAfter><strong>tcl_wordBreakAfter</strong></a> <em>str</em> <em>start</em>
<a href=#tcl_wordBreakBefore><strong>tcl_wordBreakBefore</strong></a> <em>str</em> <em>start</em>
</pre>
<h2>ОПИСАНИЕ</h2>
<p>Tcl содержит библиотеку Tcl-процедур общего назначения.</p>
<p>Местонахождение библиотеки Tcl можно получить с помощью команды
<a href= info.html#library><strong>info</strong>
<strong>library</strong></a>. Обычно, помимо этой библиотеки, приложения
имеют собственные библиотеки служебных процедур. Местонахождение
процедур приложения обычно содержит глобальная переменная
<strong></strong>, где <em>app</em> - имя приложения. Например,
для Tk это переменная <strong></strong>.</p>
<p>Для того, чтобы использовать процедуры из Tcl-библиотеки,
приложению необходимо прочитать файл <strong>init.tcl</strong> библиотеки,
например, командой</p>
<pre>
source [file join [info library] init.tcl]
</pre>
<p>Если в приложении процедура <strong>Tcl_AppInit</strong> вызывает
библиотечную процедуру <strong>Tcl_Init</strong>, то такая команда
выполняется автоматически. Код в файле <strong>init.tcl</strong> определит
процедуру <a href=unknown.html><strong>unknown</strong></a> и
позволит остальным процедурам загружаться по требованию при
помощи механизма автозагрузки, описанного ниже. </p>
<h2>КОМАНДНЫЕ ПРОЦЕДУРЫ</h2>
<p>Библиотека Tcl предоставляет пользователю следующие
процедуры:</p>
<dl>
<dt><a name=auto_execok></a><strong>auto_execok</strong> <em>cmd</em></dt>
<dd>Эта команда просматривает каталоги в текущем пути поиска
(заданном переменной окружения PATH) и проверяет, есть ли в
каталогах исполняемый файл по имени <em>cmd</em>. Если файл
присутствует, то команда возвращает <strong>1</strong>, если нет - то
<strong>0</strong>. Команда запоминает сведения о предыдущем поиске в
массиве <em>auto_execs</em>, это позволяет обходиться без поиска
в каталогах при последующих вызовах этой же команды. Для
удаления из памяти этой информации можно использовать команду
<strong>auto_reset</strong>.
</dd>
<dt><a name=auto_load></a><strong>auto_load</strong> <em>cmd</em></dt>
<dd><p>Эта команда загружает определение для Tcl-команды
<em>cmd</em>. Для этого она просматривает путь автозагрузки,
являющийся списком из одного или более каталогов. Он
содержится в глобальной переменной <strong>auto_path</strong>, если
она существует. В противном случае используется переменная
окружения TCLLIBPATH. Если же и она не существует, список
автозагрузки состоит из каталога, в котором находится
Tcl-библиотека.</p>
<p>В каждом из каталогов, входящих в путь автозагрузки, должен
находиться файл <strong>tclIndex</strong>, список команд, определенных
в этом каталоге, и скрипты для загрузки каждой команды. Файл
<strong>tclIndex</strong> должен быть создан с помощью команды
<strong>auto_mkindex</strong>.</p>
<p>Если команда была успешно загружена, то <strong>auto_load</strong>
возвращает <strong>1</strong>. Команда возвращает <strong>0</strong>, если
нужная команда не была найдена в списках команд или
указанная команда загрузки не позволила создать команду
(например, если файл <strong>tclIndex</strong> устарел). Если при
выполнении указанного загрузочного скрипта возникла ошибка,
команда возвращает ошибку.</p>
<p>Команда <strong>auto_load</strong> читает индексные файлы только один
раз и сохраняет полученную информацию в массиве
<strong>auto_index</strong>. При последующих обращениях к команде
<strong>auto_load</strong> сначала проверяется массив и только если
информация о процедуре не найдена, приступает к просмотру
индексных файлов. Эта информация может быть удалена с
помощью команды <strong>auto_reset</strong>. После команды
<strong>auto_reset</strong> следующий вызов <strong>auto_load</strong> к
повторному чтению индексных файлов.</p>
</dd>
<dt><a name=auto_mkindex></a><strong>auto_mkindex</strong> <em>dir</em>
<em>pattern</em> <em>pattern</em>...</dt>
<dd><p>Команда создает индекс для использования его командой
<strong>auto_load</strong>. Для этого команда просматривает каталог
<em>dir</em> в поисках файлов с именами, удовлетворяющими
аргументам <em>pattern</em> (сравнение выполняется командой <a
href=glob.html><strong>glob</strong></a>), и создает индекс всех
командных процедур Tcl, определенных в обнаруженных файлах,
и сохраняет индекс в файле <strong>tclIndex</strong> в этой
<em>dir</em>. Если не задано ни одного шаблона <em>pattern</em>,
то по умолчанию принимается <strong>*.tcl</strong>. Например,
команда</p>
<pre>
auto_mkindex foo *.tcl
</pre>
<p>просматривает все <strong>.tcl</strong>-файлы в каталоге <strong>foo</strong> и
создает новый индексный файл <strong>foo/tclIndex</strong>.</p>
<p>Команда <strong>auto_mkindex</strong> просматривает Tcl-скрипты очень
простым способом: если в очередной строке, начиная с первого
символа, написано слово <a href=
proc.html><strong>proc</strong></a>, считается, что это
определение процедуры, а следующее слово есть имя
процедуры. Процедуры, определение которых не подходит под
описанное (например, если перед словом <strong><a href=
proc.html>proc</a></strong> стоят пробелы), не попадают в
индексный файл.</p>
</dd>
<dt><a name=auto_reset></a><strong>auto_reset</strong></dt>
<dd>Команда удаляет всю информацию, накопленную командами
<strong>auto_execok</strong> и <strong>auto_load</strong>. При следующем обращении
к этой информации она будет считана с диска заново. Эта
команда также удаляет все процедуры, перечисленные в массиве
<strong>auto_index</strong>, так что при следующем обращении к ним будут
загружены новые копии.
</dd>
<dt><a name=parray></a><strong>parray</strong> <em>arrayName</em></dt>
<dd>Команда выдает на стандартный выход имена и значения
элементов массива <em>arrayName</em>. Массив должен быть
доступен в контексте вызова. Он может быть как локальным, так
и глобальным.
</dd>
<dt><a name=tcl_endOfWord></a><strong>tcl_endOfWord</strong> <em>str</em>
<em>start</em></dt>
<dd>Возвращает индекс первого конца слова после указанного
индекса <em>start</em> в строке <em>str</em>. Первым концом слова
считается первый символ, не принадлежащий слову, следующий за
первым после начальной точки символом слова. Возвращает
<strong>-1</strong>, если после начальной точки больше нет концов
слова. Способ распознавания символов слов, используемый в Tcl,
приведен в описании переменных <strong>tcl_wordchars</strong> и
<strong>tcl_nonwordchars</strong>.
</dd>
<dt><a name=tcl_startOfNextWord></a><strong>tcl_startOfNextWord</strong>
<em>str</em> <em>start</em></dt>
<dd>Возвращает индекс первого начала слова после указанного
индекса <em>start</em> в строке <em>str</em>. Первым началом слова
считается первый символ слова, следующий за символом, не
принадлежащим слову. Возвращает <strong>-1</strong>, если после
начальной точки больше нет начала слова.
</dd>
<dt><a name=tcl_startOfPreviousWord></a>
<strong>tcl_startOfPreviousWord</strong> <em>str</em> <em>start</em></dt>
<dd>Возвращает индекс первого начала слова до указанного
индекса <em>start</em> в строке <em>str</em>. Возвращает
<strong>-1</strong>, если после начальной точки больше нет начала
слова.
</dd>
<dt><a name=tcl_wordBreakAfter></a>
<strong>tcl_wordBreakAfter</strong><em>str</em> <em>start</em></dt>
<dd>Возвращает индекс первой границы слова после указанного
индекса <em>start</em> в строке <em>str</em>. Возвращает
<strong>-1</strong>, если в указанной строке после начальной точки
больше нет границ слова. Возвращаемый индекс относится ко
второму символу пары, образующей границу.
</dd>
<dt><a name=tcl_wordBreakBefore></a>
<strong>tcl_wordBreakBefore</strong> <em>str</em> <em>start</em></dt>
<dd>Возвращает индекс первой границы слова до указанного
индекса <em>start</em> в строке <em>str</em>. Возвращает
<strong>-1</strong>, если в указанной строке до начальной точки
больше нет границ слова. Возвращаемый индекс относится ко
второму символу пары, образующей границу.
</dd>
</dl>
<h2>ПЕРЕМЕННЫЕ</h2>
<p>Процедуры Tcl используют или определяют следующие глобальные
переменные.</p>
<p><strong>auto_execs</strong> - используется командой <strong>auto_execok</strong>
для записи информации о том, существуют ли конкретная команда в
виде исполняемого файла.</p>
<p><strong>auto_index</strong> - используется <strong>auto_load</strong> для
сохранения индексной информации, считанной с диска.</p>
<p><strong>auto_noexec</strong> - если переменная задана с любым значением,
то команда <a href=unknown.html><strong>unknown</strong></a> не
будет пытаться автоматически исполнить какую-либо команду.</p>
<p><strong>auto_noload</strong> - если переменная задана с любым значением,
то команда <a href=unknown.html><strong>unknown</strong></a> не
будет пытаться автоматически загрузить какую-либо команду.</p>
<p><strong>auto_path</strong> - если переменная задана, то она должна
содержать Tcl-список с каталогами для просмотра при операциях
автозагрузки.</p>
<p><strong>env(TCL_LIBRARY)</strong> - если переменная задана, то она
указывает местоположение каталога с библиотечными скриптами
(команда <a href=info.html#library><strong>info</strong>
<strong>library</strong></a> возвращает значение этой переменной). Если
переменная не определена, то используется значение по
умолчанию.</p>
<p><strong>env(TCLLIBPATH)</strong> - если переменная задана, то она должна
содержать действующий Tcl список каталогов для поиска при
операциях автозагрузки. Эта переменная используется только
тогда, когда не определена переменная <strong>auto_path</strong>.</p>
<p><strong>tcl_nonwordchars</strong> - переменная содержит регулярное
выражение, используемое такими процедурами, как
<strong>tcl_endOfWord</strong> для определения, является ли символ частью
слова или нет. Если образец соответствует символу, то символ
считается не принадлежащим к слову. В Unix такими символами
являются все символы, кроме цифр, букв и символа
подчеркивания.</p>
<p><strong>tcl_wordchars</strong> - переменная содержит регулярное
выражение, используемое такими процедурами, как
<strong>tcl_endOfWord</strong> для определения, является ли символ частью
слова или нет. Если образец соответствует символу, то символ
считается частью слова. В Unix слова состоят из цифр, букв и
символа подчеркивания.</p>
<p><strong>unknown_active</strong> - эта переменная служит флагом для
индикации активности команды <a
href=unknown.html><strong>unknown</strong></a>: команда сама
устанавливает ее. Переменная используется для выявления ошибок,
при которых <a href=unknown.html><strong>unknown</strong></a>
бесконечно рекурсивно обращается к себе. Перед окончанием работы
<a href=unknown.html><strong>unknown</strong></a> переменная
сбрасывается.</p>
</body>
</html>