The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
	<TITLE></TITLE>
	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.1  (Win32)">
	<META NAME="AUTHOR" CONTENT="Nathan Goodman">
	<META NAME="CREATED" CONTENT="20041204;8294237">
	<META NAME="CHANGEDBY" CONTENT="Nathan Goodman">
	<META NAME="CHANGED" CONTENT="20041225;8525287">
	<STYLE>
	<!--
		@page { size: 8.5in 11in }
		TD P { margin-bottom: 0.08in; font-size: 10pt; line-height: 0.14in }
		H1 { margin-top: 0.22in; margin-bottom: 0.08in }
		H1.western { font-family: "Times New Roman", serif; font-size: 10pt }
		P { margin-bottom: 0.14in; font-size: 10pt; line-height: 0.14in }
		P.code-western { margin-bottom: 0in; font-family: "Courier New", monospace; font-size: 10pt; line-height: 100% }
		P.code-cjk { margin-bottom: 0in; font-size: 10pt; line-height: 100% }
		P.code-ctl { margin-bottom: 0in; font-size: 10pt; line-height: 100% }
		P.row-heading-western { font-size: 10pt; font-weight: bold }
		P.row-heading-cjk { font-size: 10pt }
		P.row-heading-ctl { font-size: 10pt }
		TH P { margin-bottom: 0.08in; font-size: 10pt; line-height: 0.14in }
	-->
	</STYLE>
</HEAD>
<BODY LANG="en-US" DIR="LTR">
<H1 CLASS="western">NAME</H1>
<P STYLE="margin-bottom: 0.2in">Class::AutoDB::Collection - Schema
information for an AutoDB database</P>
<H1 CLASS="western">SYNOPSIS</H1>
<P STYLE="margin-bottom: 0.2in">This a major subsystem of
Class::AutoDB which keeps track of the classes and collections being
managed by the AutoDB system. Most users will never use this class
explicitly. The synopsis show approximately how the class is used by
AutoDB itself. 
</P>
<PRE>use Class::AutoDB;
use Class::AutoDB::Registry;
my $autodb=new Class::AutoDB(-database=&gt;'test');
my $registry=new Class::AutoDB::Registry(-autodb=&gt;$autodb);
$registry-&gt;register
  (-class=&gt;'Person',
   -collection=&gt;'Person',
   -keys=&gt;qq(name string, sex string, friends list(string)));
@registrations=$registry-&gt;registrations;# all registrations
@collections=$registry-&gt;collections;    # all collections

confess &quot;Current registry inconsistent with saved one&quot; 
  unless $registry-&gt;is_consistent;
