home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************
- * TOOLS.HXX
- * (c) 1992 STAR DIVISION
- *************************************************************************/
- #ifndef _TOOLS_HXX
- #define _TOOLS_HXX
- #define E2I
- #ifndef _SOLAR_H
- #include "solar.h"
- #endif
-
- #ifndef _TOOLS_H
- #define _TOOLS_H
-
- #ifndef _SOLAR_H
- #endif
-
- #endif
-
- #ifndef _LINK_HXX
- #define _LINK_HXX
-
- #ifndef _TOOLS_H
- #endif
-
- class LinkHdl
- {
- #ifdef _MSC_VER
- virtual void MakeVTabForMSC();
- #endif
- };
-
- typedef long (LinkHdl::*PFUNC)( void* pCaller );
-
- class Link
- {
- protected:
- LinkHdl* pInst;
- PFUNC pMemFunc;
-
- public:
- Link();
- Link( LinkHdl* pFuncOwner, PFUNC pProc );
-
- long Call( void* pCaller )
- { return( (pInst && pMemFunc) ?
- (pInst->*pMemFunc)( pCaller ) : 0 ); }
-
- BOOL IsSet() const { return (pInst && pMemFunc); }
-
- BOOL operator==( const Link& rLink ) const;
- BOOL operator!=( const Link& rLink ) const;
- };
-
- #ifdef _MSC_VER
- #define NEWLINK
- #endif
-
- #ifdef NEWLINK
-
- #define LINK( pInst, Class, pMemFunc ) \
- Link( (LinkHdl*)pInst, \
- (PFUNC)(long (Class::*)( void* )) &Class::pMemFunc )
-
- #else
-
- #define LINK( pInst, pMemFunc ) Link( pInst, (PFUNC)&pMemFunc )
-
- #endif
-
- #endif
-
- #define _PAIR Pair
- #define _POINT Point
- #define _SIZE Size
- #define _RANGE Range
- #define _SELECTION Selection
- #define _RECTANGLE Rectangle
-
- #define _PAIR_2 LPair
- #define _POINT_2 LPoint
- #define _SIZE_2 LSize
- #define _RANGE_2 LRange
- #define _SELECTION_2 LSelection
- #define _RECTANGLE_2 LRectangle
-
- #define _SL_TYPE short
-
- #define RANGE_MIN ((short)0x8000)
- #define RANGE_MAX 0x7FFF
-
- #define SELECTION_MIN ((short)0x8000)
- #define SELECTION_MAX 0x7FFF
-
- #ifndef _TOOLS_H
- #endif
-
- class _PAIR_2;
- class _POINT_2;
- class _SIZE_2;
- class _RANGE_2;
- class _SELECTION_2;
- class _RECTANGLE_2;
-
- class _PAIR
- {
- protected:
- _SL_TYPE nA;
- _SL_TYPE nB;
-
- public:
- _PAIR() { nA = 0; nB = 0; }
- _PAIR( const _PAIR& rPair );
- _PAIR( _SL_TYPE nA, _SL_TYPE nB ) { _PAIR::nA = nA; _PAIR::nB = nB; }
- _PAIR( const _PAIR_2& rPair );
-
- _SL_TYPE A() const { return nA; }
- _SL_TYPE B() const { return nB; }
-
- _SL_TYPE& A() { return nA; }
- _SL_TYPE& B() { return nB; }
-
- BOOL operator == ( const _PAIR& rPair ) const
- { return ( nA == rPair.A() ) && ( nB == rPair.B() ); }
- BOOL operator != ( const _PAIR& rPair ) const
- { return ( nA != rPair.A() ) || ( nB != rPair.B() ); }
-
- _PAIR& operator = ( const _PAIR& rPair );
- _PAIR& operator = ( const _PAIR_2& rPair );
- };
-
- class _POINT : public _PAIR
- {
- public:
- _POINT() {}
- _POINT( const _POINT& rPOINT );
- _POINT( _SL_TYPE nX, _SL_TYPE nY ) : _PAIR( nX, nY ) {}
- _POINT( const _POINT_2& rPoint );
-
- _POINT& operator += ( const _POINT& rPoint );
- _POINT& operator -= ( const _POINT& rPoint );
- _POINT& operator *= ( const _SL_TYPE nVal );
- _POINT& operator /= ( const _SL_TYPE nVal );
-
- friend _POINT operator+( const _POINT &rVal1, const _POINT &rVal2 );
- friend _POINT operator-( const _POINT &rVal1, const _POINT &rVal2 );
- friend _POINT operator*( const _POINT &rVal1, const _SL_TYPE nVal2 );
- friend _POINT operator/( const _POINT &rVal1, const _SL_TYPE nVal2 );
-
- _SL_TYPE X() const { return nA; }
- _SL_TYPE Y() const { return nB; }
-
- _SL_TYPE& X() { return nA; }
- _SL_TYPE& Y() { return nB; }
-
- BOOL IsAbove( const _POINT& rPoint ) const { return nB > rPoint.nB; }
- BOOL IsBelow( const _POINT& rPoint ) const { return nB < rPoint.nB; }
- BOOL IsLeft( const _POINT& rPoint ) const { return nA < rPoint.nA; }
- BOOL IsRight( const _POINT& rPoint ) const { return nA > rPoint.nA; }
- };
-
- class _SIZE : public _PAIR
- {
- public:
- _SIZE() {}
- _SIZE( const _SIZE& rSize );
- _SIZE( _SL_TYPE nWidth, _SL_TYPE nHeight ) : _PAIR( nWidth, nHeight ) {}
- _SIZE( const _SIZE_2& rSize );
-
- _SL_TYPE Width() const { return nA; }
- _SL_TYPE Height() const { return nB; }
-
- _SL_TYPE& Width() { return nA; }
- _SL_TYPE& Height() { return nB; }
- };
-
- class _RANGE : public _PAIR
- {
- public:
- _RANGE() {}
- _RANGE( const _RANGE& rRange );
- _RANGE( _SL_TYPE nMin, _SL_TYPE nMax ) : _PAIR( nMin, nMax ) {}
- _RANGE( const _RANGE_2& rRange );
-
- _SL_TYPE Min() const { return nA; }
- _SL_TYPE Max() const { return nB; }
- _SL_TYPE Len() const { return nB - nA + 1; }
-
- _SL_TYPE& Min() { return nA; }
- _SL_TYPE& Max() { return nB; }
-
- BOOL IsInside( _SL_TYPE nIs ) const
- { return( (nA <= nIs) && (nIs <= nB ) ); }
-
- void Justify();
- };
-
- class _SELECTION : public _PAIR
- {
- public:
- _SELECTION() {}
- _SELECTION( const _SELECTION& rSelection );
- _SELECTION( _SL_TYPE nPos ) : _PAIR( nPos, nPos ) {}
- _SELECTION( _SL_TYPE nMin, _SL_TYPE nMax ) : _PAIR( nMin, nMax ) {}
- _SELECTION( const _SELECTION_2& rSelection );
-
- _SL_TYPE Min() const { return nA; }
- _SL_TYPE Max() const { return nB; }
- _SL_TYPE Len() const { return nB - nA; }
-
- _SL_TYPE& Min() { return nA; }
- _SL_TYPE& Max() { return nB; }
-
- BOOL IsInside( _SL_TYPE nIs ) const
- { return( (nA <= nIs) && (nIs < nB ) ); }
- void Justify();
-
- BOOL operator !() const
- { return !Len(); }
- };
-
- class _RECTANGLE
- {
- private:
- _SL_TYPE nLeft;
- _SL_TYPE nTop;
- _SL_TYPE nRight;
- _SL_TYPE nBottom;
-
- public:
- _RECTANGLE() { nLeft = nTop = nRight = nBottom = (_SL_TYPE) 0; }
- _RECTANGLE( const _RECTANGLE& rRect );
- _RECTANGLE( const _POINT& rLT, const _POINT& rRB )
- : nLeft ( rLT.X() ),
- nTop ( rLT.Y() ),
- nRight ( rRB.X() ),
- nBottom( rRB.Y() ) {}
- _RECTANGLE( _SL_TYPE nLeft, _SL_TYPE nTop,
- _SL_TYPE nRight, _SL_TYPE nBottom )
- : nLeft ( nLeft ),
- nTop ( nTop ),
- nRight ( nRight ),
- nBottom( nBottom ) {}
- _RECTANGLE( const _POINT& rLT, const _SIZE& rSize )
- : nLeft ( rLT.X() ),
- nTop ( rLT.Y() ),
- nRight ( nLeft + rSize.Width() - 1 ),
- nBottom( nTop + rSize.Height() - 1 ) {}
- _RECTANGLE( const _RECTANGLE_2& rRect );
-
- _SL_TYPE Left() const { return nLeft; }
- _SL_TYPE Right() const { return nRight; }
- _SL_TYPE Top() const { return nTop; }
- _SL_TYPE Bottom() const { return nBottom; }
-
- _SL_TYPE& Left() { return nLeft; }
- _SL_TYPE& Right() { return nRight; }
- _SL_TYPE& Top() { return nTop; }
- _SL_TYPE& Bottom() { return nBottom; }
-
- _POINT TopLeft() const { return _POINT( (_SL_TYPE) nLeft, (_SL_TYPE) nTop ); }
- _POINT TopRight() const { return _POINT( (_SL_TYPE) nRight, (_SL_TYPE) nTop ); }
- _POINT TopCenter() const;
- _POINT BottomLeft() const { return _POINT( (_SL_TYPE) nLeft, (_SL_TYPE) nBottom ); }
- _POINT BottomRight() const { return _POINT( (_SL_TYPE) nRight, (_SL_TYPE) nBottom ); }
- _POINT BottomCenter() const;
- _POINT LeftCenter() const;
- _POINT RightCenter() const;
- _POINT Center() const;
-
- _POINT ChangePos( const _POINT& rPoint );
- _SIZE ChangeSize( const _SIZE rSize );
- _SIZE GetSize() const { return _SIZE( nRight-nLeft+1, nBottom-nTop+1 ); }
-
- _RECTANGLE GetUnion( const _RECTANGLE& rRect ) const;
- _RECTANGLE GetIntersection( const _RECTANGLE& rRect ) const;
-
- void Justify();
-
- BOOL IsInside( const _POINT& rPOINT ) const;
- BOOL IsInside( const _RECTANGLE& rRect ) const;
- BOOL IsOver( const _RECTANGLE& rRect ) const;
-
- BOOL operator == ( const _RECTANGLE& rRect ) const;
- BOOL operator != ( const _RECTANGLE& rRect ) const;
-
- _RECTANGLE& operator = ( const _RECTANGLE& rRect );
- };
-
- #undef _PAIR
- #undef _POINT
- #undef _SIZE
- #undef _RANGE
- #undef _SELECTION
- #undef _RECTANGLE
-
- #undef _PAIR_2
- #undef _POINT_2
- #undef _SIZE_2
- #undef _RANGE_2
- #undef _SELECTION_2
- #undef _RECTANGLE_2
-
- #undef _SL_TYPE
-
- #ifndef _GEN_HXX
- #define _GEN_HXX
- #endif
-
- #ifndef _GEN_HXX
- #define _GEN_HXX
-
- #endif
-
-
- #ifndef _FRACT_HXX
- #define _FRACT_HXX
-
- #ifndef _TOOLS_H
- #endif
-
- class Fraction
- {
- private:
- short nNumerator, nDenominator;
-
- public:
- Fraction() { nNumerator = 0; nDenominator = 1; };
- Fraction( short nNum, short nDen=1 );
- Fraction( double dVal );
-
- BOOL IsValid() const { return nDenominator > 0? TRUE : FALSE; };
-
- short GetNumerator() const { return nNumerator; }
- short GetDenominator() const { return nDenominator; }
-
- operator short() const;
- operator double() const;
- Fraction& operator=( const Fraction& rfrFrac );
-
- Fraction& operator+=( const Fraction& rfrFrac );
- Fraction& operator-=( const Fraction& rfrFrac );
- Fraction& operator*=( const Fraction& rfrFrac );
- Fraction& operator/=( const Fraction& rfrFrac );
-
- friend Fraction operator+( const Fraction & aVal1, const Fraction & aVal2 );
- friend Fraction operator-( const Fraction & aVal1, const Fraction & aVal2 );
- friend Fraction operator*( const Fraction & aVal1, const Fraction & aVal2 );
- friend Fraction operator/( const Fraction & aVal1, const Fraction & aVal2 );
-
- friend BOOL operator<( const Fraction & aVal1, const Fraction & aVal2 );
- friend BOOL operator>( const Fraction & aVal1, const Fraction & aVal2 );
- friend BOOL operator==( const Fraction & aVal1, const Fraction & aVal2 );
- friend BOOL operator!=( const Fraction & aVal1, const Fraction & aVal2 );
- friend BOOL operator<=( const Fraction & aVal1, const Fraction & aVal2 );
- friend BOOL operator>=( const Fraction & aVal1, const Fraction & aVal2 );
- };
-
- #endif
-
- #ifndef _STRING_HXX
- #define _STRING_HXX
-
- #ifndef _TOOLS_H
- #endif
-
- struct StringData
- {
- char* pStr;
- USHORT nLen;
- USHORT nRefCount;
- USHORT nGapPos;
- USHORT nGapSize;
- };
-
- #define STRING_NOTFOUND ((USHORT)0xFFFF)
- #define STRING_MATCH ((USHORT)0xFFFF)
- #define STRING_LEN ((USHORT)0xFFFF)
- #define STRING_MAXLEN ((USHORT)0xFFFE)
-
- class String
- {
- private:
- StringData* pData;
-
- public:
- String();
- String( const String& rStr );
- String( const String& rStr, USHORT nPos, USHORT nLen );
- String( const char* pCharStr );
- String( const char* pCharStr, USHORT nLen );
- String( char c );
- String( int n );
- String( unsigned int n );
- String( short n );
- String( USHORT n );
- String( long n );
- String( ULONG n );
-
- ~String();
-
- operator const char*() const;
- operator char() const;
- operator int() const;
- operator unsigned int() const;
- operator short() const;
- operator USHORT() const;
- operator long() const;
- operator ULONG() const;
-
- String& operator = ( const String& rStr );
- String& operator = ( const char* pCharStr );
-
- String& operator += ( const String& rStr );
- String& operator += ( const char* pCharStr );
- String& operator += ( char c );
- String& operator += ( int n );
- String& operator += ( unsigned int n );
- String& operator += ( short n );
- String& operator += ( USHORT n );
- String& operator += ( long n );
- String& operator += ( ULONG n );
-
- BOOL operator ! () const;
-
- char operator [] ( USHORT nIndex ) const;
- char& operator [] ( USHORT nIndex );
-
- USHORT Len() const;
-
- String& Insert( const String& rStr, USHORT nIndex = STRING_LEN );
- String& Insert( const String& rStr, USHORT nPos, USHORT nLen,
- USHORT nIndex = STRING_LEN );
- String& Insert( const char* pCharStr, USHORT nIndex = STRING_LEN );
- String& Insert( char c, USHORT nIndex = STRING_LEN );
- String& Insert( int n, USHORT nIndex = STRING_LEN );
- String& Insert( unsigned int n, USHORT nIndex = STRING_LEN );
- String& Insert( short n, USHORT nIndex = STRING_LEN );
- String& Insert( USHORT n, USHORT nIndex = STRING_LEN );
- String& Insert( long n, USHORT nIndex = STRING_LEN );
- String& Insert( ULONG n, USHORT nIndex = STRING_LEN );
- String& Replace( const String& rStr, USHORT nIndex = 0 );
- String& Erase( USHORT nIndex = 0, USHORT nCount = STRING_LEN );
- String Cut( USHORT nIndex = 0, USHORT nCount = STRING_LEN );
- String Copy( USHORT nIndex = 0, USHORT nCount = STRING_LEN ) const;
-
- String& Fill( USHORT nCount, char cFillChar = ' ' );
- String& Expand( USHORT nCount, char cExpandChar = ' ' );
-
- String Upper() const;
- String Lower() const;
-
- String& ToUpper();
- String& ToLower();
-
- String& SpaceToZero();
- String& ZeroToSpace();
-
- USHORT Match( const String& rStr ) const;
- USHORT Match( const char* pCharStr ) const;
-
- USHORT Search( const String& rStr, USHORT nIndex = 0 ) const;
- USHORT Search( const char* pCharStr, USHORT nIndex = 0 ) const;
-
- BOOL IsAlpha() const;
- BOOL IsNumeric() const;
- BOOL IsAlphaNumeric() const;
- BOOL IsUpper() const;
- BOOL IsLower() const;
-
- char* AllocStrBuf( USHORT nLen );
- const char* StrGet() const;
-
- friend String operator + ( const String& rStr1, const String& rStr2 );
- friend String operator + ( const String& rStr, const char* pCharStr );
- friend String operator + ( const char* pCharStr, const String& rStr );
-
- friend BOOL operator == ( const String& rStr1, const String& rStr2 );
- friend BOOL operator == ( const String& rStr, const char* pCharStr );
- friend BOOL operator == ( const char* pCharStr, const String& rStr );
- friend BOOL operator != ( const String& rStr1, const String& rStr2 );
- friend BOOL operator != ( const String& rStr, const char* pCharStr );
- friend BOOL operator != ( const char* pCharStr, const String& rStr );
- friend BOOL operator < ( const String& rStr1, const String& rStr2 );
- friend BOOL operator < ( const String& rStr, const char* pCharStr );
- friend BOOL operator < ( const char* pCharStr, const String& rStr );
- friend BOOL operator > ( const String& rStr1, const String& rStr2 );
- friend BOOL operator > ( const String& rStr, const char* pCharStr );
- friend BOOL operator > ( const char* pCharStr, const String& rStr );
- friend BOOL operator <= ( const String& rStr1, const String& rStr2 );
- friend BOOL operator <= ( const String& rStr, const char* pCharStr );
- friend BOOL operator <= ( const char* pCharStr, const String& rStr );
- friend BOOL operator >= ( const String& rStr1, const String& rStr2 );
- friend BOOL operator >= ( const String& rStr, const char* pCharStr );
- friend BOOL operator >= ( const char* pCharStr, const String& rStr );
-
- String operator() ( int n1, int n2 ) const
- { return Copy( n1, n2 ); }
- char& operator() ( int n )
- { return String::operator[](n); }
- unsigned int length() const
- { return Len(); }
-
- int match( const String& r ) const
- { USHORT n;
- if ( (n = Match( r )) == STRING_MATCH )
- return -1;
- else
- return (int)n;
- }
- int match( const char* p ) const
- { USHORT n;
- if ( (n = Match( p )) == STRING_MATCH )
- return -1;
- else
- return (int)n;
- }
-
- int index( const String& r, unsigned int pos = 0 ) const
- { USHORT n;
- if ( (n = Search( r, pos )) == STRING_NOTFOUND )
- return -1;
- else
- return (int)n;
- }
- int index( const char* p, unsigned int pos = 0 ) const
- { USHORT n;
- if ( (n = Search( p, pos )) == STRING_NOTFOUND )
- return -1;
- else
- return (int)n;
- }
-
- String upper() const
- { return Upper(); }
- String lower() const
- { return Lower(); }
- };
-
- #endif
-
- #ifndef _MTF_HXX
- #define _MTF_HXX
-
- #ifndef _TOOLS_H
- #endif
-
- #ifndef _LINK_HXX
- #endif
-
- #ifndef _STRING_HXX
- #endif
-
- class MetaFile;
- class ActionList;
- class LabelList;
-
- class MetaAction
- {
- private:
- USHORT nRefCount;
- USHORT nActionType;
-
- public:
- MetaAction();
- MetaAction( USHORT nType );
- virtual ~MetaAction();
-
- virtual void Execute( void* );
-
- USHORT GetType() const { return nActionType; }
-
- void Duplicate() { nRefCount++; }
- void Delete() { nRefCount--; if ( !nRefCount ) delete this; }
- };
-
- class MetaFile
- {
- private:
- Link aHookHdlLink;
- void* pRecordObject;
- ActionList* pActionList;
- LabelList* pLabelList;
- BOOL bPause;
- BOOL bRecord;
-
- protected:
- virtual void Linker( void*, BOOL );
- virtual long Hook();
-
- public:
- MetaFile();
- MetaFile( const MetaFile& rMtf );
- virtual ~MetaFile();
-
- BOOL AddAction( MetaAction* pAction );
-
- BOOL Clear();
-
- BOOL Record( void* pObj );
- BOOL Pause( BOOL bPaused );
- BOOL Stop();
- BOOL Play( void* pObj );
- BOOL Play( void* pObj, const String& rToLabal );
- BOOL Play( MetaFile& rMtf );
- BOOL Play( MetaFile& rMtf, const String& rToLabal );
-
- BOOL IsRecord() const { return bRecord; }
- BOOL IsPause() const { return bPause; }
-
- BOOL WindStart();
- BOOL WindEnd();
- BOOL Wind( const String& rToLabel );
- BOOL WindPrev();
- BOOL WindNext();
-
- BOOL SetLabel( const String& rLabel );
- String GetLabel( ULONG nLabel ) const;
- ULONG GetLabelCount() const;
- String GetCurLabel() const;
-
- ULONG GetActionCount() const;
- ULONG GetLabelActionCount( const String& rLabel ) const;
- const MetaAction* GetCurAction() const;
-
- Link ChangeHookHdl( const Link& rLink );
- Link GetHookHdl() const;
-
- MetaFile& operator=( const MetaFile& rMtf );
- };
-
- #endif
-
- #ifndef _CONTNR_HXX
- #define _CONTNR_HXX
-
- #ifndef _TOOLS_H
- #endif
-
- class CBlock;
-
- #define CONTAINER_APPEND ((ULONG)0xFFFFFFFF)
- #define CONTAINER_ENTRY_NOTFOUND ((ULONG)0xFFFFFFFF)
-
- class Container
- {
- private:
- CBlock* pFirstBlock;
- CBlock* pLastBlock;
- CBlock* pCurBlock;
- USHORT nCurIndex;
-
- USHORT nBlockSize;
- USHORT nInitSize;
- USHORT nReSize;
-
- ULONG nCount;
-
- protected:
-
- public:
- Container( USHORT nBlockSize,
- USHORT nInitSize,
- USHORT nReSize );
- Container( ULONG nSize );
- Container( const Container& rContainer );
- virtual ~Container();
-
- void Insert( void* p );
- void Insert( void* p, ULONG nIndex );
- void Insert( void* pNew, void* pOld );
-
- void* Remove();
- void* Remove( ULONG nIndex );
- void* Remove( void* p );
-
- void* Replace( void* p );
- void* Replace( void* p, ULONG nIndex );
- void* Replace( void* pNew, void* pOld );
-
- ULONG ChangeSize( ULONG nNewSize );
- ULONG GetSize() const { return nCount; }
-
- ULONG Count() const { return nCount; }
- void Clear();
-
- void* GetCurObject() const;
- ULONG GetCurPos() const;
- void* GetObject( ULONG nIndex ) const;
- ULONG GetPos( void* p ) const;
-
- void* Seek( ULONG nIndex );
- void* Seek( void* p );
- void* First();
- void* Last();
- void* Next();
- void* Prev();
-
- void operator =( const Container& rContainer );
- BOOL operator ==( const Container& rContainer ) const;
- BOOL operator !=( const Container& rContainer ) const;
- };
-
- #endif
-
-
- #ifndef _LIST_HXX
- #define _LIST_HXX
-
- #ifndef _TOOLS_H
- #endif
-
- #ifndef _CONTNR_HXX
- #endif
-
- #define LIST_APPEND CONTAINER_APPEND
- #define LIST_ENTRY_NOTFOUND CONTAINER_ENTRY_NOTFOUND
-
- class List : private Container
- {
- public:
- List( USHORT nInitSize = 16, USHORT nReSize = 16 );
- List( USHORT nBlockSize, USHORT nInitSize,
- USHORT nReSize );
- List( const List& rList );
- virtual ~List();
-
- void Insert( void* p )
- { Container::Insert( p ); }
- void Insert( void* p, ULONG nIndex )
- { Container::Insert( p, nIndex ); }
- void Insert( void* pNew, void* pOld )
- { Container::Insert( pNew, pOld ); }
-
- void* Remove()
- { return Container::Remove(); }
- void* Remove( ULONG nIndex )
- { return Container::Remove( nIndex ); }
- void* Remove( void* p )
- { return Container::Remove( p ); }
-
- void* Replace( void* p )
- { return Container::Replace( p ); }
- void* Replace( void* p, ULONG nIndex )
- { return Container::Replace( p, nIndex ); }
- void* Replace( void* pNew, void* pOld )
- { return Container::Replace( pNew, pOld ); }
-
- void Clear() { Container::Clear(); }
- ULONG Count() const { return Container::Count(); }
-
- void* GetCurObject() const
- { return Container::GetCurObject(); }
- ULONG GetCurPos() const
- { return Container::GetCurPos(); }
- void* GetObject( ULONG nIndex ) const
- { return Container::GetObject( nIndex ); }
- ULONG GetPos( void* p ) const
- { return Container::GetPos( p ); }
-
- void* Seek( ULONG nIndex ) { return Container::Seek( nIndex ); }
- void* Seek( void* p ) { return Container::Seek( p ); }
- void* First() { return Container::First(); }
- void* Last() { return Container::Last(); }
- void* Next() { return Container::Next(); }
- void* Prev() { return Container::Prev(); }
-
- List& operator =( const List& rList )
- { Container::operator =( rList ); return *this; }
-
- BOOL operator ==( const List& rList ) const
- { return Container::operator ==( rList ); }
- BOOL operator !=( const List& rList ) const
- { return Container::operator !=( rList ); }
- };
-
- #define DECLARE_LIST( ClassName, Type ) \
- class ClassName : public List \
- { \
- public: \
- ClassName( USHORT nInitSize = 16, USHORT nReSize = 16 ) : \
- List( nInitSize, nReSize ) {} \
- ClassName( USHORT nBlockSize, USHORT nInitSize, \
- USHORT nReSize ) : \
- List( nBlockSize, nInitSize, nReSize ) {} \
- \
- void Insert( Type p, ULONG nIndex ) \
- { List::Insert( (void*)p, nIndex ); } \
- void Insert( Type p ) \
- { List::Insert( (void*)p ); } \
- void Insert( Type pNew, Type pOld ) \
- { List::Insert( (void*)pNew, (void*)pOld ); } \
- Type Remove() \
- { return (Type)List::Remove(); } \
- Type Remove( ULONG nIndex ) \
- { return (Type)List::Remove( nIndex ); } \
- Type Remove( Type p ) \
- { return (Type)List::Remove( (void*)p ); } \
- Type Replace( Type p ) \
- { return (Type)List::Replace( (void*)p ); } \
- Type Replace( Type p, ULONG nIndex ) \
- { return (Type)List::Replace( (void*)p, nIndex ); } \
- Type Replace( Type pNew, Type pOld ) \
- { return (Type)List::Replace( (void*)pNew, (void*)pOld ); } \
- \
- Type GetCurObject() const \
- { return (Type)List::GetCurObject(); } \
- Type GetObject( ULONG nIndex ) const \
- { return (Type)List::GetObject( nIndex ); } \
- ULONG GetPos( Type p ) const \
- { return List::GetPos( (void*)p ); } \
- \
- Type Seek( ULONG nIndex ) { return (Type)List::Seek( nIndex ); } \
- Type Seek( void* p ) { return (Type)List::Seek( p ); } \
- Type First() { return (Type)List::First(); } \
- Type Last() { return (Type)List::Last(); } \
- Type Next() { return (Type)List::Next(); } \
- Type Prev() { return (Type)List::Prev(); } \
- };
-
- #endif
- #endif
-