<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
                   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<!-- lifted from troff+man by doclifter -->
<refentry id='xenumdbman'>
<!-- '\" t -->
<!--  Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium -->

<!--  Permission is hereby granted, free of charge, to any person obtaining -->
<!--  a copy of this software and associated documentation files (the -->
<!--  "Software"), to deal in the Software without restriction, including -->
<!--  without limitation the rights to use, copy, modify, merge, publish, -->
<!--  distribute, sublicense, and/or sell copies of the Software, and to -->
<!--  permit persons to whom the Software is furnished to do so, subject to -->
<!--  the following conditions: -->

<!--  The above copyright notice and this permission notice shall be included -->
<!--  in all copies or substantial portions of the Software. -->

<!--  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -->
<!--  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -->
<!--  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -->
<!--  IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR -->
<!--  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -->
<!--  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -->
<!--  OTHER DEALINGS IN THE SOFTWARE. -->

<!--  Except as contained in this notice, the name of the X Consortium shall -->
<!--  not be used in advertising or otherwise to promote the sale, use or -->
<!--  other dealings in this Software without prior written authorization -->
<!--  from the X Consortium. -->

<!--  Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by -->
<!--  Digital Equipment Corporation -->

<!--  Portions Copyright \(co 1990, 1991 by -->
<!--  Tektronix, Inc. -->

<!--  Permission to use, copy, modify and distribute this documentation for -->
<!--  any purpose and without fee is hereby granted, provided that the above -->
<!--  copyright notice appears in all copies and that both that copyright notice -->
<!--  and this permission notice appear in all copies, and that the names of -->
<!--  Digital and Tektronix not be used in in advertising or publicity pertaining -->
<!--  to this documentation without specific, written prior permission. -->
<!--  Digital and Tektronix makes no representations about the suitability -->
<!--  of this documentation for any purpose. -->
<!--  It is provided ``as is'' without express or implied warranty. -->
<!--   -->
<!--  $XFree86: xc/doc/man/X11/XEnumDB.man,v 1.5 2003/05/29 21:48:04 herrb Exp $ -->

<!-- .na -->
<!-- FD listing suppressed (not used) -->
<!-- FN listing suppressed (not used) -->
<!-- IN listing suppressed (not used) -->
<!-- C{ listing suppressed (not used) -->
<!-- C} listing suppressed (not used) -->
<!-- Pn listing suppressed (not used) -->
<!-- hN listing suppressed (not used) -->
<!-- NT listing suppressed (not used) -->
<!-- .		\" Note End \-\- doug kraft 3/85 -->
<!-- NE listing suppressed (not used) -->
<!-- .ny0 -->
<!-- '\" t -->
<refmeta>
<refentrytitle>XrmEnumerateDatabase</refentrytitle>
<manvolnum>3X11</manvolnum>
<refmiscinfo class='date'>__xorgversion__</refmiscinfo>
<refmiscinfo class='source'>XLIB FUNCTIONS</refmiscinfo>
</refmeta>
<refnamediv id='name'>
<refname>XrmEnumerateDatabase</refname>
<refpurpose>enumerate resource database entries</refpurpose>
</refnamediv>
<!-- body begins here -->

<refsect1 id='syntax'><title>SYNTAX</title>


<informaltable pgwide='0' frame='none'>
  <tgroup cols='3' align='center'>
    <colspec colname='c1'/>
    <colspec colname='c2'/>
    <colspec colname='c3'/>
    <tbody>
      <row>
        <entry align='left'>T{
#define</entry>
        <entry align='left'>.ZN XrmEnumAllLevels</entry>
        <entry align='left'>0</entry>
      </row>
      <row>
        <entry align='left'>T{
#define</entry>
        <entry align='left'>.ZN XrmEnumOneLevel</entry>
        <entry align='left'>1</entry>
      </row>
    </tbody>
  </tgroup>
</informaltable>



<para>Bool XrmEnumerateDatabase&hairsp;(&hairsp;XrmDatabase <emphasis remap='I'>database</emphasis>&hairsp;, XrmNameList
<emphasis remap='I'>name_prefix</emphasis>&hairsp;, XrmClassList <emphasis remap='I'>class_prefix</emphasis>&hairsp;, int <emphasis remap='I'>mode</emphasis>&hairsp;, Bool
(&hairsp;*<emphasis remap='I'>proc</emphasis>&hairsp;)&hairsp;(&hairsp;)&hairsp;, XPointer <emphasis remap='I'>arg</emphasis>&hairsp;);</para> 
</refsect1>

<refsect1 id='arguments'><title>ARGUMENTS</title>
<variablelist remap='IP'>
  <varlistentry>
  <term><emphasis remap='I'>database</emphasis></term>
  <listitem>
<para>Specifies the resource database.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>name_prefix</emphasis></term>
  <listitem>
<para>Specifies the resource name prefix.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>class_prefix</emphasis></term>
  <listitem>
<para>Specifies the resource class prefix.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>mode</emphasis></term>
  <listitem>
<para>Specifies the number of levels to enumerate.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>proc</emphasis></term>
  <listitem>
<para>Specifies the procedure that is to be called for each matching entry.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>arg</emphasis></term>
  <listitem>
<para>Specifies the user-supplied argument that will be passed to the procedure.</para>
  </listitem>
  </varlistentry>
</variablelist>
</refsect1>

<refsect1 id='description'><title>DESCRIPTION</title>
<para>The
<emphasis remap='I'>&hairsp;XrmEnumerateDatabase&hairsp;</emphasis>
function calls the specified procedure for each resource in the database
that would match some completion of the given name/class resource prefix.
The order in which resources are found is implementation-dependent.
If mode is
<emphasis remap='I'>&hairsp;XrmEnumOneLevel&hairsp;</emphasis>,
a resource must match the given name/class prefix with
just a single name and class appended.  If mode is
<emphasis remap='I'>&hairsp;XrmEnumAllLevels&hairsp;</emphasis>,
the resource must match the given name/class prefix with one or more names and
classes appended.
If the procedure returns
<emphasis remap='I'>&hairsp;True&hairsp;</emphasis>,
the enumeration terminates and the function returns
<emphasis remap='I'>&hairsp;True&hairsp;</emphasis>.
If the procedure always returns
<emphasis remap='I'>&hairsp;False&hairsp;</emphasis>,
all matching resources are enumerated and the function returns
<emphasis remap='I'>&hairsp;False&hairsp;</emphasis>.</para>

<para>The procedure is called with the following arguments:</para>

<!--  Start marker code here -->
<literallayout remap='.nf'>
<!-- .0D  0 -->

<!-- .ps \n(PS -->
<!-- .if \n(VS&gt;=40 .vs \n(VSu -->
<!-- .if \n(VS&lt;=39 .vs \n(VSp -->
<!-- .TA .5i 3i -->
<!-- .ta .5i 3i -->
(*<emphasis remap='I'>proc</emphasis>&hairsp;)(&hairsp;<emphasis remap='I'>database</emphasis>, <emphasis remap='I'>bindings</emphasis>, <emphasis remap='I'>quarks</emphasis>, <emphasis remap='I'>type</emphasis>, <emphasis remap='I'>value</emphasis>, <emphasis remap='I'>arg</emphasis>&hairsp;)
	XrmDatabase *<emphasis remap='I'>database</emphasis>&hairsp;;
	XrmBindingList <emphasis remap='I'>bindings</emphasis>&hairsp;;
	XrmQuarkList <emphasis remap='I'>quarks</emphasis>&hairsp;;
	XrmRepresentation *<emphasis remap='I'>type</emphasis>&hairsp;;
	XrmValue *<emphasis remap='I'>value</emphasis>&hairsp;;
	XPointer <emphasis remap='I'>arg</emphasis>&hairsp;;
<!-- .ce 0  IGNORED -->
<!-- .in \n(OIu  IGNORED -->

</literallayout> <!-- .fi -->
<!--  End marker code here -->

<para>The bindings and quarks lists are terminated by
<emphasis remap='I'>&hairsp;NULLQUARK&hairsp;</emphasis>.
Note that pointers
to the database and type are passed, but these values should not be modified.</para>

<para>The procedure must not modify the database.
If Xlib has been initialized for threads, the procedure is called with
the database locked and the result of a call by the procedure to any
Xlib function using the same database is not defined.</para>
</refsect1>

<refsect1 id='see_also'><title>SEE ALSO</title>
<para>XrmGetResource(3X11),
XrmInitialize(3X11),
XrmPutResource(3X11)
<!-- .br -->
<userinput>Xlib - C Language X Interface</userinput></para>
</refsect1>
</refentry>

