// vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=c:
//
//Do not use "\section", "\subsection", or other page-related commands here as
//this file is inlined in the ISmbios.h file.
// 
/**  \page item_theory Smbios Item Overview
 *
     * <b>Theory of Operation</b>
     *
     * <p>The ISmbiosItem class models access to individual items in the SMBIOS
     * table. It does this by providing a set of accessor functions that allow
     * structured data to be pulled out of the item. 
     *
     * <p>There are two modes of operation, depending on how the ISmbiosTable is
     * set up. First, normal mode allows clients to access any information in
     * the Item by offset and length. This access mode imposes no checks or
     * typing requirements on the data being accessed aside from bounds checking
     * that no buffer overruns occur. The drawback of this mode is that the
     * client code must always know the exact data length and offset of any data
     * that they want to extract.
     *
     * <p>The next mode of operation is XML enhanced operation. In this mode,
     * the client can pass in strings representing what data is requested. The
     * item will use an XML file to look up the exact offset of this data using
     * the string passed as a referenced. Then the item returns the data to the
     * client. The advantage of this access mode is that data is strongly typed,
     * and the client is prevented from invalid access modes. For example, they
     * may not access half of a u16 data item using the getU8() function call.
     *
     * <b>Class Hierarchy</b>
     *
     * <p>The class heirarchy for ISmbiosItem is simple. The abstract interface
     * class is ISmbiosItem. The full implementation of normal-mode access is in
     * SmbiosItem, and the XML enhanced mode access is implemented in
     * SmbiosItemXml (formerly SmbiosItemAccess).
     *
     * <b>Implementation</b>
     *
     * <p>The SmbiosItem is implemented with its own data buffer for item data.
     * This is reasonable as the max size for any single item is 256 bytes of
     * data. Upon construction, the Item copies the relevant item data out of
     * the containing table and from then maintains its own memory buffer.
     *
     * <b>Lifetime and Ownership</b>
     *
     * <p>The SmbiosItem is destroyed when the containing table is destroyed.
     * There is no method to allow the table to release an item. The copy
     * constructor is purposefully made 'private' to the Item to disallow third
     * parties from taking bad references to individual items.
     *
*/ 
