<!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>