📄 glib-automatic-string-completion.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"><title>Automatic String Completion</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"><link rel="start" href="index.html" title="GLib Reference Manual"><link rel="up" href="glib-utilities.html" title="GLib Utilities"><link rel="prev" href="glib-Lexical-Scanner.html" title="Lexical Scanner"><link rel="next" href="glib-Timers.html" title="Timers"><meta name="generator" content="GTK-Doc V1.9 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="chapter" href="glib.html" title="GLib Overview"><link rel="chapter" href="glib-fundamentals.html" title="GLib Fundamentals"><link rel="chapter" href="glib-core.html" title="GLib Core Application Support"><link rel="chapter" href="glib-utilities.html" title="GLib Utilities"><link rel="chapter" href="glib-data-types.html" title="GLib Data Types"><link rel="chapter" href="tools.html" title="GLib Tools"><link rel="index" href="ix01.html" title="Index"><link rel="index" href="ix02.html" title="Index of deprecated symbols"><link rel="index" href="ix03.html" title="Index of new symbols in 2.2"><link rel="index" href="ix04.html" title="Index of new symbols in 2.4"><link rel="index" href="ix05.html" title="Index of new symbols in 2.6"><link rel="index" href="ix06.html" title="Index of new symbols in 2.8"><link rel="index" href="ix07.html" title="Index of new symbols in 2.10"><link rel="index" href="ix08.html" title="Index of new symbols in 2.12"><link rel="index" href="ix09.html" title="Index of new symbols in 2.14"><link rel="index" href="ix10.html" title="Index of new symbols in 2.16"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="glib-Lexical-Scanner.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="glib-utilities.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">GLib Reference Manual</th><td><a accesskey="n" href="glib-Timers.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr><tr><td colspan="5" class="shortcuts"><nobr><a href="#id3091620" class="shortcut">Top</a>  |  <a href="#id3091946" class="shortcut">Description</a></nobr></td></tr></table><div class="refentry" lang="en"><a name="glib-Automatic-String-Completion"></a><div class="titlepage"></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><a name="id3091620"></a><span class="refentrytitle">Automatic String Completion</span></h2><p>Automatic String Completion — support for automatic completion using a group of target strings</p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis">#include <glib.h> <a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a>;<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a>* <a class="link" href="glib-Automatic-String-Completion.html#g-completion-new">g_completion_new</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletionFunc">GCompletionFunc</a> func);<a class="link" href="glib-Basic-Types.html#gchar">gchar</a>* (<a class="link" href="glib-Automatic-String-Completion.html#GCompletionFunc">*GCompletionFunc</a>) (<a class="link" href="glib-Basic-Types.html#gpointer">gpointer</a> );void <a class="link" href="glib-Automatic-String-Completion.html#g-completion-add-items">g_completion_add_items</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a> *cmp, <a class="link" href="glib-Doubly-Linked-Lists.html#GList">GList</a> *items);void <a class="link" href="glib-Automatic-String-Completion.html#g-completion-remove-items">g_completion_remove_items</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a> *cmp, <a class="link" href="glib-Doubly-Linked-Lists.html#GList">GList</a> *items);void <a class="link" href="glib-Automatic-String-Completion.html#g-completion-clear-items">g_completion_clear_items</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a> *cmp);<a class="link" href="glib-Doubly-Linked-Lists.html#GList">GList</a>* <a class="link" href="glib-Automatic-String-Completion.html#g-completion-complete">g_completion_complete</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a> *cmp, const <a class="link" href="glib-Basic-Types.html#gchar">gchar</a> *prefix, <a class="link" href="glib-Basic-Types.html#gchar">gchar</a> **new_prefix);<a class="link" href="glib-Doubly-Linked-Lists.html#GList">GList</a>* <a class="link" href="glib-Automatic-String-Completion.html#g-completion-complete-utf8">g_completion_complete_utf8</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a> *cmp, const <a class="link" href="glib-Basic-Types.html#gchar">gchar</a> *prefix, <a class="link" href="glib-Basic-Types.html#gchar">gchar</a> **new_prefix);void <a class="link" href="glib-Automatic-String-Completion.html#g-completion-set-compare">g_completion_set_compare</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a> *cmp, <a class="link" href="glib-Automatic-String-Completion.html#GCompletionStrncmpFunc">GCompletionStrncmpFunc</a> strncmp_func);<a class="link" href="glib-Basic-Types.html#gint">gint</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletionStrncmpFunc">*GCompletionStrncmpFunc</a>) (const <a class="link" href="glib-Basic-Types.html#gchar">gchar</a> *s1, const <a class="link" href="glib-Basic-Types.html#gchar">gchar</a> *s2, <a class="link" href="glib-Basic-Types.html#gsize">gsize</a> n);void <a class="link" href="glib-Automatic-String-Completion.html#g-completion-free">g_completion_free</a> (<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a> *cmp);</pre></div><div class="refsect1" lang="en"><a name="id3091946"></a><h2>Description</h2><p><a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a> provides support for automatic completion of a string usingany group of target strings. It is typically used for file name completionas is common in many UNIX shells.</p><p>A <a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a> is created using <a class="link" href="glib-Automatic-String-Completion.html#g-completion-new"><code class="function">g_completion_new()</code></a>.Target items are added and removed with<a class="link" href="glib-Automatic-String-Completion.html#g-completion-add-items"><code class="function">g_completion_add_items()</code></a>, <a class="link" href="glib-Automatic-String-Completion.html#g-completion-remove-items"><code class="function">g_completion_remove_items()</code></a> and<a class="link" href="glib-Automatic-String-Completion.html#g-completion-clear-items"><code class="function">g_completion_clear_items()</code></a>.A completion attempt is requested with <a class="link" href="glib-Automatic-String-Completion.html#g-completion-complete"><code class="function">g_completion_complete()</code></a> or <a class="link" href="glib-Automatic-String-Completion.html#g-completion-complete-utf8"><code class="function">g_completion_complete_utf8()</code></a>.When no longer needed, the <a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a> is freed with <a class="link" href="glib-Automatic-String-Completion.html#g-completion-free"><code class="function">g_completion_free()</code></a>.</p><p>Items in the completion can be simple strings (e.g. filenames),or pointers to arbitrary data structures. If data structures are usedyou must provide a <a class="link" href="glib-Automatic-String-Completion.html#GCompletionFunc"><span class="type">GCompletionFunc</span></a> in <a class="link" href="glib-Automatic-String-Completion.html#g-completion-new"><code class="function">g_completion_new()</code></a>,which retrieves the item's string from the data structure.You can change the way in which strings are compared by settinga different <a class="link" href="glib-Automatic-String-Completion.html#GCompletionStrncmpFunc"><span class="type">GCompletionStrncmpFunc</span></a> in <a class="link" href="glib-Automatic-String-Completion.html#g-completion-set-compare"><code class="function">g_completion_set_compare()</code></a>.</p></div><div class="refsect1" lang="en"><a name="id3092115"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id3092125"></a><h3><a name="GCompletion"></a>GCompletion</h3><a class="indexterm" name="id3092137"></a><pre class="programlisting">typedef struct { GList* items; GCompletionFunc func; gchar* prefix; GList* cache; GCompletionStrncmpFunc strncmp_func;} GCompletion;</pre><p>The data structure used for automatic completion.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><a class="link" href="glib-Doubly-Linked-Lists.html#GList">GList</a> *<em class="structfield"><code>items</code></em>;</span></p></td><td>list of target items (strings or data structures).</td></tr><tr><td><p><span class="term"><a class="link" href="glib-Automatic-String-Completion.html#GCompletionFunc">GCompletionFunc</a> <em class="structfield"><code>func</code></em>;</span></p></td><td>function which is called to get the string associated with a target item. It is <a class="link" href="glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the target items are strings.</td></tr><tr><td><p><span class="term"><a class="link" href="glib-Basic-Types.html#gchar">gchar</a> *<em class="structfield"><code>prefix</code></em>;</span></p></td><td>the last prefix passed to <a class="link" href="glib-Automatic-String-Completion.html#g-completion-complete"><code class="function">g_completion_complete()</code></a> or <a class="link" href="glib-Automatic-String-Completion.html#g-completion-complete-utf8"><code class="function">g_completion_complete_utf8()</code></a>.</td></tr><tr><td><p><span class="term"><a class="link" href="glib-Doubly-Linked-Lists.html#GList">GList</a> *<em class="structfield"><code>cache</code></em>;</span></p></td><td>the list of items which begin with <em class="parameter"><code>prefix</code></em>.</td></tr><tr><td><p><span class="term"><a class="link" href="glib-Automatic-String-Completion.html#GCompletionStrncmpFunc">GCompletionStrncmpFunc</a> <em class="structfield"><code>strncmp_func</code></em>;</span></p></td><td>The function to use when comparing strings. Use <a class="link" href="glib-Automatic-String-Completion.html#g-completion-set-compare"><code class="function">g_completion_set_compare()</code></a> to modify this function.</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id3092315"></a><h3><a name="g-completion-new"></a>g_completion_new ()</h3><a class="indexterm" name="id3092327"></a><pre class="programlisting"><a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a>* g_completion_new (<a class="link" href="glib-Automatic-String-Completion.html#GCompletionFunc">GCompletionFunc</a> func);</pre><p>Creates a new <a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a>.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td><td>the function to be called to return the string representing an itemin the <a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a>, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if strings are going to be used as the<a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a> items.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the new <a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a>.</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id3092428"></a><h3><a name="GCompletionFunc"></a>GCompletionFunc ()</h3><a class="indexterm" name="id3092441"></a><pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gchar">gchar</a>* (*GCompletionFunc) (<a class="link" href="glib-Basic-Types.html#gpointer">gpointer</a> );</pre><p>Specifies the type of the function passed to <a class="link" href="glib-Automatic-String-Completion.html#g-completion-new"><code class="function">g_completion_new()</code></a>.It should return the string corresponding to the given target item.This is used when you use data structures as <a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a> items.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><em class="parameter"><code>Param1</code></em> :</span></p></td><td>the completion item.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the string corresponding to the item.</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id3092520"></a><h3><a name="g-completion-add-items"></a>g_completion_add_items ()</h3><a class="indexterm" name="id3092533"></a><pre class="programlisting">void g_completion_add_items (<a class="link" href="glib-Automatic-String-Completion.html#GCompletion">GCompletion</a> *cmp, <a class="link" href="glib-Doubly-Linked-Lists.html#GList">GList</a> *items);</pre><p>Adds items to the <a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a>.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cmp</code></em> :</span></p></td><td>the <a class="link" href="glib-Automatic-String-Completion.html#GCompletion"><span class="type">GCompletion</span></a>.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>items</code></em> :</span></p></td><td>the list of items to add.</td></tr></tbody>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -