home *** CD-ROM | disk | FTP | other *** search
- <HTML>
- <HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1">
- <TITLE>XrmGetResource(X3xlib) X Version 11 (Release 6.1) </TITLE>
- <SCRIPT LANGUAGE=JavaScript>
- <!-- comment for old browsers
- var Contents = "/man/html.X3xlib/CONTENTS.html"
- var PrintSequence = "/man/html.X3xlib/CONTENTS.html"
- if ( parent.RightHistory != null ) parent.RightHistory(document.URL)
- // end of comment -->
- </SCRIPT>
- </HEAD>
- <BODY>
- <H1>XrmGetResource(X3xlib) X Version 11 (Release 6.1)</H1>
- <HR>
- <B>XrmGetResource --
- <!--Meta NM "XrmGetResource"-->
- retrieve database resources and search lists
- </B>
- <!--Meta DN "retrieve database resources and search lists"-->
- <P>
- <H2>Synopsis</H2>
- <PRE> Bool XrmGetResource(database, str_name, str_class, str_type_return,
- value_return)
- XrmDatabase database;
- char *str_name;
- char *str_class;
- char **str_type_return;
- XrmValue *value_return;
- <P>
- Bool XrmQGetResource(database, quark_name, quark_class, quark_type_return,
- value_return)
- XrmDatabase database;
- XrmNameList quark_name;
- XrmClassList quark_class;
- XrmRepresentation *quark_type_return;
- XrmValue *value_return;
- <P>
- typedef XrmHashTable *XrmSearchList;
- <P>
- Bool XrmQGetSearchList(database, names, classes, list_return, list_length)
- XrmDatabase database;
- XrmNameList names;
- XrmClassList classes;
- XrmSearchList list_return;
- int list_length;
- <P>
- Bool XrmQGetSearchResource(list, name, class, type_return, value_return)
- XrmSearchList list;
- XrmName name;
- XrmClass class;
- XrmRepresentation *type_return;
- XrmValue *value_return;
- </PRE>
- <H3>Arguments</H3>
- <DL COMPACT>
- <P><DT><B><I>class</I></B><DD>
- Specifies the resource class.
- <P><DT><B><I>classes</I></B><DD>
- Specifies a list of resource classes.
- <P><DT><B><I>database</I></B><DD>
- Specifies the database that is to be used.
- <P><DT><B><I>list</I></B><DD>
- Specifies the search list returned by <B>XrmQGetSearchList</B>.
- <P><DT><B><I>list_length</I></B><DD>
- Specifies the number of entries (not the byte size)
- allocated for <B><I>list_return</I></B>.
- <P><DT><B><I>list_return</I></B><DD>
- Returns a search list for further use.
- <P><DT><B><I>name</I></B><DD>
- Specifies the resource name.
- <P><DT><B><I>names</I></B><DD>
- Specifies a list of resource names.
- <P><DT><B><I>quark_class</I></B><DD>
- Specifies the fully qualified class of the value being retrieved (as a quark).
- <P><DT><B><I>quark_name</I></B><DD>
- Specifies the fully qualified name of the value being retrieved (as a quark).
- <P><DT><B><I>quark_type_return</I></B><DD>
- Returns the representation type of the destination (as a quark).
- <P><DT><B><I>str_class</I></B><DD>
- Specifies the fully qualified class of the value being retrieved (as a string).
- <P><DT><B><I>str_name</I></B><DD>
- Specifies the fully qualified name of the value being retrieved (as a string).
- <P><DT><B><I>str_type_return</I></B><DD>
- Returns the representation type of the destination (as a string).
- <P><DT><B><I>type_return</I></B><DD>
- Returns data representation type.
- <P><DT><B><I>value_return</I></B><DD>
- Returns the value in the database.
- </DL>
- <H2>Description</H2>
- The <B>XrmGetResource</B> and <B>XrmQGetResource</B>
- functions retrieve a resource from the specified database.
- Both take a fully qualified <B><I>name</I></B>/<B><I>class</I></B> pair,
- a destination resource representation, and the address of a value
- (size/address pair).
- The value and returned type point into database memory;
- therefore, you must not modify the data.
- <P>
- The database only frees or overwrites entries on
- <B>XrmPutResource</B>, <B>XrmQPutResource</B>, or
- <B>XrmMergeDatabases</B>.
- A client that is not storing new values into the database or
- is not merging the database should be safe using the address
- passed back at any time until it exits.
- If a resource was found, both <B>XrmGetResource</B> and
- <B>XrmQGetResource</B> return <B>True</B>;
- otherwise, they return <B>False</B>.
- <P>
- The <B>XrmQGetSearchList</B> function takes a list of names and
- classes and returns a list of database levels where a match might occur.
- The returned list is in best-to-worst order and uses the same
- algorithm as <B>XrmGetResource</B> for determining precedence.
- If <B><I>list_return</I></B> was large enough for the search list,
- <B>XrmQGetSearchList</B> returns <B>True</B>;
- otherwise, it returns <B>False</B>.
- <P>
- The size of the search list that the caller must allocate is
- dependent upon the number of levels and wildcards in the
- resource specifiers that are stored in the database.
- The worst case length is
- 3^<B><I>n</I></B>,
- where <B><I>n</I></B> is the number of name or
- class components in names or classes.
- <P>
- When using <B>XrmQGetSearchList</B> followed by multiple
- probes for resources with a common name and class prefix,
- only the common prefix should be specified in the name
- and class list to <B>XrmQGetSearchList</B>.
- <P>
- The <B>XrmQGetSearchResource</B> function searches
- the specified database levels for the resource
- that is fully identified by the specified name and class.
- The search stops with the first match.
- <B>XrmQGetSearchResource</B> returns <B>True</B>
- if the resource was found;
- otherwise, it returns <B>False</B>.
- <P>
- A call to <B>XrmQGetSearchList</B> with a name
- and class list containing all but the last component
- of a resource name followed by a call to
- <B>XrmQGetSearchResource</B> with the last component
- name and class returns the same database entry as
- <B>XrmGetResource</B> and <B>XrmQGetResource</B>
- with the fully qualified name and class.
- <H3>Matching rules</H3>
- The algorithm for determining which resource database entry
- matches a given query is the heart of the resource manager.
- All queries must fully specify the name and class of the desired
- resource (use of the characters ``*'' and ``?'' are not permitted).
- The library supports up to 100 components in a full name or class.
- Resources are stored in the database with only partially specified
- names and classes, using pattern matching constructs.
- An asterisk (*) is a loose binding and is used to represent
- any number of intervening components, including none.
- A period (.) is a tight binding and is used to separate
- immediately adjacent components.
- A question mark (?) is used to match any single component name or class.
- A database entry cannot end in a loose binding;
- the final component (which cannot be the character ``?'') must be specified.
- The lookup algorithm searches the database for the entry that most
- closely matches (is most specific for) the full name and class being queried.
- When more than one database entry matches the full name and class,
- precedence rules are used to select just one.
- <P>
- The full name and class are scanned from left to right (from highest
- level in the hierarchy to lowest), one component at a time.
- At each level, the corresponding component and/or binding of each
- matching entry is determined, and these matching components and
- bindings are compared according to precedence rules.
- Each of the rules is applied at each level before moving to the next level,
- until a rule selects a single entry over all others.
- The rules, in order of precedence, are:
- <OL>
- <P><LI>
- An entry that contains a matching component
- (whether <B><I>name</I></B>, <B><I>class</I></B>, or the character ``?'')
- takes precedence over entries that elide the level (that is, entries
- that match the level in a loose binding).
- <P><LI>
- An entry with a matching name takes precedence over both entries
- with a matching class and entries that match using the character ``?''.
- An entry with a matching class takes precedence over
- entries that match using the character ``?''.
- <P><LI>
- An entry preceded by a tight binding takes precedence over
- entries preceded by a loose binding.
- </OL>
- <H2>References</H2>
- <A HREF=/cgi-bin/man/man?XrmInitialize+X3xlib><B>XrmInitialize</B>(X3xlib)</A>,
- <A HREF=/cgi-bin/man/man?XrmMergeDatabases+X3xlib><B>XrmMergeDatabases</B>(X3xlib)</A>,
- <A HREF=/cgi-bin/man/man?XrmPutResource+X3xlib><B>XrmPutResource</B>(X3xlib)</A>,
- <A HREF=/cgi-bin/man/man?XrmUniqueQuark+X3xlib><B>XrmUniqueQuark</B>(X3xlib)</A>
- <BR>
- <BR>
- <I>Xlib - C Language X Interface</I>
- <P>
- <!-- NAVBEGIN -->
- <HR>
- <I>
- <SMALL>
- 30 January 1998
- <BR>
- <A HREF=/man/html.X3xlib/COPYRIGHT.html>© 1998 The Santa Cruz Operation, Inc. All rights reserved.</A>
- <BR>
- </SMALL>
- </I>
- <!-- NAVEND -->
- </BODY></HTML>
-