TRY_Generic_Bank provides all the common functionality of YBOS banks. Banks can be stored in a record, located within a record, have data representation (byte order) automatically converted if necessary, and be printed in a generic fashion. TRY_Generic_Bank also provides protected data access facilities as tools for derived bank classes to use in implementation.
A TRY_Generic_Bank consists of three sections: header, type description, and user data sections. Each of these have a distinct size which the programmer can access. The combination of the type specification and the user data sections are referred to as the bank body. This is slightly different from the YBOS picture where the bank size was the size of the bank body only, whereas in Trybos the bank size includes the size the bank header. TRY_Generic_Bank is a ``concrete'' C++ class; instances of it can be created and manipulated directly.
TRY_Named_Bank is a refinement of TRY_Generic_Bank in which bank operations are checked for bank name consistency. This prevents the user from attempting to create a CMUO_Bank instance using a LRID_Bank, for example. TRY_Named_Bank is an ``abstract'' C++ class; instances of it can not be created or manipulated directly. The class exists only to force bank name checking policy on classes derived from it.
Classes, such as CMUO_Bank and LRID_Bank, which encapsulate a particular CDF bank are referred to as specific bank classes. All specific bank classes have TRY_Named_Bank, and therefore TRY_Generic_Bank, as a base class in order to become a manipulatable YBOS bank with bank name-checking enabled.
All software associated with specific bank classes is maintained in the Banks product. The product prefix ``BNK_'' is omitted in the names of specific bank classes and in their header filenames. All other associated utility classes and programs, however, do use the ``BNK_'' prefix.
A bank (generic, named, or specific) is referred to as recorded if that object is stored in a record, otherwise it is unrecorded.