// // wclist.h Defines the WATCOM Container List Classes // // ========================================================================= // // Open Watcom Project // // Copyright (c) 2002-2010 Open Watcom Contributors. All Rights Reserved. // Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved. // // This file is automatically generated. Do not edit directly. // // ========================================================================= // #ifndef _WCLIST_H_INCLUDED #define _WCLIST_H_INCLUDED #ifndef _ENABLE_AUTODEPEND #pragma read_only_file; #endif #ifndef __cplusplus #error This header file requires C++ #endif #pragma warning 621 9 // I want the behaviour this warning points to #ifndef _WCDEFS_H_INCLUDED #include #endif #ifndef _WCEXCEPT_H_INCLUDED #include #endif #ifndef _WCLCOM_H_INCLUDED #include #endif #ifndef _WCLBASE_H_INCLUDED #include #endif // // This defines a single linked list of values of type // // The base class is invoked to process the copy and assignment // constructors. The copies are shallow, in that only the values // contained in the list are copied. If the contained values // themselves have defined copy constructors, they can effect a // deeper copy. // template class WCValSList : public WCValListBase< Type, WCIsvSListBase >, WCNIsvSLink > { private: // This virtual function defines equivalence for the base classes. virtual int base_equivalent( const Type &elem1, const Type &elem2 ) const { return( elem1 == elem2 ); }; public: inline WCValSList( void * (*user_alloc)( size_t ) , void (*user_dealloc)( void *, size_t ) ) : WCValListBase( user_alloc, user_dealloc ) {}; inline WCValSList() : WCValListBase( 0, 0 ) {}; inline ~WCValSList() {}; inline WCValSList( const WCValSList & olist ) { base_construct( &olist ); }; inline WCValSList & operator=( const WCValSList & olist ) { base_assign( &olist ); return( *this ); }; }; // // This defines a double linked list of values of type // // The base class is invoked to process the copy and assignment // constructors. The copies are shallow, in that only the values // contained in the list are copied. If the contained values // themselves have defined copy constructors, they can effect a // deeper copy. // template class WCValDList : public WCValListBase >, WCNIsvDLink > { private: // This virtual function defines equivalence for the base classes. virtual int base_equivalent( const Type &elem1, const Type &elem2 ) const { return( elem1 == elem2 ); }; public: inline WCValDList( void * (*user_alloc)( size_t ) , void (*user_dealloc)( void *, size_t ) ) : WCValListBase( user_alloc, user_dealloc ) {}; inline WCValDList() : WCValListBase( 0, 0 ) {}; inline ~WCValDList() {}; inline WCValDList( const WCValDList & olist ) { base_construct( &olist ); }; inline WCValDList & operator=( const WCValDList & olist ) { base_assign( &olist ); return( *this ); }; }; // // This defines a single linked list of pointers of type // // The base class is invoked to process the copy and assignment // constructors. The copies are shallow, in that only the pointers // contained in the list are copied. // deeper copy. // template class WCPtrSList : public WCPtrListBase > { private: // This virtual function defines equivalence for the base classes. virtual int base_equivalent( Type * const &elem1 , Type * const &elem2 ) const { return( *(const Type *)elem1 == *(const Type *)elem2 ); }; public: inline WCPtrSList( void * (*user_alloc)( size_t ) , void (*user_dealloc)( void *, size_t ) ) : WCPtrListBase( user_alloc, user_dealloc ) {}; inline WCPtrSList() : WCPtrListBase( 0, 0 ) {}; inline ~WCPtrSList() {}; inline WCPtrSList( const WCPtrSList & olist ) { base_construct( &olist ); }; inline int index( const Type * ptr ) const { return( WCPtrListBase::index( (Type * const)ptr ) ); }; inline WCPtrSList & operator=( const WCPtrSList & olist ) { base_assign( &olist ); return( *this ); }; }; // // This defines a double linked list of pointers of type // // The base class is invoked to process the copy and assignment // constructors. The copies are shallow, in that only the pointers // contained in the list are copied. // template class WCPtrDList : public WCPtrListBase > { private: // This virtual function defines equivalence for the base classes. virtual int base_equivalent( Type * const &elem1 , Type * const &elem2 ) const { return( *(const Type *)elem1 == *(const Type *)elem2 ); }; public: inline WCPtrDList( void * (*user_alloc)( size_t ) , void (*user_dealloc)( void *, size_t ) ) : WCPtrListBase( user_alloc, user_dealloc ) {}; inline WCPtrDList() : WCPtrListBase( 0, 0 ) {}; inline ~WCPtrDList() {}; inline WCPtrDList( const WCPtrDList & olist ) { base_construct( &olist ); }; inline int index( const Type * ptr ) const { return( WCPtrListBase::index( (Type * const)ptr ) ); }; inline WCPtrDList & operator=( const WCPtrDList & olist ) { base_assign( &olist ); return( *this ); }; }; // // This defines a single linked list of values of type , // stored intrusively. // // The copy and assignment constructors are made private so // that a second copy of the list is not made (intrusive lists // require modification of the base links, making second copies // a problem). // template class WCIsvSList : public WCPtrListBase > { private: WCIsvSList( const WCIsvSList & ); WCIsvSList & operator=( const WCIsvSList & ); protected: // // This constuctor is necessary for inherited classes such as WCStack and // WCQueue to be able to support user allocators and deallocators. // It is not intended for users of the class. // inline WCIsvSList( void * (*)( size_t ), void (*)( void *, size_t ) ) {}; public: inline WCIsvSList() {}; inline ~WCIsvSList() {}; inline void forAll( void (*fn)( Type *, void * ), void *data ) { WCPtrListBase::forAll( fn, data ); }; inline int index( int (*test_fn)( const Type *, void * ) , void *data ) const { return( WCPtrListBase::index( test_fn, data ) ); }; inline int index( const Type *elem ) const { return( WCPtrListBase::index( elem ) ); }; }; // // This defines a double linked list of values of type , // stored intrusively. // // The copy and assignment constructors are made private so // that a second copy of the list is not made (intrusive lists // require modification of the base links, making second copies // a problem). // template class WCIsvDList : public WCPtrListBase > { private: WCIsvDList( const WCIsvDList & ); WCIsvDList & operator=( const WCIsvDList & ); protected: // // This constuctor is necessary for inherited classes such as WCStack and // WCQueue to be able to support user allocators and deallocators. // It is not intended for users of the class. // inline WCIsvDList( void * (*)( size_t ), void (*)( void *, size_t ) ) {}; public: inline WCIsvDList() {}; inline ~WCIsvDList() {}; inline void forAll( void (*fn)( Type *, void * ), void *data ) { WCPtrListBase::forAll( fn, data ); }; inline int index( int (*test_fn)( const Type *, void * ) , void *data ) const { return( WCPtrListBase::index( test_fn, data ) ); }; inline int index( const Type *elem ) const { return( WCPtrListBase::index( elem ) ); }; }; #endif