if ($registry-&gt;is_different &amp;&amp; !$registry-&gt;is_sub {
                                      # current registry expands 
                                      #   saved registry
  $registry-&gt;alter;                   # SQL statements to change
                                      #   database structure to
                                      #   reflect changes
}
$registry-&gt;put;                       # store in database for next time

# Other commonly used methods
$registry-&gt;create;                    # SQL statements to create database
$registry-&gt;drop;                      # SQL statements to drop database</PRE><H1 CLASS="western">
DESCRIPTION</H1>
<P>This class maintains the schema information for an AutoDB
database. There can only be one registry per database and you should
only have one registry object in your program. The registry object
may contain two versions of the registry. 
</P>
<OL>
	<LI><P>An in-memory version generated by calls to the 'register'
	method. This method is usually called automatically when AutoClass
	proceses <FONT FACE="Courier New, monospace">%AUTO_PERSISTENCE</FONT>
	declarations from classes as they are loaded. The 'register' method
	can also be called explicitly at runtime.</P>
	<LI><P>2. A version saved in the database. The database version is
	supposed to reflect the real structure of the AutoDB database.
	(Someday we will provide a method for confirming this.)</P>
</OL>
<P>Before the AutoDB mechanism can run, it must ensure that the
in-memory version of the registry is self-consistent, and that the
in-memory and database versions are mutually consistent. (It doesn't
have to check the database version for self-consistency since the
software won't store an inconsistent version.) The in-memory version
is inconsistent if the same search key is registered for a collection
with different data types. The in-memory and database versions are
inconsistent if the combination has this property.</P>
<P>The in-memory and database versions of the registry can be
<I>different but consistent</I> if the running program registers only
a subset of the collections that are known to the system, or
registers a subset of the search keys for a collection. This is a
very common case and requires no special action. 
</P>
<P>The in-memory and database versions can also be <I>different but
consistent</I> if the running program adds new collections or new
search keys to an existing collection. In this case, the database
version of the registry and the database itself must be updated to
reflect the new information. Methods are provided to effect these
changes.</P>
<P>This class <I>talks to the database</I>.</P>
<a name="bugs_and_wishlist"></a>
<H1 CLASS="western">BUGS and WISH-LIST</H1>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=37*>
	<COL WIDTH=130*>
	<COL WIDTH=89*>
	<THEAD>
		<TR VALIGN=TOP>
			<TH WIDTH=14%>
				<P><FONT SIZE=2>Name</FONT></P>
			</TH>
			<TH WIDTH=51%>
				<P><FONT SIZE=2>Description</FONT></P>
			</TH>
			<TH WIDTH=35%>
				<P><FONT SIZE=2>Priority/When</FONT></P>
			</TH>
		</TR>
	</THEAD>
	<TBODY>
		<TR>
			<TD WIDTH=14%>
				<P CLASS="row-heading-western">Transients</P>
			</TD>
			<TD WIDTH=51%>
				<P>Specify transient registry attributes that are not stored. 
				</P>
			</TD>
			<TD WIDTH=35%>
				<P>Useful. This release or next. After transient implemented in
				Serialize</P>
			</TD>
		</TR>
	</TBODY>
</TABLE>
<a name="methods_and_functions"></a>
<H1 CLASS="western">METHODS and FUNCTIONS - Initialization</H1>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=38*>
	<COL WIDTH=61*>
	<COL WIDTH=157*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Title</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P><FONT FACE="Courier New, monospace">new</FONT></P>
		</TD>
	</TR>
	<TR>
		<TD ROWSPAN=2 WIDTH=15%>
			<P CLASS="row-heading-western">Usage</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>my $registry=new Class::AutoDB::Registry;</PRE>
		</TD>
	</TR>
	<TR>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>my $saved_registry=new Class::AutoDB::Registry
      (-autodb=&gt;$autodb, -object_table=&gt;'_AutoDB');</PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Constructor.</P>
		</TD>
	</TR>
	<TR>
		<TD ROWSPAN=2 WIDTH=15%>
			<P CLASS="row-heading-western">Args</P>
		</TD>
		<TD WIDTH=24%>
			<P CLASS="code-western">-autodb</P>
		</TD>
		<TD WIDTH=61%>
			<P>Class::AutoDB object for this database. Must already be
			connected.</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=24%>
			<P CLASS="code-western">-object_table</P>
		</TD>
		<TD WIDTH=61%>
			<P>Name of the database table used to store AutoDB objects.
			Default _AutoDB. All objects, including the registry, are stored
			in this table.</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Returns</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Registry object</P>
		</TD>
	</TR>
</TABLE>
<H1 CLASS="western">METHODS and FUNCTIONS &ndash; Simple Attributes</H1>
<P>These are methods for getting and setting the values of simple
attributes. Methods have the same name as the attribute. Some of
these should be read-only (more precisely, should only be written by
code internal to the object), but this is not enforced. 
</P>
<P>To get the value of attribute <FONT FACE="Courier New, monospace">xxx</FONT>,
just say 
</P>
<P STYLE="margin-left: 0.29in"><FONT FACE="Courier New, monospace">$xxx=$object-&gt;xxx;
</FONT>
</P>
<P>To set an attribute, say</P>
<P STYLE="margin-left: 0.29in"><FONT FACE="Courier New, monospace">$object-&gt;xxx($new_value);
</FONT>
</P>
<P>To clear it, say 
</P>
<P STYLE="margin-left: 0.31in"><FONT FACE="Courier New, monospace">$object-&gt;xxx(undef);</FONT></P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=39*>
	<COL WIDTH=217*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Attribute</P>
		</TD>
		<TD WIDTH=85% VALIGN=TOP>
			<PRE><FONT FACE="Courier New, monospace">autodb</FONT></PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD WIDTH=85% VALIGN=TOP>
			<P>Class::AutoDB object connected to database</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Access</P>
		</TD>
		<TD WIDTH=85% VALIGN=TOP>
			<P>Read-write</P>
		</TD>
	</TR>
</TABLE>
<P STYLE="margin-bottom: 0in; line-height: 100%"><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=39*>
	<COL WIDTH=217*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Attribute</P>
		</TD>
		<TD WIDTH=85% VALIGN=TOP>
			<PRE><FONT FACE="Courier New, monospace">oid</FONT></PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD WIDTH=85% VALIGN=TOP>
			<P>Object id of saved registry</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Access</P>
		</TD>
		<TD WIDTH=85% VALIGN=TOP>
			<P>Read-only. No mutator provided even for internal use</P>
		</TD>
	</TR>
</TABLE>
<H1 CLASS="western">METHODS and FUNCTIONS &ndash; Manage
registrations and collections</H1>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=37*>
	<COL WIDTH=62*>
	<COL WIDTH=157*>
	<TR>
		<TD WIDTH=14%>
			<P CLASS="row-heading-western">Title</P>
		</TD>
		<TD COLSPAN=2 WIDTH=86% VALIGN=TOP>
			<PRE><FONT FACE="Courier New, monospace">register</FONT></PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=14%>
			<P CLASS="row-heading-western">Usage</P>
		</TD>
		<TD COLSPAN=2 WIDTH=86% VALIGN=TOP>
			<PRE>$registry-&gt;register
   (-class=&gt;'Person',
    -collection=&gt;'Person',
    -keys=&gt;qq(name string, dob integer, 
              significant_other object,friends list(object)),
    -transients=&gt;[qw(age)],
    -auto_gets=&gt;[qw(significant_other)]);</PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=14%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD COLSPAN=2 WIDTH=86% VALIGN=TOP>
			<P>Register a collection with the system</P>
		</TD>
	</TR>
	<TR>
		<TD ROWSPAN=6 WIDTH=14%>
			<P CLASS="row-heading-western">Args</P>
		</TD>
		<TD WIDTH=24%>
			<P CLASS="code-western">-class</P>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P>Name of class being registered</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=24%>
			<P CLASS="code-western">-collection</P>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P>Name of collection being registered or ARRAY ref of names</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=24%>
			<P CLASS="code-western">-collections</P>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P>Synonym for -collection</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=24%>
			<P CLASS="code-western">-keys</P>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P>Search keys for collection.</P>
			<P>Can be string of comma separated attribute and data type pairs,
			or ARRAY ref of attributes in which case the type is assumed to be
			'string'. 
			</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=24%>
			<P CLASS="code-western">-transients</P>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P>ARRAY ref of attributes that will not be stored.</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=24%>
			<P CLASS="code-western">-auto_gets</P>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P>ARRAY ref of attributes that should be automatically retrieved
			when this object is retrieved.</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=14%>
			<P CLASS="row-heading-western">Returns</P>
		</TD>
		<TD COLSPAN=2 WIDTH=86% VALIGN=TOP>
			<H1 CLASS="western" STYLE="font-weight: medium">Nothing</H1>
		</TD>
	</TR>
	<TR>
		<TD ROWSPAN=2 WIDTH=14%>
			<P CLASS="row-heading-western">Notes</P>
		</TD>
		<TD COLSPAN=2 WIDTH=86% VALIGN=TOP>
			<H1 CLASS="western" STYLE="font-weight: medium">The arguments are
			passed to <FONT FACE="Courier New, monospace">Class::AutoDB::Registration::new</FONT>.
						</H1>
		</TD>
	</TR>
	<TR>
		<TD COLSPAN=2 WIDTH=86% VALIGN=TOP>
			<P>The keys argument is a HASH ref of attribute, data type pairs.
			Each attribute is generally an attribute defined in the AutoClass
			@AUTO_ATTRIBUTES or @OTHER_ATTRIBUTES variables. (echnically, it's
			the name of a method that can be called with no arguments. The
			value of an attribute must be a scalar, an object reference, or an
			ARRAY (or list) of such values.</P>
			<P>The data type can be 'string', 'integer', 'float', 'object', or
			the phrase list(&lt;data type&gt;), eg, 'list(integer)'. These can
			be abbreviated. The types 'object' and 'list(object)' only work
			for objects whose persistence is managed by AutoDB.</P>
			<P>The 'keys' parameter can also be an array of attribute names,
			eg,</P>
			<P><FONT FACE="Courier New, monospace">-keys=&gt;[qw(name sex)]</FONT></P>
			<P STYLE="font-weight: medium">in which case the data type of each
			attribute is assumed to be 'string'. This works in many cases even
			if the data is really numeric as discussed in the Persistence
			Model section of the Class::AutoDB man page.</P>
		</TD>
	</TR>
</TABLE>
<P><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=38*>
	<COL WIDTH=63*>
	<COL WIDTH=155*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Title</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE><FONT FACE="Courier New, monospace">collections</FONT></PRE>
		</TD>
	</TR>
	<TR>
		<TD ROWSPAN=2 WIDTH=15%>
			<P CLASS="row-heading-western">Usage</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P CLASS="code-western">my @collections=$registry-&gt;collections;</P>
		</TD>
	</TR>
	<TR>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P CLASS="code-western">my $collections=$registry-&gt;collections;</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Return all collections defined in the registry</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Args</P>
		</TD>
		<TD WIDTH=25%>
			<PRE>None</PRE>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P><BR>
			</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Returns</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>ARRAY or ARRAY ref of Class::AutoDB::Collection objects
			depending on context</P>
		</TD>
	</TR>
</TABLE>
<P><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=38*>
	<COL WIDTH=63*>
	<COL WIDTH=155*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Title</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE><FONT FACE="Courier New, monospace">collection</FONT></PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Usage</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P CLASS="code-western">my
			$collection=$registry-&gt;collection($name);</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Lookup a collection given its name</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Args</P>
		</TD>
		<TD WIDTH=25%>
			<PRE>$name</PRE>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P>Name of collection to be looked up. Can also be a collection
			object, in which case the collection name is used.</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Returns</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Class::AutoDB::Collection object</P>
		</TD>
	</TR>
</TABLE>
<P><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=38*>
	<COL WIDTH=63*>
	<COL WIDTH=155*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Title</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE><FONT FACE="Courier New, monospace">merge</FONT></PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Usage</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P CLASS="code-western">$registry-&gt;merge</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Merge changes from current registry into saved version</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Args</P>
		</TD>
		<TD WIDTH=25%>
			<PRE>none</PRE>
		</TD>
		<TD WIDTH=61% VALIGN=TOP>
			<P><BR>
			</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Returns</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Nothing</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Notes</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>If the saved registry does not contain a collection of the same
			name, the new collection is simply added to the registry. If the
			registry contains a collection of the same name, the information
			from the new collection is merged with the existing collection. It
			is an error if the merged information is not consistent.</P>
		</TD>
	</TR>
</TABLE>
<H1 CLASS="western">METHODS and FUNCTIONS &ndash; Manage database
schema 
</H1>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=38*>
	<COL WIDTH=61*>
	<COL WIDTH=157*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Title</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>schema</PRE>
		</TD>
	</TR>
	<TR>
		<TD ROWSPAN=4 WIDTH=15%>
			<P CLASS="row-heading-western">Usage</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>my @sql=$registry-&gt;schema</PRE>
		</TD>
	</TR>
	<TR>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>my $sql=$registry-&gt;schema</PRE>
		</TD>
	</TR>
	<TR>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>my @sql=$registry-&gt;schema($what)</PRE>
		</TD>
	</TR>
	<TR>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>my $sql=$registry-&gt;schema($what)</PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Returns SQL statements needed to create, drop, or alter the
			registry. Does not touch the database</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Args</P>
		</TD>
		<TD WIDTH=24%>
			<PRE>$what</PRE>
		</TD>
		<TD WIDTH=61%>
			<P>String indicating what schema operation is desired:</P>
			<P>create &ndash; default<BR>drop<BR>alter</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Returns</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>ARRAY or ARRAY ref depending on context. Each element of the
			results is a single SQL statement as a string</P>
		</TD>
	</TR>
</TABLE>
<H1 CLASS="western">METHODS and FUNCTIONS &ndash; Read and write
registry</H1>
<P>These methods read or write the registry from the actual database.
The registry is should already be connected to the database. 
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=38*>
	<COL WIDTH=64*>
	<COL WIDTH=154*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Title</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>get</PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Usage</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>$registry-&gt;get</PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Retrieve saved registry from the database</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Args</P>
		</TD>
		<TD WIDTH=25%>
			<PRE>none</PRE>
		</TD>
		<TD WIDTH=60% VALIGN=TOP>
			<P><BR>
			</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Returns</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Nothing</P>
		</TD>
	</TR>
</TABLE>
<P><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=38*>
	<COL WIDTH=64*>
	<COL WIDTH=154*>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Title</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>put</PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Usage</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<PRE>$registry-&gt;put</PRE>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Function</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Store saved registry in the database</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Args</P>
		</TD>
		<TD WIDTH=25%>
			<PRE>none</PRE>
		</TD>
		<TD WIDTH=60% VALIGN=TOP>
			<P><BR>
			</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=15%>
			<P CLASS="row-heading-western">Returns</P>
		</TD>
		<TD COLSPAN=2 WIDTH=85% VALIGN=TOP>
			<P>Nothing</P>
		</TD>
	</TR>
</TABLE>
<P><BR><BR>
</P>
</BODY>
</HTML>