	 kꆢ $.$.by name         by name         BUILD           d   	kH      A                                                ./               A          A          
k*Q  m            
$.$.$.
        W        ./lpp_name               m          m          4 R S xlC.C++ {
xlC.C++.ascl.lib 3.1.1.1 01 N U en_US C Set ++ Application Support Class Library
[
*coreq xlC.rte 3.1.1.1
%
/usr/lpp/xlC/include 224
/usr/lpp/SAVESPACE 224
/usr/lib/objrepos 8
INSTWORK 56 24
%
%
%
IX46332  13 C Set ++ Maintenance Update
%
]
}
     	k\      A                                                ./usr            A          A          
k{      A                                                ./usr/lpp                A          A          kdL      A                                                ./usr/lpp/xlC.C++/xlC.C++.ascl.lib/3.1.1.1               A          A          kB 
 m            $.$.$.
         5        ./usr/lpp/xlC.C++/xlC.C++.ascl.lib/3.1.1.1/liblpp.a              m          m          <aiaff>
4014        0           68          3434        0           19          188         0           783122304   1590        400         644         9   productid `
xlC.C++ 5765-42100
 268         572         68          783122307   1590        400         644         26  xlC.C++.ascl.lib.copyright`
 Licensed Materials - Property of IBM

 576542100
   (C) Copyright International Business Machines Corp. 1990, 1994.

 All rights reserved.
 US Government Users Restricted Rights - Use, duplication or disclosure
 restricted by GSA ADP Schedule Contract with IBM Corp.
2187        2876        188         783623174   1590        400         644         26  xlC.C++.ascl.lib.inventory`
/usr/lpp/xlC/include/ibase.hpp:
          owner = bin
          group = bin
          mode = 444
          type = FILE
          links = /usr/lpp/xlC/include/ibase.h
          class = apply,inventory,xlC.C++.ascl.lib
          size = 14966
          checksum = "61399    15 "

/usr/lpp/xlC/include/ibuffer.hpp:
          owner = bin
          group = bin
          mode = 444
          type = FILE
          links = /usr/lpp/xlC/include/ibuffer.h
          class = apply,inventory,xlC.C++.ascl.lib
          size = 18044
          checksum = "55017    18 "

/usr/lpp/xlC/include/idate.hpp:
          owner = bin
          group = bin
          mode = 444
          type = FILE
          links = /usr/lpp/xlC/include/idate.h
          class = apply,inventory,xlC.C++.ascl.lib
          size = 14026
          checksum = "35152    14 "

/usr/lpp/xlC/include/idbcsbuf.hpp:
          owner = bin
          group = bin
          mode = 444
          type = FILE
          links = /usr/lpp/xlC/include/idbcsbuf.h
          class = apply,inventory,xlC.C++.ascl.lib
          size = 11213
          checksum = "12621    11 "

/usr/lpp/xlC/include/idbcsbuf.inl:
          owner = bin
          group = bin
          mode = 444
          type = FILE
          class = apply,inventory,xlC.C++.ascl.lib
          size = 1962
          checksum = "12853     2 "

/usr/lpp/xlC/include/istrtest.hpp:
          owner = bin
          group = bin
          mode = 444
          type = FILE
          links = /usr/lpp/xlC/include/istrtest.h
          class = apply,inventory,xlC.C++.ascl.lib
          size = 9418
          checksum = "05463    10 "

/usr/lpp/xlC/include/itime.hpp:
          owner = bin
          group = bin
          mode = 444
          type = FILE
          links = /usr/lpp/xlC/include/itime.h
          class = apply,inventory,xlC.C++.ascl.lib
          size = 9689
          checksum = "51955    10 "

/usr/lpp/xlC/include/itrace.hpp:
          owner = bin
          group = bin
          mode = 444
          type = FILE
          links = /usr/lpp/xlC/include/itrace.h
          class = apply,inventory,xlC.C++.ascl.lib
          size = 16452
          checksum = "17001    17 "

 68          3056        572         783623174   1590        400         644         21  xlC.C++.ascl.lib.size `
/usr/lpp/xlC/include 224
/usr/lpp/SAVESPACE 224
/usr/lib/objrepos 8
268         3434        2876        783623174   1590        400         644         19  xlC.C++.ascl.lib.al `
./usr/lpp/xlC/include/ibase.hpp
./usr/lpp/xlC/include/ibuffer.hpp
./usr/lpp/xlC/include/idate.hpp
./usr/lpp/xlC/include/idbcsbuf.hpp
./usr/lpp/xlC/include/idbcsbuf.inl
./usr/lpp/xlC/include/istrtest.hpp
./usr/lpp/xlC/include/itime.hpp
./usr/lpp/xlC/include/itrace.hpp
466         4014        3056        783623173   1590        400         644         24  xlC.C++.ascl.lib.fixdata`
fix:
	name = IX46332
	abstract = C Set ++ Maintenance Update
	type = f
	filesets = "xlC.C++.ascl.lib 3.1.1.1\n\
xlC.C++.cmp 3.1.1.1\n\
xlC.C++.collect.lib 3.1.1.1\n\
xlC.C++.heapview 3.1.1.1\n\
xlC.C++.iclui.lib 3.1.1.1\n\
xlC.C++.iclui.samples 3.1.1.1\n\
xlC.C++.lib 3.1.1.1\n\
xlC.info.en_US.C++ 3.1.1.1\n\
xlC.ipf.en_US.C++.iclui 3.1.1.1\n\
xlC.msg.Ja_JP.rte 3.1.1.1\n\
xlC.msg.ja_JP.rte 3.1.1.1\n\
xlC.ps.en_US.C++ 3.1.1.1\n\
xlC.rte 3.1.1.1\n\
"
	symptom = ""

215         0           3434        0           0           0           0           0   `
6           68          188         572         2876        3056        3434        productid xlC.C++.ascl.lib.copyright xlC.C++.ascl.lib.inventory xlC.C++.ascl.lib.size xlC.C++.ascl.lib.al xlC.C++.ascl.lib.fixdata  k } $        v:  $.k.k.
         N~  v:      ./usr/lpp/xlC/include/ibase.hpp          $          $          #ifndef _IBASE_
#define _IBASE_
/*******************************************************************************
* FILE NAME: ibase.hpp                                                         *
*                                                                              *
* DESCRIPTION:                                                                 *
*   Declaration of the class(es):                                              *
*     IBase - Empty "base" class to reduce global name space pollution         *
*                                                                              *
* COPYRIGHT:                                                                   *
*   Licensed Materials - Property of IBM                                       *
*   (C) Copyright IBM Corporation 1992, 1994                                   *
*   All Rights Reserved                                                        *
*   US Government Users Restricted Rights - Use, duplication, or disclosure    *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
*******************************************************************************/
#ifndef _IEXCBASE_
  #include <iexcbase.hpp>
#endif

/*----------------------------------------------------------------------------*/
/* Align classes on four byte boundary.                                       */
/*----------------------------------------------------------------------------*/
#pragma pack(4)

class ostream;

class IString;


class IBase {
/*******************************************************************************
*  The IBase class encapsulates the set of names that otherwise would be       *
*  in global scope.  All other classes in the library inherit from this class. *
*  Thus the types and enumeration values defined here can be used in those     *
*  classes without the qualifying IBase:: prefix.                              *
*                                                                              *
*  Other code, not within the scope of IBase, must use either the qualified    *
*  names or the simplified synonyms declared in ISYNONYM.HPP.                  *
*******************************************************************************/
public:

/*------------------------------ Related Types ---------------------------------
| This class declares a global Boolean type and enumeration, both of which     |
| are used throughout the library:                                             |
|                                                                              |
|   Boolean           - General true or false type used as an argument or      |
|                       return value for many member functions.                |
|   BooleanConstants  - Enumeration that defines constant values for false     |
|                       and true.  Never test for equality to be true,         |
|                       because any non-zero value should be considered true.  |
|                       This constant provides a useful mnemonic for setting   |
|                       a Boolean.                                             |
------------------------------------------------------------------------------*/
typedef int
  Boolean;

enum BooleanConstants {
  false = 0,
  true  = 1
};

/*------------------------------- Message File ---------------------------------
| The following functions provide access to the message file used to hold      |
| exception text used by the class library for throwing exceptions:            |
|   messageFile    - Returns the name of the message file used to load         |
|                    library exception text.  If setMessageFile has been       |
|                    called with the name of a message file, its name will be  |
|                    returned.  Otherwise, the environment variable            |
|                    "ICLUI MSGFILE" is checked for the name of a message      |
|                    file which is returned.  Set the environment variable     |
|                    using "SET ICLUI MSGFILE=mymsgfile.msg".  (The file       |
|                    extension, typically msg, must be specified.)  Finally,   |
|                    if the environment variable has not been set, the default |
|                    message file DDE4UILE.MSG will be used.                   |
|   setMessageFile - Sets the message file from which the class library        |
|                    exception text is loaded.  The name must include the      |
|                    file extension.                                           |
|   messageText    - Returns the message text associated with the message ID   |
|                    specified.  Up to nine optional text strings can be       |
|                    passed in to be inserted in the message.  The message     |
|                    will be loaded from program if it is found in a message   |
|                    segment that has been bound to the .EXE.  Otherwise it is |
|                    searched for in the current message file described above. |
|                    The search for this file is as follows:                   |
|                          - The system root directory.                        |
|                          - The current working directory.                    |
|                          - Using the DPATH environment setting.              |
|                          - Using the APPEND environment setting.             |
------------------------------------------------------------------------------*/
static char
 *messageFile ( );

static void
  setMessageFile ( const char *msgFileName );

static IMessageText
  messageText ( unsigned long messageId,
                const char*   textInsert1 = 0,
                const char*   textInsert2 = 0,
                const char*   textInsert3 = 0,
                const char*   textInsert4 = 0,
                const char*   textInsert5 = 0,
                const char*   textInsert6 = 0,
                const char*   textInsert7 = 0,
                const char*   textInsert8 = 0,
                const char*   textInsert9 = 0 );

/*------------------------------- Diagnostics ----------------------------------
| Use the following functions to provide diagnostic information:               |
|                                                                              |
|   operator << - Permits any library object to be dumped to an ostream,       |
|                 such as cout << anObject;.                                   |
|                 Note: IBase cannot provide any useful information about      |
|                       the object, so this function should be overridden in   |
|                       all subclasses.                                        |
|   asString    - Obtains the standard version of an object's contents.        |
|   asDebugInfo - Obtains the diagnostic version of an object's contents.      |
|   Version     - Structure (data type) that defines the version specifier     |
|                 (comprised of major and minor version numbers).              |
|   version     - Static function that returns the library version.            |
------------------------------------------------------------------------------*/
friend ostream
 &operator << ( ostream     &aStream,
                const IBase &anObject );

IString
  asString    ( ) const,
  asDebugInfo ( ) const;

struct Version {
unsigned short
  major,
  minor;
};

static Version
  version ( );

protected:
/*------------------------------ Implementation --------------------------------
| These data members are provided as synonyms for the IException::Severity     |
| enumeration which is used when constructing an instance of IException or     |
| one of its subclasses:                                                       |
|    unrecoverable -  Synonym for IException::unrecoverable.                   |
|    recoverable   -  Synonym for IException::recoverable.                     |
------------------------------------------------------------------------------*/
static IException::Severity
  unrecoverable,
  recoverable;

private: /*------------------------ PRIVATE ----------------------------------*/
static char
 *msgFile;

}; // IBase


/*-------------------------- Static Object Priority ----------------------------
| IBASE_PRIORITY - Defines the base "static object construction priority"      |
|                  for the library.                                            |
|                  Classes that have static objects that                       |
|                  require construction must define a comparable value,        |
|                  such as IWINDOW_PRIORITY.                                   |
|                  The value must be greater than the priority value           |
|                  of all classes whose static objects                         |
|                  must be constructed first.                                  |
------------------------------------------------------------------------------*/
#define IBASE_PRIORITY -2147483647 - 1 + 1024

#ifdef __BORLANDC__
  #define _System __stdcall __import //this is the definition of WINAPI from windef.h
  #define _Optlink
#endif

#ifdef __ZTC__
  #define _System  pascal far
  #define _Optlink
#endif

#ifdef __xlC__
  #define _System
  #define _Optlink
#endif

/*----------------------------- Platform Macros --------------------------------
| If none of the platform indicator macros are defined yet, set up             |
| defaults for them based on the compiler supplied platform macros.            |
------------------------------------------------------------------------------*/
#if ( !defined(IC_PM) && !defined(IC_MOTIF) && !defined(IC_WIN) )
  #ifdef __OS2__
     #define IC_PM
  #endif
  #ifdef _AIX
     #define IC_MOTIF
  #endif
  #ifdef __WINDOWS__       // ?? what is predefined value from compiler
     #define IC_WIN
  #endif
#endif

#if defined(IC_PM)
  #define IC_PMWIN
  #define IC_MOTIFPM
#endif
#if defined(IC_MOTIF)
  #define IC_MOTIFPM
  #define IC_MOTIFWIN
#endif
#if defined(IC_WIN)
  #define IC_PMWIN
  #define IC_MOTIFWIN
#endif

/*------------------------------ Version Levels --------------------------------
| IC_MAJOR_VERSION - Defines the major version level of the library which is   |
|                    used by IBase::version().  It is incremented by 1 for     |
|                    each new release, and by 100 for each new version.  It    |
|                    can also be used by client applications to conditionally  |
|                    compile their code.                                       |
| IC_MINOR_VERSION - Defines the minor version level of the library which is   |
|                    used by IBase::version().  It starts at 0 for each major  |
|                    version level and is incremented by 1 for each CSD.  It   |
|                    can also be used by client applications to conditionally  |
|                    compile their code.                                       |
| IC_OBSOLETE        Defines the level of obsolete functions which are to      |
|                    be included.  The default value for this macro matches    |
|                    the link libraries delivered with this version of the     |
|                    product.   To determine functions which may be removed    |
|                    from future versions, you may define this macro to        |
|                    be greater than the current IC_MAJOR_VERSION.             |
| IC_OBSOLETE_x      Generation "x" of obsolete functions.  The header files   |
|                    contain preprocessor statements around obsolete functions |
|                    which compare the value of IC_OBSOLETE with the           |
|                    IC_OBSOLETE_x value.  These obsolete functions are not    |
|                    included in the compilation if IC_OBSOLETE is greater     |
|                    than IC_OBSOLETE_x.  The value of the IC_OBSOLETE_x macro |
|                    is the IC_MAJOR_VERSION in which the functions wrappered  |
|                    with IC_OBSOLETE_x were declared to be obsolete.          |
| IC_OBSOLETE_1      IC_OBSOLETE_1 is used for functions obsoleted at major    |
|                    version 300.                                              |
------------------------------------------------------------------------------*/
#define IC_MAJOR_VERSION 300
#define IC_MINOR_VERSION 1

#define IC_OBSOLETE_1    300

#ifndef IC_OBSOLETE
   #define IC_OBSOLETE   300
#endif

extern "C" {


typedef void * _System
  IWinProc ( unsigned long, unsigned long, void *, void * );

}

#ifndef IC_RUNTIME
  #define IC_RUNTIME
#endif

#define IC_TRACE_RUNTIME

#ifdef IC_DEVELOP
  #define IC_TRACE_DEVELOP
#endif

#ifdef IC_TRACE_ALL
  #define IC_TRACE_DEVELOP
#endif

#define IC_UM_BASE            ( 0xFF00 )
#define IC_UM_DRAGDROP_RENDER     ( IC_UM_BASE + 0xE1 )
#define IC_UM_CANVAS_SETFOCUS     ( IC_UM_BASE + 0xE2 )
#define IC_UM_CANVAS_PAINT        ( IC_UM_BASE + 0xE3 )
#define IC_UM_CREATED             ( IC_UM_BASE + 0xE4 )
#define IC_UM_DESTROY_MENU        ( IC_UM_BASE + 0xE5 )
#define IC_UM_UNLATCH             ( IC_UM_BASE + 0xE6 )
#define IC_UM_BMP_VIEW            ( IC_UM_BASE + 0xE7 )
#define IC_UM_TXT_VIEW            ( IC_UM_BASE + 0xE8 )
#define IC_UM_BMP_TXT_VIEW        ( IC_UM_BASE + 0xE9 )
#define IC_UM_QRY_BMP_VISIBLE     ( IC_UM_BASE + 0xEA )
#define IC_UM_QRY_TXT_VISIBLE     ( IC_UM_BASE + 0xEB )
#define IC_UM_FLY_PAINT           ( IC_UM_BASE + 0xEC )
#define IC_UM_TOOLBAR             ( IC_UM_BASE + 0xED )

// The IC_ID_BASE constant is defined both here and in icconst.h.
// It is defined in icconst.h  to allow its use in resource files or other
// places where a C++ header cannot be used.
#ifndef IC_ID_BASE
  #define IC_ID_BASE            ( 0x7000 )
#endif

#define IC_RESERVED_TIMERS         1000

#define IContainerObject           ICnrObj
#define IContainerControl          ICnrCtl
#define IDDEClientAcknowledgeEvent IDDECAckEvt
#define IDDEServerAcknowledgeEvent IDDESAckEvt
#define IDDEServerConversation     IDDESConv
#define IDDEServerHotLink          IDDESHotLnk
#define IDDEServerHotLinkItem      IDDESHLItem
#define IDDEActiveServer           IDDEActServ
#define IDDEClientHotLinkEvent     IDDECHLEvt
#define IDDEClosedConversation     IDDEClsConv
#define IRowColumnCanvas           IRCCv
#define AlignmentTag               Tag
#define RowColumn                  RCol

/*----------------------------------------------------------------------------*/
/* Resume compiler default packing.                                           */
/*----------------------------------------------------------------------------*/
#pragma pack()

#ifndef _ISYNONYM_
  #include <isynonym.hpp>
#endif

#endif /* _IBASE_ */
  ld } $        |F  $...
         V~  #      ./usr/lpp/xlC/include/ibuffer.hpp                $          $           
		  -et
*ainorscdfghlu(),:ISbmp|.BCTvwy/;ADLOPRx#'01=EMU_kz&2FGJNVW49<>Hjq{}"3[]~Y[
<`P @ JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)Bp0`,<&!PJ a/Ja~ZΌT?c*	9NT;K9OxxBG\;')幭8`rfKY0'҄`x $'jɆ>
L9j9it/'bpr6q@nk+k0(  @(O೎0~Ã`?ps'~˖LXAf/>e@咩[X+kJKy'5??.Y3c4i&G[Y.Q3.M[\@'JBR)JR)JR)JR)JR)JR)JR)JR)JR)JR)3f  )yQ+䢠@h@T `P,hu*0Xh>M @
Yh@T z<[	8 U]<xI 2 xaK-mmmmmmmmmR	@%8,̓-1i)N	 Smmmmmmmmmm =Y 1(A')-Cr`Qr >0
@%)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR8a
<')ʂ&KY0~36\'҄0PJBpV~L0+k AMcᒩ[YMJ0ll3$=>Li|䜧y<6qђT[]'z'\7c%-aͣ"	(O	8|rle+k9na*0q%R'"	/VJB4Ĝ=󱳨0?)R|xOB(O!ʖdk~A͘&`NS1ђ4PcdYp|=JBleCǓ-vقf
MTcL&M[NSߒ1BB
MAY/	(JR)JR)JR)JR)JR)JR)JR)JR)JR)JR <q$Z)mmmnsITvmmmmpc-̳Lǩ2ɱq%Rix.8gEw˖dtcR\/Ƞ.gU0[ ;yeõ0l\G,9ro&PG%diy9o&#S<|2qǖ\9?PGMA YE.VpYkjcqKa5T+YAhvg1VHO`@<YJmgpYkjcqKa1+ r_PGYllsC3=YB"?6Y=MTk$	[Y,kA&`p~IH (ͮ6	 Ε9dVAyyeÿ6%PZ:q<,p+cS<|2qǖ\;Ƞ<:2Z<+iz8p|OEmmmmmmmmmjA(yeÑyeÄd5+I (V{gC Hk8kVV $V{gC >H䵏5+I `^cc ` /E#$; S/q9-c>U+'=Y \F{j(a@P=f2
QP>$R<`@<YJmf#=YLP=f2
Q2 |H{CaŜRT5)dΐ.#yeôZ:B,v$Smmmmۂ&mmmmڂ8aӎhrfY&V? 憬I05N[O~,q^qEaD?cQE:ll<ǖ\8'{-ll<xveaN.y61ǖ\8'(#$"Osɱ2M_&8ˇk&/	KY0!{ME{ɱ<CZɆKTΐ.lVN>eemg&wD?cQE:lPGq.rld'"?k&/JLNlj(Cߴ0(ˇ
Xl3VAdùn~KY0xOA5N!pIc69!KՒjfuf,6@D'Ƞ쀌'Րj0[ɱ3jf+cgcdgȠkg&8ˇEmmmmmmmmmjA(|VN0(ˇ#IPZ:B,v#)KsGjQĂG\9Xyb19-cǬAHm=䵏HI䵏RKX5NFZɆK
B	5NFZɆKRI;6\0Ņy&#ǬAZTq9-cz5NF@Fq-c$;I@n$zk9&#%|䚧i 䵏R	Mmmm.&0[mmmsC2a21FG&8ˇnc%EEQE a.&{ddHO= @dc=22Z{'S
ʃa.ȠFFKOd6p$'"mmmmmmmmmm e#QA/F$R==R	Mmmmnmmmmڂ8aӎhrfY&V?!Yp!-d%-ANoAdvIrv9A彬0JͥldqѺ$3%CyeÅ%)Ah
t-)Mq庙>9&&aڜEmmmmmmmmmjA(T | I8R<Bj)t=ᆩ< 5nv彬Gd5+$#=f2
f'%|JmmmmpT0i+ammj[N9ag[Ya9;K5NQ3~	=n.[=~
<¶ɱC@j{~EU9-dl&J\ω^Irs-mmmmmmmmmԂPI;yeÑ.[g1VS׊GǬAYHMS
(,9D;>AH@%6mmmm1j1|mmmmpc-̳L9*ƾVNT9&8ˇȠx2`ampJC|lc,plswAAdVrj%LF{ଶ*aa(mmmmmmmmmR	@j'`rb=O@ۈ䵏R	Mmmmm!mmmmj[N9ag[XNtk .[=A[>y61ǖ\8~KY0xȠx,,- jxr	 jD،`r`kx,tJ	Ƞx,hXlF0ll0X4,`"?md.[-ok%8'bqbb\'"?% jc˖[K@ՒȠxD/b1eaŭb\'Ƞx5>?،`r`kx5>ܶJlF0ll0XT8	(#=ꕵc˖[簙=R'Cb1eaŭq>W04،`r`kx5sH(	Ƞx0(,oc˖[AcB"?BlF0ll0XhPXПȠxQ(7-AcBqCAc~b1eaŭyP`PXПqCƅ-qCƅ	ȢmmmmmmmmmmH%tSx,,) jDk"x,hX䵏H-4F'%|GŘ䵏HDY/k"xD/F'%|GևCF'%|G-G19-cR=odJF'%|Gq>?k"x5sH()AcbrZȤz
#>E#AcbrZȤzrB#>E#P0(,o19-cR=l$ʇAc|F'%|GyP`PXk"a'T<hPXk  mmmml)ĚmmmmPG62q[=td㠬p&K\y`rgAL-
q&lc,paA "/-qa?E[
8[b1eaŭ@DX-GOl* l.[-l* lASc
86#6\,Y|aPPG ",،`r`g)1@DX-GO>F0<_lF0ll0X ",qa?[mmmmmmmmmm5nv{# "/-c$;$˖#cc Ά
GǬA_TX)qk8|A=Y|k/9-cR=l* l
>-c$;$˖#cc Ά
GǬA_TX)q`?.[H+ʝ +>E# ",q#%|䚧r`zdH+ʝ +>E# ",q#%|˖!eCR?=f2
H=
䵏H "/-c$;$˖#cc Ά
GǬA_T8)r#TA#%|˖!eCR?=f2
H=	䵏H ",>rMS@ll0R?=f2
`zdN{_xk")1@DX-G#%|˖!eCR?=f2
H=	䵏H ",q~#%|䚧r`zdH+ʝ '>E#Sc
8[.[H+ʝ '>AH@%6mmmm
\vmmmmڏ62q[=td㠬p&K\y`rfY&V=-&8ˇk&/ab1eaœpJ?5L2?،`r`d(%-KHl|:،`r`kcGVXlF0ll0XGVXxJ?ht8-O-sCj|W&c˖hl8ɡ(thlqb(tßqbJ?ܳ{e.[-0GVXxJ?.Y-r\<LlF0ll0Xr0qb BJ-mmmmmmmmmԂPI;yeÑdÿǬA[ 8T5NQ3ĊFMSdT$ǬA_i&Hk9&H)DG{ʜdH6)zdS׊G{fC"g1VǅHҶ>?k9&Hc)zd> `1WR?MS(T0Hi:{e=f2
`䚧PYrv$R4pZ1"W&j)zdt0R?+^)&PYrv$R46?ǬA[N{^)zdfĊF@l91"0GVX~#=Y@p6)&jf/,jYs#=YΆ
G0ll0aŋ.Y 5GiQ/,.[eCR?eac,Xr*<{JHi)9S2ZIv@5Nx1W@#%|䚧i >H!f=f2
i@#$;5NQ3ĊF#
B9- mmmm[mmmmGm8-eemchjʌY˕rcɫ~I{ţHS710L "/|)Ěʝ!J$SxS7.Vg)1@D^S4%8撩.M'Vt04%!T ;,JV8ˇm/cy%e
GCBQK]D
8撩Yp8(qp:6Ϛ8>c,@P^@  L(G/S
Ã[a9e`ks0$%bj9`qY8:{	n.V!98q@L+{r4HJ?9OxPB$1>6ɱr@.$%mmmmmmmmmjA([ǬAHʝ#aN$ǬA[N{^)zdM19-cR=HR6Mg1VS׊G{o8ANKX!tG\9Tq%S=f2
X6dk  YeAx 8h4j9RlF0"ZIvP`C+=YǖbAHj*Z:&1kVVZIvP`C j9RlF0"+y`f$֬irʃcei! Є>U+'yeÑl\G,F$zk9&I{Z#>AH@%6mmmmcǓ-p$Lݶmmmɖ-տ$=O[$ݥlc,v"Mxj>9n:7]kg&t07)R|mmmmmmmmmm x.cc bAH
<،H) 冪`Z)mmmm=TmmmmjA(=Y)t0MS*T 0( >U+'yeÑpQ H@%6mmmmmmmmmڐJ)KGY-G9-J)mmmmmmmmmԂPr	B u `xl$ʌV8ˇ 2 xaK-, ŭylLo } $        6  $...
         _~        ./usr/lpp/xlC/include/idate.hpp          $          $            	  -aent
*dhiorscflmpuy|),.DIg(/;MRSYbv&:=ABCENOTkw#'+19<>FJLW_jx"0PVz{}!2346GUq58H% 	QI!h& 1Ib!h&I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$Ihp  !i,`$$ x<80HOHH90MYi/H'ZnAl9'K$$ À &H'%G9I Q s:hpIX8\8@NiY@P
 \ _I4P<|pM%A<	J A8='-%A (hFB5AsNaxӓO9'-%BC44R@S\8@NH'H$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$A c8 D0$X0`mmmmmmmmmdEH<5Q&:FQH8pgA	mmmmmmmmmmA a <Z# (
AÂ8H @|rP,AχiqBBz`@0I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I $I扬ÃP
AHÒzT &$HZO2)@$c4&aI>$
(HZeE
1A#T!f?		 Mi9H(p\-'0bPuf=sDYLa托&-0tG%MfeSY.9(8.D,Yh\YYa@h($c4&aI*$ӧ,`$AGL,YiJ		e R>rV4@zYQ,f(IB5PZ-')Ey$jYSYiBƠ=2$$Hue i%K4B$3%5I<AY$fBA@TQ)3Yi @z5%'%Bi iгU#FzVYi4B$3	$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$a  KmmmnjD
AYmmmm@pjIb}e$BLP|BUc$/ @HHJAMT&CR|j@8ѡTRDueR@DZ`R
ƩeIY@>8ueha$iՖT4Me9(83@J-@bD$ğYihN&Q,%DueRDh1A&-tpÂ?mmmmmmmmmmRDҡ(j@ `0LjO)JRO)2ƜyHFN0#!cN)TR\5! A)RDҡ(!CPp!d`5!#d` 04a
# pYᢇCƞ0F-"I8,BI8,4&a$F	I` &FDc8q)A4Ӆ`mmmQ8hqmmmmm>4lBjYD.LQB&h0H<Ě(Qx ǐ?:4Yi()q4B8.
`%cNQ.R p8t<%ŚB&Yi9%J@-$bUyZN5K,R%M:RyáP}e9(:)%DueRO0)?<ѧLfHN0ViHY*4㒥Bǐ?: уP}
5epj $@py3YiᢌB uCEt5AA<f(>T)+Ah&OYD,iǐmmmmmmmmmm#BiTGbd)}P40-0\/5Ʃe5K,,/"
FRRP: 85Lj\85L
@jP40-0\j0=I*(F!AIРi%mmmn4mmmm2zbFB5GhL@	<̈́q>0Ӗa>hO |9'KB5SDZaZfD,ǐ?< P9GZaZh>8`i()s4hZW 1'VZg=i)Rri8TbNbZcOL4(t%fLA	5S$ALIbM;@ M
H\@ 01">8 (0	 h	@ ~<h&}i>T@LXӓiՖHZC?8S9GZf(9k-3!&p>RMYiH( 5E ueh)?@R(9GZj@Yi	0&9:hLJA@85K/x=+r@銬HIT>LR $EMfC? )!!zV4YiYi	0&9AB)iI'/ k6 @ 3 CEiJƜ-04QThN&9"`M'CP jX$$"x=+rQIsDZg$BL	|YYsDZcǐ?P:4hypԈHNŚZ{XӔ}eL5i8jXg@9(;i>9"`M' s㒃0LĚpXӔ8p@J@-0DHYйXӔ}e i%K36mmmmmmmmmd,F8E(8p/EGDF8ฃTzAD\* 28@\* 1fe(.jX4@HHJAB28RD 285K/¢Q#)!!D <$TF1
BӂQH jYT!!.jX4R%QH fi#Y t
@0mmmmAg%Jmmmm@ri	aF$,ӢI1͌B9#IRгUfBXarL@K1A9'KB5Ammmmmmmmmm$d@F$,Ӡ,sOY@H,XYQiHB
@0mmmy 5PHbNB8mmmmSaZOB$,bIQLHB0REK& cq@riТ0PYirE
1Ay 4bNB:ұ(k-0-3B@I"|9'K@Bǐ?1'!f =+rᩘ&B4$!gHÒzTF	 R? 4bNB:ұ(k-1IZTщ9
*rFҥD-? 0:k-2HÒzT	0<ТIQA@hĜtұ(k-1IZTщ9
*rFҥD-? 0:f0f@ͬB9#IRT$:@[-
*hĜ 4bNB:;ұ(k-1IZTщ9
*rFҥD-? xБ HԩuYirFҥHueq孖@щ9
(3N3pzV4YS0Me)"VB1'!ENHÒzT蔅= 	.f0f@ͬB9#IRT$:`ykeEM?6mmmmmmmmmla qJFhĜt TzZ`RP¢Q#4bNB:  25G 5L* 3F$,Ӡ/BjXYriAqÃPiDFhĜt`TzZ`RP¢Q#4bNB: . pj-0Tz%mmmQB5PHbNB8mmmm(E!friǁ 1'!f}
<
hN&RY[-
*hĜHP}$iǐ?NBK9}
<
hN&Rq-1IZWIQAq0QF(>
ÃPak-3-l(rW}6CPZUYi1'!fbE}eI:hIX*)IIY@@p4SUID@6+eEM@`zP}erO)uYh\щ9
(3@4bNB:˄r,1KHyPa$4L>$EZgZhQ_ǐ?4bNBQIE.k-1'!Eǐmmmmmmmmmmщ94s@Q1'!fx.bPa|* ii"1'!f d1Kh>D
4bNB:.bPa|(APyriׂQiHB
5GA [mmmm ,mmmmlLQB |-#4&aII9ZcV`bO1*)*\3$ALBxgy@R(9GZj@YiH))80b6y4ZTjB@R
LQIayTOx=+rԁi&j\1eZh8<h@&8R˼9GZj,$UiTYYpY`M*㒃0LĚphL>8p8Rұ(MCEt28`M*J2iJ|pÃ?@a=(JJƜ8jf	pxiR㒃DRP29(8ǐ?5eT1s(
=!&ZbM8\4R8p@aF(!i>
-44ZTHZ`iUbIJ5K,RM:9(8RL>@
iR,`ǐ?	5H
@0]T-0D iԄKAXP T &ZbM8\4R8p<mmmmmmmmmla0D8 PyHZx. w
#jX"iTqYpi,28R˂TG_@E(:FRPvR@=hY qJFa=(J)}PYBWTG#_@E(:FaF๊_@jj] TbJx Qx.bJ#_@jB0VI@Y [mmmmÅiRгUmmmm>	a#T!fƞ6`-*\@|85Hb@ %7(@HZOpF!R:I83LI&Pt Ça˜9G9"RrT!5Yi	0&(ŘF JJYy4RCmmmmmmmmmmH0-$@b@ %0\j] Tbd1KB0hZ@mmmm`MMmmmmAQ%E0$4QP4pjmmmmmmmmmdh
IҒ%E.1C%mmmmmmmmmh@PA *)"aDp"Á@ FPCJLR(A *(0a0"`  kƨ } $        +  $...
         c~  +      ./usr/lpp/xlC/include/idbcsbuf.hpp               $          $          #ifndef _IDBCSBUF_
#define _IDBCSBUF_
/*******************************************************************************
* FILE NAME: idbcsbuf.hpp                                                      *
*                                                                              *
* DESCRIPTION:                                                                 *
*   This file contains the declaration(s) of the class(es):                    *
*     IDBCSBuffer - DBCS buffer class                                          *
*                                                                              *
* COPYRIGHT:                                                                   *
*   Licensed Materials - Property of IBM                                       *
*   (C) Copyright IBM Corporation 1992, 1994                                   *
*   All Rights Reserved                                                        *
*   US Government Users Restricted Rights - Use, duplication, or               *
*   disclosure                                                                 *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
*******************************************************************************/
#include <stdlib.h>
#include <limits.h>
#ifndef _IBUFFER_
  #include <ibuffer.hpp>
#endif

/*----------------------------------------------------------------------------*/
/* Align classes on four byte boundary.                                       */
/*----------------------------------------------------------------------------*/
#pragma pack(4)

class IDBCSBuffer : public IBuffer {
/*******************************************************************************
* The IDBCSBuffer class implements the version of IString contents that        *
* supports mixed OS/2 double-byte character set (DBCS) characters.  This       *
* class ensures that DBCS multi-byte characters are processed properly.        *
*                                                                              *
* The use of this class is transparent to the user of class IString.           *
*******************************************************************************/
public:
/*-------------------------------- Overrides -----------------------------------
| This class re-implements the following IBuffer functions as public:          |
|   subString            - See IBuffer::subString.                             |
|   charType             - See IBuffer::charType.                              |
|   allocate             - See IBuffer::allocate.                              |
|   next                 - See IBuffer::next.                                  |
|                                                                              |
| This class re-implements the following IString version of IBuffer functions: |
|   isDBCS               - See IString::isDBCS.                                |
|   isSBCS               - See IString::isDBCS.                                |
|   isValidDBCS          - See IString::isValidDBCS.                           |
|   includesDBCS         - See IString::includesDBCS.                          |
|   includesSBCS         - See IString::includesSBCS.                          |
|   indexOf              - See IString::indexOf.                               |
|   indexOfAnyBut        - See IString::indexOfAnyBut.                         |
|   indexOfAnyOf         - See IString::indexOfAnyOf.                          |
|   lastIndexOf          - See IString::lastIndexOf.                           |
|   lastIndexOfAnyBut    - See IString::lastIndexOfAnyBut.                     |
|   lastIndexOfAnyOf     - See IString::lastIndexOfAnyOf.                      |
|   center               - See IString::center.                                |
|   insert               - See IString::insert.                                |
|   leftJustify          - See IString::leftJustify.                           |
|   lowerCase            - See IString::lowerCase.                             |
|   overlayWith          - See IString::overlayWith.                           |
|   remove               - See IString::remove.                                |
|   reverse              - See IString::reverse.                               |
|   rightJustify         - See IString::rightJustify.                          |
|   strip                - See IString::strip.                                 |
|   translate            - See IString::translate.                             |
|   upperCase            - See IString::upperCase.                             |
|   className            - Returns "IDBCSBuffer".                              |
------------------------------------------------------------------------------*/
IBuffer
 *subString ( unsigned startPos,
              unsigned len,
              char     padCharacter ) const;

Boolean
  isMBCS       ( ) const,
  isDBCS       ( ) const,
  isSBCS       ( ) const,
  isValidMBCS  ( ) const,
  isValidDBCS  ( ) const,
  includesMBCS ( ) const,
  includesDBCS ( ) const,
  includesSBCS ( ) const;

IStringEnum::CharType
  charType ( unsigned index ) const;

unsigned
  indexOf           ( const IStringTest &aTest,
                      unsigned           startPos = 1 ) const,
  indexOf           ( const char        *pString,
                      unsigned           len,
                      unsigned           startPos = 1 ) const,
  indexOfAnyBut     ( const char        *pString,
                      unsigned           len,
                      unsigned           startPos = 1 ) const,
  indexOfAnyBut     ( const IStringTest &aTest,
                      unsigned           startPos = 1 ) const,
  indexOfAnyOf      ( const char        *pString,
                      unsigned           len,
                      unsigned           startPos = 1 ) const,
  indexOfAnyOf      ( const IStringTest &aTest,
                      unsigned           startPos = 1 ) const,
  lastIndexOf       ( const IStringTest &aTest,
                      unsigned           startPos = 1 ) const,
  lastIndexOf       ( const char        *pString,
                      unsigned           len,
                      unsigned           startPos = 0 ) const,
  lastIndexOfAnyBut ( const char        *pString,
                      unsigned           len,
                      unsigned           startPos = 0 ) const,
  lastIndexOfAnyBut ( const IStringTest &aTest,
                      unsigned           startPos = 0 ) const,
  lastIndexOfAnyOf  ( const char        *pString,
                      unsigned           len,
                      unsigned           startPos = 0 ) const,
  lastIndexOfAnyOf  ( const IStringTest &aTest,
                      unsigned           startPos = 0 ) const;

IBuffer
 *center       ( unsigned newLen,
                 char     padCharacter ),
 *insert       ( const char *pInsert,
                 unsigned    insertLen,
                 unsigned    pos,
                 char        padCharacter ),
 *leftJustify  ( unsigned newLen,
                 char     padCharacter ),
 *lowerCase    ( ),
 *overlayWith  ( const char *overlay,
                 unsigned    len,
                 unsigned    pos,
                 char        padCharacter ),
 *remove       ( unsigned startPos,
                 unsigned numChars ),
 *reverse      ( ),
 *rightJustify ( unsigned newLen,
                 char     padCharacter ),
 *strip        ( const char             *pChars,
                 unsigned                len,
                 IStringEnum::StripMode  mode ),
 *strip        ( const IStringTest      &aTest,
                 IStringEnum::StripMode  mode ),
 *translate    ( const char *pInputChars,
                 unsigned    inputLen,
                 const char *pOutputChars,
                 unsigned    outputLen,
                 char        padCharacter ),
 *upperCase    ( );

IBuffer
 *allocate ( unsigned newLen ) const;

char
 *next ( const char *prev );

const char
 *next ( const char *prev ) const;

protected:
/*---------------------- Protected Overrides -----------------------------------
| This class re-implements the following IBuffer functions as protected:       |
|                                                                              |
|   startSearch          - See IBuffer::startSearch.                           |
|   startBackwardsSearch - See IBuffer::startBackwardsSearch.                  |
|   className            - Returns "IDBCSBuffer".                              |
------------------------------------------------------------------------------*/

unsigned
  startSearch          ( unsigned startPos,
                         unsigned searchLen ) const,
  startBackwardsSearch ( unsigned startPos,
                         unsigned searchLen ) const;

const char
 *className ( ) const;

/*------------------------------ Implementation --------------------------------
| These functions provide services used to implement this class:               |
|   isCharValid - Returns true if and only if the character at the given       |
|                 index is in the set of valid characters.                     |
|   isDBCS1     - Returns true if and only if the byte at the given offset     |
|                 is the first byte of DBCS.                                   |
|   isPrevDBCS  - Returns true if and only if the preceding character to the   |
|                 one at the given offset is a DBCS character.                 |
|   charLength  -                                                              |
|   maxCharLength - returns maximum length of a multibyte character            |
|   prevCharLength -                                                           |
|   isSBC       - returns true if character is NOT a multibyte character       |
|                                                                              |
------------------------------------------------------------------------------*/
Boolean
  isCharValid ( unsigned    pos,
                const char *pValidChars,
                unsigned    numValidChars ) const;


static size_t
  charLength ( char const* ),
  maxCharLength ( );

size_t
  charLength ( unsigned pos ) const,
  prevCharLength ( unsigned pos ) const;

static Boolean
  isSBC ( char const* );

friend class IBuffer;
/*------------------------------- Constructor ----------------------------------
| The constructor for this class is protected.  It is only called from the     |
| member function allocate and the static member function IBuffer::initialize. |
------------------------------------------------------------------------------*/
  IDBCSBuffer ( unsigned bufLength );
  ~IDBCSBuffer ( );
}; // class IDBCSBuffer

/*----------------------------------------------------------------------------*/
/* Resume compiler default packing.                                           */
/*----------------------------------------------------------------------------*/
#pragma pack()

#ifndef I_NO_INLINES
  #include <idbcsbuf.inl>
#endif

#endif // _IDBCSBUF_
   kJ } $          $...
         }        ./usr/lpp/xlC/include/idbcsbuf.inl               $          $          #ifndef _IDBCSBUF_INL_
#define _IDBCSBUF_INL_ 0
/*******************************************************************************
* FILE NAME: idbcsbuf.inl                                                      *
*                                                                              *
* DESCRIPTION:                                                                 *
*   This file contains the definition of the inline functions for the          *
*   class(es) declared in idbcsbuf.hpp.                                        *
*                                                                              *
* COPYRIGHT:                                                                   *
*   Licensed Materials - Property of IBM                                       *
*   (C) Copyright IBM Corporation 1992, 1994                                   *
*   All Rights Reserved                                                        *
*   US Government Users Restricted Rights - Use, duplication, or               *
*   disclosure                                                                 *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
*******************************************************************************/
#ifndef _IDBCSBUF_
  #undef  _IDBCSBUF_INL_
  #define _IDBCSBUF_INL_ 1
  #include <idbcsbuf.hpp>
#endif

#if _IDBCSBUF_INL_
  #define inline
#endif

inline size_t IDBCSBuffer :: charLength ( char const* p )
  {
  if ( *p == 0 )
     return 1;
  else
     return mblen ( p, MB_LEN_MAX );
  }

inline size_t IDBCSBuffer :: charLength ( unsigned pos ) const
  {
  return charLength ( contents() + pos - 1 );
  }

inline size_t IDBCSBuffer :: maxCharLength ( )
  {
  return MB_CUR_MAX;
  }

inline IBase::Boolean IDBCSBuffer :: isSBC ( char const* p )
  {
  return ( charLength ( p ) == 1 );
  }

#endif // _IDBCSBUF_INL_
   poskf! } $        $  $...
         ~  $      ./usr/lpp/xlC/include/istrtest.hpp               $          $          #ifndef _ISTRTEST_
#define _ISTRTEST_
/*******************************************************************************
* FILE NAME: istrtest.hpp                                                      *
*                                                                              *
* DESCRIPTION:                                                                 *
*   This file contains the declaration(s) of the class(es):                    *
*     IStringTest - Abstract "string test" class.                              *
*                                                                              *
* COPYRIGHT:                                                                   *
*   Licensed Materials - Property of IBM                                       *
*   (C) Copyright IBM Corporation 1992, 1994                                   *
*   All Rights Reserved                                                        *
*   US Government Users Restricted Rights - Use, duplication, or               *
*   disclosure                                                                 *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
*******************************************************************************/
#ifndef _IVBASE_
  #include <ivbase.hpp>
#endif

/*----------------------------------------------------------------------------*/
/* Align classes on four byte boundary.                                       */
/*----------------------------------------------------------------------------*/
#pragma pack(4)

extern "C"
  {
  typedef IBase::Boolean ICStrTestFn( int );
  }

class IStringTest : public IVBase {
typedef IVBase
  Inherited;
/*******************************************************************************
  The IStringTest class defines the basic protocol for test objects that can
  be passed to IStrings (or I0Strings) to assist in performing various
  testing and searching functions.  It also provides concrete implementation
  for the common case of using a plain C function for such testing.

  A derived template class, IStringTestMemberFn, is provided to permit the
  use of member functions of any class on the IString functions that support
  IStringTest.

  Derived classes should re-implement the test virtual function to test
  characters passed by the IString and return the appropriate result.

  A constructor for this class accepts a pointer to a C function that accepts
  an integer as an argument and returns a Boolean.  Such functions can be
  used anywhere an IStringTest can be used.  Note that this is the type of
  the standard C library is.... functions that check the type of C characters.

  Example:
    // Strip leading alphanumerics from aString...
    IString
      aString;
    ...
    aString.stripLeading( isalnum ); // Uses C library isalnum function.
*******************************************************************************/
public:
/*------------------------------ Function Types --------------------------------
  CFunction   - Pointer to the C function that accepts an integer argument
                and returns Boolean.
  CPPFunction - Pointer to plain (static or non-member) C++ function
                accepting integer argument and returning Boolean.
------------------------------------------------------------------------------*/
typedef ICStrTestFn
  CFunction;
typedef Boolean
  CPPFunction( int );

/*------------------------------- Constructor ---------------------------------
  An object of this class can be constructed with a pointer to the C
  function to be used to implement the test member function.
------------------------------------------------------------------------------*/
  IStringTest ( CFunction   &cFunc );
#ifdef IC_NOTYET
  IStringTest ( CPPFunction &cppFunc ); //Compiler doesn't support this yet.
#endif //IC_NOTYET
  ~IStringTest ( );

/*--------------------------------- Testing ------------------------------------
  test - This function tests the argument integer (character) and returns
         true or false as returned by the C function provided at construction.
         Derived classes should override this function to implement their own
         testing function.
------------------------------------------------------------------------------*/
virtual Boolean
  test ( int c ) const;

protected:
/*------------------------------ Implementation --------------------------------
  FnType - Enumeration describing the various flavors of functions
           supported.
             user   - User-defined.
             c      - C.
             cpp    - C++ static or non-member function.
             memFn  - C++ member function.
             cMemFn - Const C++ member function.

  data   - Data member union, varying by FnType:
             cFn   - Pointer to a C function.
             user  - Pointer to an arbitrary derived-class data (if FnType is
                     neither c nor cpp).
------------------------------------------------------------------------------*/
enum FnType { user, c, cpp, memFn, cMemFn };
FnType
  type;

#ifdef IC_NOTYET
union { CFunction *cFn; CPPFunction *cppFn; void *user; } data;
#endif
#ifndef IC_NOTYET
union { CFunction *cFn; void *user; } data;
#endif

/*--------------------- Protected Constructor ----------------------------------
  This protected constructor can be used by derived classes to
  reuse the space for the C/C++ function pointer.
------------------------------------------------------------------------------*/
  IStringTest ( FnType  type,
                void   *userData );

}; // class IStringTest

template < class T >
class IStringTestMemberFn : public IStringTest {
/*******************************************************************************
  The template class IStringTestMemberFn is used to provide an
  IStringTest-type wrapper for particular C++ member functions.  This permits
  such member functions to be used in conjunction with the IString (and
  I0String) functions that accept an IStringTest object as an argument.

  The template class argument is the class name T of the class whose member
  function is to be wrappered.

  The constructor for the object requires two things:
     - An instance of class T.
     - A pointer to a member function of the class T.  This member function
       will be applied to the object specified on the constructor to test
       each character passed to the test function of this class.  The member
       function must accept a single integer argument and return Boolean.

  Both const and non-const member functions are supported.  The latter
  require that a non-const member be specified as the first argument.

  Example:
    // Any arbitrary class with appropriate function...
    struct StringTester {
    Boolean
      charTest( int c ) const;
    };
    // StringTester object...
    StringTester
      tester;
    // Test aString using tester object...
    IString
      aString;
    ...
    aString
      .includes( IStringTestMemberFn<StringTester>( tester,
                                                    StringTester::charTest ) );

  Customization (Template Arguments)
  Class IStringTestMemberFn is a template class instantiated with the
  template arguments:

    class T
*******************************************************************************/
public:
/*------------------------------ Related Types ---------------------------------
  ConstFn    - Const member function of the appropriate type.
  NonconstFn - Non-const member function of the appropriate type.
------------------------------------------------------------------------------*/
typedef Boolean
 ( T::*ConstFn )( int ) const;
typedef Boolean
 ( T::*NonconstFn )( int );

/*------------------------------- Constructors ---------------------------------
  There are two constructors, one supporting const member functions, the
  other non-const member functions.  The constructors also require an object
  of the class T (non-const object for non-const member functions).
------------------------------------------------------------------------------*/
  IStringTestMemberFn ( const T    &object,
                        ConstFn     constFn )
    : IStringTest( user, (void*)&object ),
      cMF( constFn )
    {
    }
  IStringTestMemberFn ( T          &object,
                        NonconstFn  nonconstFn )
    : IStringTest( user, (void*)&object ),
      ncMF( nonconstFn )
    {
    }

/*-------------------------------- Overrides -----------------------------------
  test - Overridden to dispatch a member function against an object.
------------------------------------------------------------------------------*/
virtual Boolean
  test ( int c ) const
    {
    if ( this->type == cMemFn )
      return ((const T*)data.user->*cMF)( c );
    else
      return ((T*)data.user->*ncMF)( c );
    }

private: /*------------------------ PRIVATE ----------------------------------*/
union { ConstFn cMF; NonconstFn ncMF; };
};

/*----------------------------------------------------------------------------*/
/* Resume compiler default packing.                                           */
/*----------------------------------------------------------------------------*/
#pragma pack()

#ifndef I_NO_INLINES
  #include <istrtest.inl>
#endif

#endif // _ISTRTEST_
ata;
#kq } $        %  $...
         ~  %      ./usr/lpp/xlC/include/itime.hpp          $          $          #ifndef _ITIME_
#define _ITIME_
/*******************************************************************************
* FILE NAME: itime.hpp                                                         *
*                                                                              *
* DESCRIPTION:                                                                 *
*   Declaration of the class(es):                                              *
*     ITime - Class of objects representing time-of-day values                 *
*                                                                              *
* COPYRIGHT:                                                                   *
*   Licensed Materials - Property of IBM                                       *
*   (C) Copyright IBM Corporation 1992, 1994                                   *
*   All Rights Reserved                                                        *
*   US Government Users Restricted Rights - Use, duplication, or disclosure    *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
*******************************************************************************/
#ifndef _IBASE_
  #include <ibase.hpp>
#endif

#ifndef _ISTRING_
  #include <istring.hpp>
#endif


/*----------------------------------------------------------------------------*/
/* Align classes on four byte boundary.                                       */
/*----------------------------------------------------------------------------*/
#pragma pack(4)

class ostream;

class ITime : public IBase {
/*******************************************************************************
* Objects of the ITime class represent units of time (hours, minutes, and      *
* seconds) as portions of days and provide support for converting these units  *
* of time into numeric and ASCII format.                                       *
*                                                                              *
* ITime objects can be compared and operated on by adding them to and          *
* subtracting them from other ITime objects.                                   *
*                                                                              *
* A related class whose objects also represent units of time is the IDate      *
* class.                                                                       *
*******************************************************************************/
public:
/*------------------------ Constructors ----------------------------------------
| You can construct ITime objects in the following ways:                       |
|                                                                              |
|    - By using the default constructor, which returns the current time.       |
|                                                                              |
|    - By giving the number of seconds since midnight that the time is to      |
|      represent.  In this case, the number of seconds can be negative and is  |
|      subtracted from the number of seconds in a day.                         |
|                                                                              |
|    - By giving the number of hours, minutes, and seconds since midnight      |
|      that the time is to represent.  In this case, the number of seconds     |
|      cannot be negative.                                                     |
|                                                                              |
|    - By copying another ITime object.                                        |
|                                                                              |
|    - By giving a container CTIME structure.                                  |
|                                                                              |
|    - By using the static member function now to return the current time.     |
------------------------------------------------------------------------------*/
  ITime ( );

  ITime ( long seconds );

  ITime ( unsigned hours,
          unsigned minutes,
          unsigned seconds = 0 );

  ITime ( const ITime &aTime );


/*----------------------------- Current Time -----------------------------------
| Use the following function when you need the current time:                   |
|   now - Returns the current time.  This function can be used as an ITime     |
|         constructor.                                                         |
------------------------------------------------------------------------------*/
static ITime
  now ( );

/*-------------------------------- Accessors -----------------------------------
| The following functions provide access to various portions of the            |
| representation of the ITime object:                                          |
|   asSeconds - Returns the number of seconds since midnight.                  |
|   asString  - Returns the ITime object as a string that is formatted         |
|               according to the format argument.  This format string can      |
|               contain time "conversion specifiers" as defined for the        |
|               standard C library function strftime in the time.h header      |
|               file.  The default format is %X, which yields the time as      |
|               hh:mm:ss.                                                      |
|   asCTIME   - Returns the time as a container CTIME structure.               |
|   hours     - Returns the number of hours past midnight.                     |
|   minutes   - Returns the number of minutes past the hour.                   |
|   seconds   - Returns the number of seconds past the minute.                 |
------------------------------------------------------------------------------*/
long
  asSeconds ( ) const;

IString
  asString ( const char *fmt = "%X" ) const;


unsigned
  hours   ( ) const,
  minutes ( ) const,
  seconds ( ) const;

/*-------------------------- Comparison Operators ------------------------------
| Using the following operators, two ITime objects can be compared to each     |
| other:                                                                       |
|   operator == - Compares two objects to determine whether they are equal.    |
|   operator != - Compares two objects to determine whether they are not       |
|                 equal.                                                       |
|   operator <  - Compares two objects to determine whether one is less than   |
|                 the other.                                                   |
|   operator <= - Compares two objects to determine whether one is less than   |
|                 or equal to the other.                                       |
|   operator >  - Compares two objects to determine whether one is greater     |
|                 than the other.                                              |
|   operator >= - Compares two objects to determine whether one is greater     |
|                 than or equal to the other.                                  |
------------------------------------------------------------------------------*/
Boolean
  operator == ( const ITime &aTime ) const,
  operator != ( const ITime &aTime ) const,
  operator <  ( const ITime &aTime ) const,
  operator <= ( const ITime &aTime ) const,
  operator >  ( const ITime &aTime ) const,
  operator >= ( const ITime &aTime ) const;

/*------------------------- Manipulation Operators -----------------------------
| The following operators are used to manipulate the values of two ITime       |
| objects and to store the results of those manipulations:                     |
|   operator +  - Adds two objects together.                                   |
|   operator -  - Subtracts one object from another.                           |
|   operator += - Stores the result of an addition operation in the receiver.  |
|   operator -= - Stores the result of a subtraction operation in the          |
|                 receiver.                                                    |
------------------------------------------------------------------------------*/
ITime
  operator +  ( const ITime &aTime ) const,
  operator -  ( const ITime &aTime ) const;

ITime
 &operator += ( const ITime &aTime ),
 &operator -= ( const ITime &aTime );

/*------------------------------- Displaying -----------------------------------
| The following operator can be used to display an ITime object:               |
|   operator << - Outputs an object on an ostream.                             |
------------------------------------------------------------------------------*/
friend ostream
 &operator << ( ostream     &aStream,
                const ITime &aTime );

protected:
/*----------------------------- Implementation ---------------------------------
| The following function is used to implement the ITime class:                 |
|   initialize - Common initialization function used by constructors.          |
------------------------------------------------------------------------------*/
ITime
 &initialize ( long seconds );

private:
/*--------------------------------- PRIVATE ----------------------------------*/
long
  ticks;

}; // ITime

/*----------------------------------------------------------------------------*/
/* Resume compiler default packing.                                           */
/*----------------------------------------------------------------------------*/
#pragma pack()

#ifndef I_NO_INLINES
  #include <itime.inl>
#endif

#endif /* _ITIME_ */
urns thlxW } $        D@  $...
         ~        ./usr/lpp/xlC/include/itrace.hpp p               $          $            
  -*eint
acdorsCEIT_fhlmu(),./ADLNORUbgpw|#:FMPSvy"1;VWx=B\k+029>GQXjq{}&34<Yz8H~',QC X[ 8x`JR)JR)JR)JR)JR)JR)JR)JR)JR)JR%6	j
"8<pxTi31=ISI D KO@U=T8AER0Փ[A-?"8@-<9f$ƩMH*F8qPX& La
Y 	Zxa2qj1";%x1H0ؒ*Aj5:"BMF$T85cV{g9hLJIi)Z`!,J85FƠa-H&0BKJR)JR)JR)JR)JR)JR)JR)JR)JR)JR!eE($Ɛ/-*rX0LTHTT),e!eMbLQR3"yT"`֪&yVb Я,-.,*h  Ae,bNQ@Ƭ#"zIHM&b(9f1cmAl,f"p5P<T5Th4UG(pLEEIH-8,-)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRy%G@U4@bR6TLY5"zT@VHIlIiɬMc0հRyA촒['`1hc`YdԎӎ$:<D0`ٌ:8`pGKN<(ILj[+D->j)Z3dpWǒT*31=i%Da` Ҫ*
@$4Hh, P0WxdUXZ3$>JULj I٧-̢*T<3ŔtLi%EP<"i$abJAVUjLUpWZqj)4DEMȘ65H-GeS@SKN<hVɞiYF5lc"jH
(OӔТӏ*ؘ7%SHCC cFB8`pG X!JŠ{
)
-8KFHm$+9SQFҨ1l['+-?E`\ej)4DAE(65H-GB#A,+Ih-9>Hm$+9SQFҨ1l['+-?඘՛"Ug>-hiIVR*aEZIlFU) aNӚ{¿%z*UD5GLF8Dg4kT0L2MlTwIi֌­<Y&q:{&'j&WKN<`5ZIVaa2h|MSO(*j:LaʶyI*i(&JIiȞL`5e5јY:D-@VIC*MHaӌiKO->c"0i #kFr8&J<3ŖIC@f SrKO8 <D0`"AFcA@DH<xHppH	Ii%8pC 4	 
"(I*Dd[%5	9mYIi86PP=*r8KO8 <D0`@ pp H<`HF1C 4	 
F8a!"(I*Dd[%5	9mYI+Z86cF5	(أ-?"C @x!pH%y%GDG)V{'5Ѵf#[Jd&(IزɓZq5JOBiE5=t"
՞P0հP+ӏ$@x!Am$C@m0[1Jm$IiPQ"(S+RA C"zOb-@Yç)T֬@V@Ii%IQC+=IR`R3-P-Al@TpWKN<O&LeR,jm$u@Z<5=3(9Yljj`l85aPp?ZIiF1`p<AXkV{?->㇠aA`F1`p<AXkV{ `#@СdPIS< A

%?
TbqSTuhZIi &b(y
֬Ii@JEhphf"h jgZIiđ[%5ѴyARkDD(ZIi H(8h-?c	08c5= KO"C 4	 
LQaY 4h$hp(p--0JEh0@P P#Ii%)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRȠ0EjjiQP JYr{jMi"ZSZzwwwwwwwwwwwwww,^ c1Ob-@gњLQTɞ,
EbEl(IiE528z`[Z3PQQ12\ɞ((
O4Ҩ#=Ob-@Y임"
՞\x	LERc'gvQStث
RX3,0F*b(I+,_QUAmj=Ob-@Yæ
Od"
՞ <h8Gڂ)Z1SEGZ}j`Z[kFJa2j@ <\AHV&kh6b%PUm&*j*yI*8Ob,(m$5SVQSIQ0O Ьy%JmQAS1 n.XQѰ***zQ_廻,p5\iEIm@TaE 	/`5AJ	   Ae8zwwwwwwwwwwwwx5Q* jb7wwwwwwwwwwwwwr)HaYFiQUj->&kTOA1a<rj
AmR6TTQQIHQj`#mAl
.XR-[jeXT1=1T,#L=
"5dA`/9Hl1=IVacL
	0eT Ҫ*q5@&cq UZwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwHYhƬ0^,گOb-P Vh@Ixj=i#O@[B S
5g*	q5@&La pVlKaQ=nǒR**Z،U9S%cF(lè[-$QX5/1AbeZggњLQ,_PjjcV{?SJf2(jeU հRJW*EaY
bL0Laɞ,jcPZ-S.X9h&MC0ඞ*jcPZ@5-d֩_rjETU_x-MFJ<"zʴTm?.X( P!B#ǂ  XKFm$"aRm
.XAmPm1P@>Z&y5gD'hV|q/-(_rji8*Rm$31='<EJ඘Ì@r*Rڂ(/ɨ
AmPrؠԇk&m$P0հRy5V(&+a(cV{󖉂d 9lPyRjC5h&MHIVa`2kb*PMH\'PƬbL0LQɩI*,ڶ
O#@T16AF<EJMlUJ	OPWb`5H- +5h&MHIQdհRyQ	
0М\aʴTdXTP0/ֈ5CX`5bSI)P0հRfA1rS&D
AmPrؠԀ&MG^bSI)	5V(&A1\Զ
E[Z ɨ5MR#$RTةcb(bl L
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwHYhƬjp"հƬPjjcV{?Lj̓Yad=WL&jx@IxjETU_< 'iId<q5C y඘Ì@*< $L0L-*PMHA%-ɨ
AmPrؠԀ< $L0LQL&)@E`_ E5fIQ/Z#0adwKֈڠAJ	0L%D
AmP)X5	Q߃ ,UڣZ入
QE15gǒTɞ,
HaYFb
EGVI*QLiY.Xi$aÎđQ֟i QlU4)
0S+RQrjmAl$j>JUlji#ʷ,_"zkV@bY@(cZmAlIidZq2a	(cZ
c+(јq8&6("Bf0ءbkbb	ulRb
8ƨO*r$.X*
n-՛*V(&{Ip E5fdڂ)1PЀd@jS{lp--@I Ԁ@Yb,cT,-. aU!e)ƫJl[Va5G &{ @-[T 	   <,F ]"a1j( ZcVmlizƨ-՛=PZ՞&=Pq՞ ZcVlXt/AE[@[L4 A`YaiwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwHYai$`yAURR6تrEPQ"(C@BL @x
ǒTɞ,
@(تѭSQ֟,&Lic&PUdԌ(UAE(%2J Y5!@bR3"([t @x0
,-./+b @"wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwt-DkVUl4TV{'[&iIJ:&b*:{",:BL[՞c0@bj((aW"r <D0`1"*8 <D0`9PF8zP40	 8<i[<D0`㇠aA	8@< ÃƐ!/QQC *㇠aŐ[T*"ÔF8a!1"*8a!a"XDQ|r4`pp9Ca_+bA@088 9DVG4`pp8XL9dK,'(pC 4	 
/QQ !<QA0Z9PN@pBcElTp H<`HF? @$0x d@ 9DVG4h$hp(TAmP8_,Q@DH<xH9DVG <D0`"AFa"XDQ|r4h$hp(0/QQ C 4	 
/QQC 4	 
),eD@x`Dǎ/QQ !840@Uj<QA2 B_+bA@DH<xHp0Z @L H(ب!84T@T T,h9DVGDG@DH<xHr
( 9DVG4x1"*8x`Dǎ),e!e"JT
&&ةP+,,0
2*a, ÃƂ,,9Dc8<h,Lʀm@T a"Y`e0呅@pHRX k\ar
 *className ( ) const;

/*------------------------------ Implementation --------------------------------
| These functions provide services used to implement this class:               |
|   isCharValid - Returns true if and only if the character at the given       |
|                 index is in the set of valid characters.                     |
|   isDBCS1     - Returns true if and only if the byte at the given offset     |
|                 is the first byte of DBCS.                                   |
|   isPrevDBCS  - Returns true if and only if the preceding character to the   |
|                 one at the given offset is a DBCS character.                 |
|   charLength  -                                                              |
|   maxCharLength - returns maximum length of a multibyte character            |
|   prevCharLength -                                                           |
|   isSBC       - returns true if character is NOT a multibyte character       |
|                                                                              |
------------------------------------------------------------------------------*/
Boolean
  isCharValid ( unsigned    pos,
                const char *pValidChars,
                unsigned    numValidChars ) const;


static size_t
  charLength ( char const* ),
  maxCharLength ( );

size_t
  charLength ( unsigned pos ) const,
  prevCharLength ( unsigned pos ) const;

static Boolean
  isSBC ( char const* );

friend class IBuffer;
/*------------------------------- Constructor ----------------------------------
| The constructor for this class is protected.  It is only called from the     |
| member function allocate and the static member function IBuffer::initialize. |
------------------------------------------------------------------------------*/
  IDBCSBuffer ( unsigned bufLength );
  ~IDBCSBuffer ( );
}; // class IDBCSBuffer

/*----------------------------------------------------------------------------*/
/* Resume compiler default packing.                                           */
/*----------------------------------------------------------------------------*/
#pragma pack()

#ifndef I_NO_INLINES
  #include <idbcsbuf.inl>
#endif

#endif // _IDBCSBUF_
   kJ } $          $...
         }        ./usr/lpp/xlC/include/idbcsbuf.inl               $          $          #ifndef _IDBCSBUF_INL_
#define _IDBCSBUF_INL_ 0
/*******************************************************************************
* FILE NAME: idbcsbuf.inl                                                      *
*                                                                              *
* DESCRIPTION:                                                                 *
*   This file contains the definition of the inline functions for the          *
*   class(es) declared in idbcsbuf.hpp.                                        *
*                                                                              *
* COPYRIGHT:                                                                   *
*   Licensed Materials - Property of IBM                                       *
*   (C) Copyright IBM Corporation 1992, 1994                                   *
*   All Rights Reserved                                                        *
*   US Government Users Restricted Rights - Use, duplication, or               *
*   disclosure                                                                 *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
*******************************************************************************/
#ifndef _IDBCSBUF_
  #undef  _IDBCSBUF_INL_
  #define _IDBCSBUF_INL_ 1
  #include <idbcsbuf.hpp>
#endif

#if _IDBCSBUF_INL_
  #define inline
#endif

inline size_t IDBCSBuffer :: charLength ( char const* p )
  {
  if ( *p == 0 )
     return 1;
  else
     return mblen ( p, MB_LEN_MAX );
  }

inline size_t IDBCSBuffer :: charLength ( unsigned pos ) const
  {
  return charLength ( contents() + pos - 1 );
  }

inline size_t IDBCSBuffer :: maxCharLength ( )
  {
  return MB_CUR_MAX;
  }

inline IBase::Boolean IDBCSBuffer :: isSBC ( char const* p )
  {
  return ( charLength ( p ) == 1 );
  }

#endif // _IDBCSBUF_INL_
   poskf! } $        $  $...
         ~  $      ./usr/lpp/xlC/include/istrtest.hpp               $          $          #ifndef _ISTRTEST_
#define _ISTRTEST_
/*******************************************************************************
* FILE NAME: istrtest.hpp                                                      *
*                                                                              *
* DESCRIPTION:                                                                 *
*   This file contains the declaration(s) of the class(es):                    *
*     IStringTest - Abstract "string test" class.                              *
*                                                                              *
* COPYRIGHT:                                                                   *
*   Licensed Materials - Property of IBM                                       *
*   (C) Copyright IBM Corporation 1992, 1994                                   *
*   All Rights Reserved                                                        *
*   US Government Users Restricted Rights - Use, duplication, or               *
*   disclosure                                                                 *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
*******************************************************************************/
#ifndef _IVBASE_
  #include <ivbase.hpp>
#endif

/*----------------------------------------------------------------------------*/
/* Align classes on four byte boundary.                                       */
/*----------------------------------------------------------------------------*/
#pragma pack(4)

extern "C"
  {
  typedef IBase::Boolean ICStrTestFn( int );
  }

class IStringTest : public IVBase {
typedef IVBase
  Inherited;
/*******************************************************************************
  The IStringTest class defines the basic protocol for test objects that can
  be passed to IStrings (or I0Strings) to assist in performing various
  testing and searching functions.  It also provides concrete implementation
  for the common case of using a plain C function for such testing.

  A derived template class, IStringTestMemberFn, is provided to permit the
  use of member functions of any class on the IString functions that support
  IStringTest.

  Derived classes should re-implement the test virtual function to test
  characters passed by the IString and return the appropriate result.

  A constructor for this class accepts a pointer to a C function that accepts
  an integer as an argument and returns a Boolean.  Such functions can be
  used anywhere an IStringTest can be used.  Note that this is the type of
  the standard C library is.... functions that check the type of C characters.

  Example:
    // Strip leading alphanumerics from aString...
    IString
      aString;
    ...
    aString.stripLeading( isalnum ); // Uses C library isalnum function.
*******************************************************************************/
public:
/*------------------------------ Function Types --------------------------------
  CFunction   - Pointer to the C function that accepts an integer argument
                and returns Boolean.
  CPPFunction - Pointer to plain (static or non-member) C++ function
                accepting integer argument and returning Boolean.
------------------------------------------------------------------------------*/
typedef ICStrTestFn
  CFunction;
typedef Boolean
  CPPFunction( int );

/*------------------------------- Constructor ---------------------------------
  An object of this class can be constructed with a pointer to the C
  function to be used to implement the test member function.
------------------------------------------------------------------------------*/
  IStringTest ( CFunction   &cFunc );
#ifdef IC_NOTYET
  IStringTest ( CPPFunction &cppFunc ); //Compiler doesn't support this yet.
#endif //IC_NOTYET
  ~IStringTest ( );

/*--------------------------------- Testing ------------------------------------
  test - This function tests the argument integer (character) and returns
         true or false as returned by the C function provided at construction.
         Derived classes should override this function to implement their own
         testing function.
------------------------------------------------------------------------------*/
virtual Boolean
  test ( int c ) const;

protected:
/*------------------------------ Implementation --------------------------------
  FnType - Enumeration describing the various flavors of functions
           supported.
             user   - User-defined.
             c      - C.
             cpp    - C++ static or non-member function.
             memFn  - C++ member function.
             cMemFn - Const C++ member function.

  data   - Data member union, varying by FnType:
             cFn   - Pointer to a C function.
             user  - Pointer to an arbitrary derived-class data (if FnType is
                     neither c nor cpp).
------------------------------------------------------------------------------*/
enum FnType { user, c, cpp, memFn, cMemFn };
FnType
  type;

#ifdef IC_NOTYET
union { CFunction *cFn; CPPFunction *cppFn; void *user; } data;
#endif
#ifndef IC_NOTYET
union { CFunction *cFn; void *user; } data;
#endif

/*--------------------- Protected Constructor ----------------------------------
  This protected constructor can be used by derived classes to
  reuse the space for the C/C++ function pointer.
------------------------------------------------------------------------------*/
  IStringTest ( FnType  type,
                void   *userData );

}; // class IStringTest

template < class T >
class IStringTestMemberFn : public IStringTest {
/*******************************************************************************
  The template class IStringTestMemberFn is used to provide an
  IStringTest-type wrapper for particular C++ member functions.  This permits
  such member functions to be used in conjunction with the IString (and
  I0String) functions that accept an IStringTest object as an argument.

  The template class argument is the class name T of the class whose member
  function is to be wrappered.

  The constructor for the object requires two things:
     - An instance of class T.
     - A pointer to a member function of the class T.  This member function
       will be applied to the object specified on the constructor to test
       each character passed to the test function of this class.  The member
       function must accept a single integer argument and return Boolean.

  Both const and non-const member functions are supported.  The latter
  require that a non-const member be specified as the first argument.

  Example:
    // Any arbitrary class with appropriate function...
    struct StringTester {
    Boolean
      charTest( int c ) const;
    };
    // StringTester object...
    StringTester
      tester;
    // Test aString using tester object...
    IString
      aString;
    ...
    aString
      .includes( IStringTestMemberFn<StringTester>( tester,
                                                    StringTester::charTest ) );

  Customization (Template Arguments)
  Class IStringTestMemberFn is a template class instantiated with the
  template arguments:

    class T
*******************************************************************************/
public:
/*------------------------------ Related Types ---------------------------------
  ConstFn    - Const member function of the appropriate type.
  NonconstFn - Non-const member function of the appropriate type.
------------------------------------------------------------------------------*/
typedef Boolean
 ( T::*ConstFn )( int ) const;
typedef Boolean
 ( T::*NonconstFn )( int );

/*------------------------------- Constructors ---------------------------------
  There are two constructors, one supporting const member functions, the
  other non-const member functions.  The constructors also require an object
  of the class T (non-const object for non-const member functions).
------------------------------------------------------------------------------*/
  IStringTestMemberFn ( const T    &object,
                        ConstFn     constFn )
    : IStringTest( user, (void*)&object ),
      cMF( constFn )
    {
    }
  IStringTestMemberFn ( T          &object,
                        NonconstFn  nonconstFn )
    : IStringTest( user, (void*)&object ),
      ncMF( nonconstFn )
    {
    }

/*-------------------------------- Overrides -----------------------------------
  test - Overridden to dispatch a member function against an object.
------------------------------------------------------------------------------*/
virtual Boolean
  test ( int c ) const
    {
    if ( this->type == cMemFn )
      return ((const T*)data.user->*cMF)( c );
    else
      return ((T*)data.user->*ncMF)( c );
    }

private: /*------------------------ PRIVATE ----------------------------------*/
union { ConstFn cMF; NonconstFn ncMF; };
};

/*----------------------------------------------------------------------------*/
/* Resume compiler default packing.                                           */
/*----------------------------------------------------------------------------*/
#pragma pack()

#ifndef I_NO_INLINES
  #include <istrtest.inl>
#endif

#endif // _ISTRTEST_
ata;
#kq } $        %  $...
         ~  %      ./usr/lpp/xlC/include/itime.hpp          $          $          #ifndef _ITIME_
#define _ITIME_
/*******************************************************************************
* FILE NAME: itime.hpp                                                         *
*                                                                              *
* DESCRIPTION:                                                                 *
*   Declaration of the class(es):                                              *
*     ITime - Class of objects representing time-of-day values                 *
*                                                                              *
* COPYRIGHT:                                                                   *
*   Licensed Materials - Property of IBM                                       *
*   (C) Copyright IBM Corporation 1992, 1994                                   *
*   All Rights Reserved                                                        *
*   US Government Users Restricted Rights - Use, duplication, or disclosure    *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
*******************************************************************************/
#ifndef _IBASE_
  #include <ibase.hpp>
#endif

#ifndef _ISTRING_
  #include <istring.hpp>
#endif


/*----------------------------------------------------------------------------*/
/* Align classes on four byte boundary.                                       */
/*----------------------------------------------------------------------------*/
#pragma pack(4)

class ostream;

class ITime : public IBase {
/*******************************************************************************
* Objects of the ITime class represent units of time (hours, minutes, and      *
* seconds) as portions of days and provide support for converting these units  *
* of time into numeric and ASCII format.                                       *
*                                                                              *
* ITime objects can be compared and operated on by adding them to and          *
* subtracting them from other ITime objects.                                   *
*                                                                              *
* A related class whose objects also represent units of time is the IDate      *
* class.                                                                       *
*******************************************************************************/
public:
/*------------------------ Constructors ----------------------------------------
| You can construct ITime objects in the following ways:                       |
|                                                                              |
|    - By using the default constructor, which returns the current time.       |
|                                                                              |
|    - By giving the number of seconds since midnight that the time is to      |
|      represent.  In this case, the number of seconds can be negative and is  |
|      subtracted from the number of seconds in a day.                         |
|                                                                              |
|    - By giving the number of hours, minutes, and seconds since midnight      |
|      that the time is to represent.  I