<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="cutter-Test-Utilities">
<refmeta>
<refentrytitle role="top_of_page" id="cutter-Test-Utilities.top_of_page">テストユーティリティ</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>Cutterライブラリ</refmiscinfo>
</refmeta>
<refnamediv>
<refname>テストユーティリティ</refname>
<refpurpose>テストをもっと簡単に書くためのユーティリティ。</refpurpose>
</refnamediv>

<refsynopsisdiv id="cutter-Test-Utilities.synopsis" role="synopsis">
<title role="synopsis.title">概要</title>

<synopsis><link linkend="char"><returnvalue>char</returnvalue></link> *              <link linkend="cut-build-fixture-data-path">cut_build_fixture_data_path</link>         (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-build-fixture-path">cut_build_fixture_path</link>              (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-build-path">cut_build_path</link>                      (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-build-path-array">cut_build_path_array</link>                (<parameter>const <link linkend="char"><type>char</type></link> **paths</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-get-fixture-data">cut_get_fixture_data</link>                (<parameter><link linkend="size-t"><type>size_t</type></link> *size</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-get-fixture-data-string">cut_get_fixture_data_string</link>         (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-make-directory">cut_make_directory</link>                  (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-remove-path">cut_remove_path</link>                     (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="cut-set-fixture-data-dir">cut_set_fixture_data_dir</link>            (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link> *              <link linkend="cut-take">cut_take</link>                            (<parameter><link linkend="void"><type>void</type></link> *object</parameter>,
                                                         <parameter><link linkend="CutDestroyFunction"><type>CutDestroyFunction</type></link> destroy_function</parameter>);
#define             <link linkend="cut-take-convert">cut_take_convert</link>                    (string,
                                                         to_code_set,
                                                         from_code_set)
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-take-diff">cut_take_diff</link>                       (<parameter>const <link linkend="char"><type>char</type></link> *from</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *to</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-take-inspect-string">cut_take_inspect_string</link>             (<parameter>const <link linkend="char"><type>char</type></link> *string</parameter>);
const <link linkend="void"><returnvalue>void</returnvalue></link> *        <link linkend="cut-take-memdup">cut_take_memdup</link>                     (<parameter>const <link linkend="void"><type>void</type></link> *memory</parameter>,
                                                         <parameter><link linkend="size-t"><type>size_t</type></link> size</parameter>);
const <link linkend="void"><returnvalue>void</returnvalue></link> *        <link linkend="cut-take-memory">cut_take_memory</link>                     (<parameter><link linkend="void"><type>void</type></link> *memory</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-take-printf">cut_take_printf</link>                     (<parameter>const <link linkend="char"><type>char</type></link> *format</parameter>,
                                                         <parameter>...</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-take-replace">cut_take_replace</link>                    (<parameter>const <link linkend="char"><type>char</type></link> *target</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *pattern</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *replacement</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-take-strdup">cut_take_strdup</link>                     (<parameter>const <link linkend="char"><type>char</type></link> *string</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-take-string">cut_take_string</link>                     (<parameter><link linkend="char"><type>char</type></link> *string</parameter>);
<link linkend="char"><returnvalue>char</returnvalue></link> **             <link linkend="cut-take-string-array">cut_take_string_array</link>               (<parameter><link linkend="char"><type>char</type></link> **strings</parameter>);
const <link linkend="char"><returnvalue>char</returnvalue></link> *        <link linkend="cut-take-strndup">cut_take_strndup</link>                    (<parameter>const <link linkend="char"><type>char</type></link> *string</parameter>,
                                                         <parameter><link linkend="size-t"><type>size_t</type></link> size</parameter>);
</synopsis>
</refsynopsisdiv>

<refsect1 id="cutter-Test-Utilities.description" role="desc">
<title role="desc.title">説明</title>
<para>テストを書くためには、テスト環境を前処理・後処理するコードや、検証する結果を準備するコードなどたくさんのコードを書く必要があります。Cutterはもっと簡単にテストを書くためにユーティリティを提供します。</para>
<para>このユーティリティはGLibサポート無しでも使えます。</para>
</refsect1>
<refsect1 id="cutter-Test-Utilities.details" role="details">
<title role="details.title">詳細</title>
<refsect2 id="cut-build-fixture-data-path" role="function" condition="deprecated:1.1.6: Use cut_build_fixture_path() instead.|since:1.0.2">
<title>cut_build_fixture_data_path ()</title>
<indexterm zone="cut-build-fixture-data-path" role="deprecated"><primary>cut_build_fixture_data_path</primary></indexterm><indexterm zone="cut-build-fixture-data-path" role="1.0.2"><primary>cut_build_fixture_data_path</primary></indexterm>
<programlisting><link linkend="char"><returnvalue>char</returnvalue></link> *              cut_build_fixture_data_path         (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<warning><para><literal>cut_build_fixture_data_path</literal>はバージョン1.1.6から非推奨になりました。新しく書くコードでは使わないでください。代わりに<link linkend="cut-build-fixture-path"><function>cut_build_fixture_path()</function></link>を使ってください。</para></warning>
<para>フィクスチャデータへのパスを生成します。もし、<parameter>path</parameter>が相対パスなら、パスは<link linkend="cut-set-fixture-data-dir"><function>cut_set_fixture_data_dir()</function></link>で指定したディレクトリか、現在のディレクトリからの相対パスとして処理されます。</para><variablelist role="params">
<varlistentry><term><parameter>path</parameter> :</term>
<listitem><simpara>フィクスチャデータのパスの最初の要素。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>パスの残りの要素。1.0.7から<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端が必須となりました。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>フィクスチャデータのパス。返された文字列が必要なくなったときは開放してください。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.2から</para></refsect2>
<refsect2 id="cut-build-fixture-path" role="function" condition="since:1.1.6">
<title>cut_build_fixture_path ()</title>
<indexterm zone="cut-build-fixture-path" role="1.1.6"><primary>cut_build_fixture_path</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_build_fixture_path              (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<para>フィクスチャデータへのパスを生成します。もし、<parameter>path</parameter>が相対パスなら、パスは<link linkend="cut-set-fixture-data-dir"><function>cut_set_fixture_data_dir()</function></link>で指定したディレクトリか、現在のディレクトリからの相対パスとして処理されます。</para><variablelist role="params">
<varlistentry><term><parameter>path</parameter> :</term>
<listitem><simpara>フィクスチャデータのパスの最初の要素。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>パスの残りの要素。<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端が必須です。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有するフィクスチャデータのパス。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.1.6から</para></refsect2>
<refsect2 id="cut-build-path" role="function" condition="since:1.0.7">
<title>cut_build_path ()</title>
<indexterm zone="cut-build-path" role="1.0.7"><primary>cut_build_path</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_build_path                      (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<para><parameter>path</parameter>と続く要素を使ってパスを作ります。</para><variablelist role="params">
<varlistentry><term><parameter>path</parameter> :</term>
<listitem><simpara>パスの最初の要素。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>パスの残りの要素。<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する作成したパス。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.7から</para></refsect2>
<refsect2 id="cut-build-path-array" role="function" condition="since:1.1.5">
<title>cut_build_path_array ()</title>
<indexterm zone="cut-build-path-array" role="1.1.5"><primary>cut_build_path_array</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_build_path_array                (<parameter>const <link linkend="char"><type>char</type></link> **paths</parameter>);</programlisting>
<para><parameter>paths</parameter>からパスを作ります。</para><variablelist role="params">
<varlistentry><term><parameter>paths</parameter> :</term>
<listitem><simpara>パスの要素を含んだ<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端の文字列の配列。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する作成したパス。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.1.5から</para></refsect2>
<refsect2 id="cut-get-fixture-data" role="function" condition="since:1.1.6">
<title>cut_get_fixture_data ()</title>
<indexterm zone="cut-get-fixture-data" role="1.1.6"><primary>cut_get_fixture_data</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_get_fixture_data                (<parameter><link linkend="size-t"><type>size_t</type></link> *size</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<para>"<parameter>path</parameter>/..."にあるフィクスチャデータを読み込み、文字列として返します。文字列はCutterが所持します。<link linkend="cut-build-fixture-data-path"><function>cut_build_fixture_data_path()</function></link>の説明にはフィクスチャデータのパスがどのように決定されるかが書かれています。</para><variablelist role="params">
<varlistentry><term><parameter>size</parameter> :</term>
<listitem><simpara>フィクスチャデータのサイズを返すアドレスまたは<link linkend="NULL:CAPS"><literal>NULL</literal></link>。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>path</parameter> :</term>
<listitem><simpara>フィクスチャデータのパスの最初の要素。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>パスの残りの要素。<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端が必須です。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>フィクスチャデータの内容。Cutterが所有しているので開放しないください。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.1.6から</para></refsect2>
<refsect2 id="cut-get-fixture-data-string" role="function" condition="since:1.0.2">
<title>cut_get_fixture_data_string ()</title>
<indexterm zone="cut-get-fixture-data-string" role="1.0.2"><primary>cut_get_fixture_data_string</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_get_fixture_data_string         (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<para>"<parameter>path</parameter>/..."にあるフィクスチャデータを読み込み、文字列として返します。文字列はCutterが所持します。<link linkend="cut-build-fixture-data-path"><function>cut_build_fixture_data_path()</function></link>の説明にはフィクスチャデータのパスがどのように決定されるかが書かれています。</para><variablelist role="params">
<varlistentry><term><parameter>path</parameter> :</term>
<listitem><simpara>フィクスチャデータのパスの最初の要素。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>パスの残りの要素。1.0.7から<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端が必須となりました。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>フィクスチャデータの内容。Cutterが所有しているので開放しないください。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.2から</para></refsect2>
<refsect2 id="cut-make-directory" role="function" condition="since:1.1.1">
<title>cut_make_directory ()</title>
<indexterm zone="cut-make-directory" role="1.1.1"><primary>cut_make_directory</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_make_directory                  (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<para><parameter>path</parameter>と、その途中にあるパスを再帰的に作成します。いかなるエラーも報告しません。</para><variablelist role="params">
<varlistentry><term><parameter>path</parameter> :</term>
<listitem><simpara>作成するパスの最初の要素。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>パスの残りの要素。<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.1.1から</para></refsect2>
<refsect2 id="cut-remove-path" role="function" condition="since:1.0.2">
<title>cut_remove_path ()</title>
<indexterm zone="cut-remove-path" role="1.0.2"><primary>cut_remove_path</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_remove_path                     (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<para><parameter>path</parameter>と、その下にあるパスを再帰的に削除します。いかなるエラーも報告しません。</para><variablelist role="params">
<varlistentry><term><parameter>path</parameter> :</term>
<listitem><simpara>削除するパスの最初の要素。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>パスの残りの要素。1.0.7から<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端が必須となりました。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.2から</para></refsect2>
<refsect2 id="cut-set-fixture-data-dir" role="function" condition="since:1.0.2">
<title>cut_set_fixture_data_dir ()</title>
<indexterm zone="cut-set-fixture-data-dir" role="1.0.2"><primary>cut_set_fixture_data_dir</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                cut_set_fixture_data_dir            (<parameter>const <link linkend="char"><type>char</type></link> *path</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<para><link linkend="cut-get-fixture-data-string"><function>cut_get_fixture_data_string()</function></link>などで使われるフィクスチャデータのディレクトリを指定します。</para><variablelist role="params">
<varlistentry><term><parameter>path</parameter> :</term>
<listitem><simpara>フィクスチャデータディレクトリのパスの最初の要素。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>パスの残りの要素。1.0.7から<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端が必須となりました。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.2から</para></refsect2>
<refsect2 id="cut-take" role="function" condition="since:1.0.5">
<title>cut_take ()</title>
<indexterm zone="cut-take" role="1.0.5"><primary>cut_take</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link> *              cut_take                            (<parameter><link linkend="void"><type>void</type></link> *object</parameter>,
                                                         <parameter><link linkend="CutDestroyFunction"><type>CutDestroyFunction</type></link> destroy_function</parameter>);</programlisting>
<para><parameter>object</parameter>の所有権をCutterに渡し、<parameter>object</parameter>自身を返します。<parameter>object</parameter>は<parameter>destroy_func</parameter>を用いて破棄されます。</para><variablelist role="params">
<varlistentry><term><parameter>object</parameter> :</term>
<listitem><simpara>Cutterが所有権をもつことになるオブジェクト。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>destroy_function</parameter> :</term>
<listitem><simpara>オブジェクト用の破棄関数。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する<parameter>object</parameter>。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.5から</para></refsect2>
<refsect2 id="cut-take-convert" role="macro" condition="since:1.1.3">
<title>cut_take_convert()</title>
<indexterm zone="cut-take-convert" role="1.1.3"><primary>cut_take_convert</primary></indexterm>
<programlisting>#define             cut_take_convert(string, to_code_set, from_code_set)</programlisting>
<para><parameter>string</parameter>のコードセットを<parameter>from_code_set</parameter>から<parameter>to_code_set</parameter>へ変換します。</para><variablelist role="params">
<varlistentry><term><parameter>string</parameter> :</term>
<listitem><simpara>変換対象の文字列。<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>to_code_set</parameter> :</term>
<listitem><simpara>変換先のコードセット名。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>from_code_set</parameter> :</term>
<listitem><simpara><parameter>string</parameter>のコードセット名。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する変換された文字列。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.1.3から</para></refsect2>
<refsect2 id="cut-take-diff" role="function">
<title>cut_take_diff ()</title>
<indexterm zone="cut-take-diff"><primary>cut_take_diff</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_take_diff                       (<parameter>const <link linkend="char"><type>char</type></link> *from</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *to</parameter>);</programlisting>
<para><parameter>from</parameter>と<parameter>to</parameter>のdiffを計算します。diffの所有者はCutterです。</para><variablelist role="params">
<varlistentry><term><parameter>from</parameter> :</term>
<listitem><simpara>元の文字列。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>to</parameter> :</term>
<listitem><simpara>修正された文字列。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する<parameter>from</parameter>と<parameter>to</parameter>のdiff。開放しないでください。</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="cut-take-inspect-string" role="function" condition="since:1.1.4">
<title>cut_take_inspect_string ()</title>
<indexterm zone="cut-take-inspect-string" role="1.1.4"><primary>cut_take_inspect_string</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_take_inspect_string             (<parameter>const <link linkend="char"><type>char</type></link> *string</parameter>);</programlisting>
<para><parameter>string</parameter>の詳細を返す。</para><variablelist role="params">
<varlistentry><term><parameter>string</parameter> :</term>
<listitem><simpara>詳細な情報を取得したい文字列。<link linkend="NULL:CAPS"><literal>NULL</literal></link>または<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端でなければいけません。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する整形された文字列。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.1.4から</para></refsect2>
<refsect2 id="cut-take-memdup" role="function" condition="since:1.0.5">
<title>cut_take_memdup ()</title>
<indexterm zone="cut-take-memdup" role="1.0.5"><primary>cut_take_memdup</primary></indexterm>
<programlisting>const <link linkend="void"><returnvalue>void</returnvalue></link> *        cut_take_memdup                     (<parameter>const <link linkend="void"><type>void</type></link> *memory</parameter>,
                                                         <parameter><link linkend="size-t"><type>size_t</type></link> size</parameter>);</programlisting>
<para><parameter>memory</parameter>の<parameter>size</parameter>バイトを複製し、その所有権をCutterに渡し、複製されたメモリを返します。</para><variablelist role="params">
<varlistentry><term><parameter>memory</parameter> :</term>
<listitem><simpara>複製されるメモリ。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>size</parameter> :</term>
<listitem><simpara>複製するバイト数。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する複製されたメモリ。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.5から</para></refsect2>
<refsect2 id="cut-take-memory" role="function" condition="since:1.0.5">
<title>cut_take_memory ()</title>
<indexterm zone="cut-take-memory" role="1.0.5"><primary>cut_take_memory</primary></indexterm>
<programlisting>const <link linkend="void"><returnvalue>void</returnvalue></link> *        cut_take_memory                     (<parameter><link linkend="void"><type>void</type></link> *memory</parameter>);</programlisting>
<para><parameter>memory</parameter>の所有権をCutterに渡し、<parameter>memory</parameter>自身を返します。<parameter>memory</parameter>は<link linkend="free"><function>free()</function></link>で破棄されます。</para><variablelist role="params">
<varlistentry><term><parameter>memory</parameter> :</term>
<listitem><simpara>Cutterが所有権を持つことになるメモリ。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する<parameter>memory</parameter>。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.5から</para></refsect2>
<refsect2 id="cut-take-printf" role="function">
<title>cut_take_printf ()</title>
<indexterm zone="cut-take-printf"><primary>cut_take_printf</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_take_printf                     (<parameter>const <link linkend="char"><type>char</type></link> *format</parameter>,
                                                         <parameter>...</parameter>);</programlisting>
<para><link linkend="printf"><function>printf()</function></link>のように文字列を整形しますが、整形された文字列はCutterが所有します。</para><variablelist role="params">
<varlistentry><term><parameter>format</parameter> :</term>
<listitem><simpara>整形文字列。<link linkend="printf"><function>printf()</function></link>のドキュメントを見てください。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>...</parameter> :</term>
<listitem><simpara>整形文字列に挿入されるパラメータ。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する整形された文字列。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="cut-take-replace" role="function" condition="since:1.0.6">
<title>cut_take_replace ()</title>
<indexterm zone="cut-take-replace" role="1.0.6"><primary>cut_take_replace</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_take_replace                    (<parameter>const <link linkend="char"><type>char</type></link> *target</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *pattern</parameter>,
                                                         <parameter>const <link linkend="char"><type>char</type></link> *replacement</parameter>);</programlisting>
<para><parameter>target</parameter>文字列中で、<parameter>pattern</parameter>にマッチする部分を<parameter>replacement</parameter>で置き換えます。</para><variablelist role="params">
<varlistentry><term><parameter>target</parameter> :</term>
<listitem><simpara>置換対象の文字列。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>pattern</parameter> :</term>
<listitem><simpara>正規表現パターン。（文字列で指定）</simpara></listitem></varlistentry>
<varlistentry><term><parameter>replacement</parameter> :</term>
<listitem><simpara>マッチした部分を置き換える文字列。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する複製された文字列。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.6から</para></refsect2>
<refsect2 id="cut-take-strdup" role="function" condition="since:1.0.5">
<title>cut_take_strdup ()</title>
<indexterm zone="cut-take-strdup" role="1.0.5"><primary>cut_take_strdup</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_take_strdup                     (<parameter>const <link linkend="char"><type>char</type></link> *string</parameter>);</programlisting>
<para><parameter>string</parameter>を複製し、その所有権をCutterに渡し、複製されたメモリを返します。</para><variablelist role="params">
<varlistentry><term><parameter>string</parameter> :</term>
<listitem><simpara>複製される文字列。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する複製された文字列。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.5から</para></refsect2>
<refsect2 id="cut-take-string" role="function">
<title>cut_take_string ()</title>
<indexterm zone="cut-take-string"><primary>cut_take_string</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_take_string                     (<parameter><link linkend="char"><type>char</type></link> *string</parameter>);</programlisting>
<para><parameter>string</parameter>の所有権をCutterに渡し、<parameter>string</parameter>それ自身を返します。</para><variablelist role="params">
<varlistentry><term><parameter>string</parameter> :</term>
<listitem><simpara>Cutterが所有権を持つことになる文字列。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する<parameter>string</parameter>。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="cut-take-string-array" role="function">
<title>cut_take_string_array ()</title>
<indexterm zone="cut-take-string-array"><primary>cut_take_string_array</primary></indexterm>
<programlisting><link linkend="char"><returnvalue>char</returnvalue></link> **             cut_take_string_array               (<parameter><link linkend="char"><type>char</type></link> **strings</parameter>);</programlisting>
<para>配列の所有権をCutterに渡し、<parameter>strings</parameter>それ自身を返します。</para><variablelist role="params">
<varlistentry><term><parameter>strings</parameter> :</term>
<listitem><simpara>Cutterが所有権を持つことになる文字列の配列。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する<parameter>strings</parameter>。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="cut-take-strndup" role="function" condition="since:1.0.5">
<title>cut_take_strndup ()</title>
<indexterm zone="cut-take-strndup" role="1.0.5"><primary>cut_take_strndup</primary></indexterm>
<programlisting>const <link linkend="char"><returnvalue>char</returnvalue></link> *        cut_take_strndup                    (<parameter>const <link linkend="char"><type>char</type></link> *string</parameter>,
                                                         <parameter><link linkend="size-t"><type>size_t</type></link> size</parameter>);</programlisting>
<para><parameter>string</parameter>の先頭<parameter>size</parameter>バイトを複製し、その所有権ををCutterに渡し、複製された文字列を返します。複製された文字列は常に<link linkend="NULL:CAPS"><literal>NULL</literal></link>終端しています。</para><variablelist role="params">
<varlistentry><term><parameter>string</parameter> :</term>
<listitem><simpara>複製される文字列。</simpara></listitem></varlistentry>
<varlistentry><term><parameter>size</parameter> :</term>
<listitem><simpara>複製するバイト数。</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>戻り値</emphasis> :</term><listitem><simpara>Cutterが所有する複製された文字列。解放しないで下さい。</simpara></listitem></varlistentry>
</variablelist><para role="since">1.0.5から</para></refsect2>

</refsect1>

</refentry>
