projman/hlp/ru/tcl/library.html

270 lines
18 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
2015-10-19 13:27:31 +03:00
<html>
<head>
<title>library</title>
</head>
<body>
<h1>library</h1>
<p>Команды стандартной библиотеки процедур Tcl.</p>
2015-10-19 13:27:31 +03:00
<h2>СИНТАКСИС</h2>
2015-10-19 13:27:31 +03:00
<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>
2015-10-19 13:27:31 +03:00
</pre>
<h2>ОПИСАНИЕ</h2>
2015-10-19 13:27:31 +03:00
<p>Tcl содержит библиотеку Tcl-процедур общего назначения.</p>
2015-10-19 13:27:31 +03:00
<p>Местонахождение библиотеки Tcl можно получить с помощью команды
<a href= info.html#library><strong>info</strong>
<strong>library</strong></a>. Обычно, помимо этой библиотеки, приложения
имеют собственные библиотеки служебных процедур. Местонахождение
процедур приложения обычно содержит глобальная переменная
<strong></strong>, где <em>app</em> - имя приложения. Например,
для Tk это переменная <strong></strong>.</p>
2015-10-19 13:27:31 +03:00
<p>Для того, чтобы использовать процедуры из Tcl-библиотеки,
приложению необходимо прочитать файл <strong>init.tcl</strong> библиотеки,
например, командой</p>
2015-10-19 13:27:31 +03:00
<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>
2015-10-19 13:27:31 +03:00
<h2>КОМАНДНЫЕ ПРОЦЕДУРЫ</h2>
2015-10-19 13:27:31 +03:00
<p>Библиотека Tcl предоставляет пользователю следующие
процедуры:</p>
2015-10-19 13:27:31 +03:00
<dl>
<dt><a name=auto_execok></a><strong>auto_execok</strong> <em>cmd</em></dt>
2015-10-19 13:27:31 +03:00
<dd>Эта команда просматривает каталоги в текущем пути поиска
(заданном переменной окружения PATH) и проверяет, есть ли в
каталогах исполняемый файл по имени <em>cmd</em>. Если файл
присутствует, то команда возвращает <strong>1</strong>, если нет - то
<strong>0</strong>. Команда запоминает сведения о предыдущем поиске в
массиве <em>auto_execs</em>, это позволяет обходиться без поиска
в каталогах при последующих вызовах этой же команды. Для
удаления из памяти этой информации можно использовать команду
2015-10-19 13:27:31 +03:00
<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> должен быть создан с помощью команды
2015-10-19 13:27:31 +03:00
<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>
2015-10-19 13:27:31 +03:00
</dd>
<dt><a name=auto_mkindex></a><strong>auto_mkindex</strong> <em>dir</em>
2015-10-19 13:27:31 +03:00
<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>
2015-10-19 13:27:31 +03:00
<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>
2015-10-19 13:27:31 +03:00
</dd>
<dt><a name=auto_reset></a><strong>auto_reset</strong></dt>
2015-10-19 13:27:31 +03:00
<dd>Команда удаляет всю информацию, накопленную командами
<strong>auto_execok</strong> и <strong>auto_load</strong>. При следующем обращении
к этой информации она будет считана с диска заново. Эта
команда также удаляет все процедуры, перечисленные в массиве
<strong>auto_index</strong>, так что при следующем обращении к ним будут
загружены новые копии.
2015-10-19 13:27:31 +03:00
</dd>
<dt><a name=parray></a><strong>parray</strong> <em>arrayName</em></dt>
2015-10-19 13:27:31 +03:00
<dd>Команда выдает на стандартный выход имена и значения
элементов массива <em>arrayName</em>. Массив должен быть
доступен в контексте вызова. Он может быть как локальным, так
и глобальным.
2015-10-19 13:27:31 +03:00
</dd>
<dt><a name=tcl_endOfWord></a><strong>tcl_endOfWord</strong> <em>str</em>
2015-10-19 13:27:31 +03:00
<em>start</em></dt>
<dd>Возвращает индекс первого конца слова после указанного
индекса <em>start</em> в строке <em>str</em>. Первым концом слова
считается первый символ, не принадлежащий слову, следующий за
первым после начальной точки символом слова. Возвращает
<strong>-1</strong>, если после начальной точки больше нет концов
слова. Способ распознавания символов слов, используемый в Tcl,
приведен в описании переменных <strong>tcl_wordchars</strong> и
2015-10-19 13:27:31 +03:00
<strong>tcl_nonwordchars</strong>.
</dd>
<dt><a name=tcl_startOfNextWord></a><strong>tcl_startOfNextWord</strong>
2015-10-19 13:27:31 +03:00
<em>str</em> <em>start</em></dt>
<dd>Возвращает индекс первого начала слова после указанного
индекса <em>start</em> в строке <em>str</em>. Первым началом слова
считается первый символ слова, следующий за символом, не
принадлежащим слову. Возвращает <strong>-1</strong>, если после
начальной точки больше нет начала слова.
2015-10-19 13:27:31 +03:00
</dd>
<dt><a name=tcl_startOfPreviousWord></a>
2015-10-19 13:27:31 +03:00
<strong>tcl_startOfPreviousWord</strong> <em>str</em> <em>start</em></dt>
<dd>Возвращает индекс первого начала слова до указанного
индекса <em>start</em> в строке <em>str</em>. Возвращает
<strong>-1</strong>, если после начальной точки больше нет начала
слова.
2015-10-19 13:27:31 +03:00
</dd>
<dt><a name=tcl_wordBreakAfter></a>
2015-10-19 13:27:31 +03:00
<strong>tcl_wordBreakAfter</strong><em>str</em> <em>start</em></dt>
<dd>Возвращает индекс первой границы слова после указанного
индекса <em>start</em> в строке <em>str</em>. Возвращает
<strong>-1</strong>, если в указанной строке после начальной точки
больше нет границ слова. Возвращаемый индекс относится ко
второму символу пары, образующей границу.
2015-10-19 13:27:31 +03:00
</dd>
<dt><a name=tcl_wordBreakBefore></a>
2015-10-19 13:27:31 +03:00
<strong>tcl_wordBreakBefore</strong> <em>str</em> <em>start</em></dt>
<dd>Возвращает индекс первой границы слова до указанного
индекса <em>start</em> в строке <em>str</em>. Возвращает
<strong>-1</strong>, если в указанной строке до начальной точки
больше нет границ слова. Возвращаемый индекс относится ко
второму символу пары, образующей границу.
2015-10-19 13:27:31 +03:00
</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>
2015-10-19 13:27:31 +03:00
</body>
</html>