--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+<document>
+ <header>
+ <title>Property Data Handling</title>
+ <authors>
+ <person id="pbw" name="Peter B. West" email="pbwest@powerup.com.au"/>
+ </authors>
+ </header>
+ <body>
+ <section>
+ <title>Introduction</title>
+ <p>
+ An <link href= "../classes-overview.html" >overview of the
+ properties and classes</link> involved in handling properties
+ has already been given. This discussion will go in detail
+ into the way data are represented within properties.
+ </p>
+ </section>
+ <section>
+ <title>Common data</title>
+
+ <p>
+ <fork href= "Character.html"
+ >org.apache.fop.fo.properties.Character</fork> is an example
+ of a basic <property> class. The data fields common to
+ all properties are:
+ </p>
+
+ <dl>
+ <dt>
+ <code>final int dataTypes</code>
+ </dt>
+ <dd>
+ This field defines the allowable data types which may be
+ assigned to the property. The value is chosen from the data
+ type constants defined in <fork href= "Property.html#NOTYPE"
+ ><code >org.apache.fop.fo.properties.Property</code
+ ></fork>, and may consist of more than one of those
+ constants, bit-ORed together.
+ </dd>
+ <dt>
+ <code >final int traitMapping</code >
+ </dt>
+ <dd>
+ This field defines the mapping of properties to traits in
+ the <code>Area tree</code>. The value is chosen from the
+ trait mapping constants defined in <fork href=
+ "Property.html#NO_TRAIT" ><code
+ >org.apache.fop.fo.properties.Property</code ></fork>, and
+ may consist of more than one of those constants, bit-ORed
+ together.
+ </dd>
+ <dt>
+ <code >final int initialValueType</code >
+ </dt>
+ <dd>
+ This field defines the data type of the initial value
+ assigned to the property. The value is chosen from the
+ initial value type constants defined in <fork href=
+ "Property.html#NOTYPE_IT" ><code
+ >org.apache.fop.fo.properties.Property</code ></fork>. In
+ the simplest <property> classes, such as
+ <code>Character</code>,
+ there is no defined initial value type.
+ </dd>
+ <dt>
+ <code >final int inherited</code >
+ </dt>
+ <dd>
+ This field defines the kind of inheritance applicable to the
+ property. The value is chosen from the inheritance
+ constants defined in <fork href= "Property.html#NO" ><code
+ >org.apache.fop.fo.properties.Property</code ></fork>.
+ </dd>
+ </dl>
+ </section>
+ <section>
+ <title>Accessing <property> Data Constants</title>
+
+ <p>
+ The constants above are generally accessed through the arrays
+ maintained in the <fork href= "../PropertyConsts.html" ><code
+ >PropertyConsts</code ></fork> singleton <fork href=
+ "../PropertyConsts.html#pconsts" ><code >pconsts</code
+ ></fork>. The first invocation of the method <fork href=
+ "../PropertyConsts.html#setupProperty" ><code
+ >setupProperty</code ></fork> on the property generates a
+ <code >Class</code > instance for the class, and stores it in
+ the array <fork href= "../PropertyConsts.html#classes" ><code
+ >classes</code ></fork>. This <code>Class</code> object is
+ used, in turn, to instantiate the singleton instance of the
+ class, which is stored in the <fork href=
+ "../PropertyConsts.html#properties" ><code >Property[]
+ properties</code ></fork> array of <fork href=
+ "../PropertyConsts.html#pconsts" ><code >pconsts</code
+ ></fork>.
+ </p>
+
+ <p>
+ <em>Reflection</em> methods are then used, via the same
+ <code>Class</code> instance, to extract and store the static
+ data fields. These arrays and associated access methods are:
+ </p>
+
+ <dl>
+ <dt>
+ <fork href= "../PropertyConsts.html#datatypes" ><code
+ >int[] datatypes</code ></fork>
+ </dt>
+ <dd>
+ <fork href= "../PropertyConsts.html#getDataTypes" ><code
+ >int getDataTypes(int)</code ></fork>
+ </dd>
+ <dt>
+ <fork href= "../PropertyConsts.html#traitMappings" ><code
+ >int[] traitMappings</code ></fork>
+ </dt>
+ <dd>
+ <em>No access method yet defined.</em>
+ </dd>
+ <dt>
+ <fork href= "../PropertyConsts.html#initialValueTypes" ><code
+ >int[] initialValueTypes</code ></fork>
+ </dt>
+ <dd>
+ <fork href= "../PropertyConsts.html#getInitialValueTypes" ><code
+ >int getInitialValueTypes(int)</code ></fork>
+ </dd>
+ <dt>
+ <fork href= "../PropertyConsts.html#inherited" ><code
+ >int[] inherited</code ></fork>
+ </dt>
+ <dd>
+ <fork href= "../PropertyConsts.html#inheritance" ><code
+ >int inheritance(int)</code ></fork>
+ </dd>
+ </dl>
+ </section>
+ </body>
+</document>
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+<document>
+ <header>
+ <title>Property Methods Access</title>
+ <authors>
+ <person id="pbw" name="Peter B. West" email="pbwest@powerup.com.au"/>
+ </authors>
+ </header>
+ <body>
+ <section>
+ <title>Introduction</title>
+ <p>
+ The <link href= "property-data.html" >previous section</link>
+ discussed the common data elements in the simplest examples of
+ <property>: classes. This section discusses more complex
+ classes whose facilities are accessed only through various
+ methods.
+ </p>
+ </section>
+ <section>
+ <title>Generating & Accessing Initial Values</title>
+
+ <p>
+ <fork href= "AutoRestore.html"
+ >org.apache.fop.fo.properties.AutoRestore</fork> is an example
+ of a the next most complex <property> class. In
+ addition to all of the common static fields, these classes
+ have initial data value types which require the dynamic
+ generation of a PropertyValue instance.
+ </p>
+
+ <p>
+ The method <code >PropertyValue getInitialValue(int)</code >
+ returns an instance of PropertyValue of the appropriate
+ subclass containing the initial value for this
+ <property>. Like the static data fields, this value is,
+ in turn, stored in the array of initial values maintained in
+ the <fork href= "../PropertyConsts.html" ><code
+ >PropertyConsts</code ></fork> singleton <fork href=
+ "../PropertyConsts.html#pconsts" ><code >pconsts</code
+ ></fork>.` As with the fields, the first invocation of the
+ method <fork href= "../PropertyConsts.html#setupProperty"
+ ><code >setupProperty</code ></fork> on the property
+ instantiates the singleton instance of the class, and stores
+ that instance in the in the <fork href=
+ "../PropertyConsts.html#properties" ><code >Property[]
+ properties</code ></fork> array of <fork href=
+ "../PropertyConsts.html#pconsts" ><code >pconsts</code
+ ></fork>.
+ </p>
+
+ <p>
+ Unlike the static data fields, however, the initial value is
+ not immediately generated. It is generated by a call to <fork
+ href= "../PropertyConsts.html#getInitialValue" ><code
+ >PropertyValue getInitialValue(int)</code ></fork> in <fork
+ href= "../PropertyConsts.html#pconsts" ><code >pconsts</code
+ ></fork>. A side-effect of this call is to store the initial
+ value in <fork
+ href="../PropertyConsts.html#initialValues"><code
+ >PropertyValue[] initialValues</code ></fork>.
+ </p>
+
+ </section>
+ </body>
+</document>