/*******************************************************************************
*                              Openwave Systems.                               *
*                            Device Products Group                             *
*                            Melbourne,  AUSTRALIA                             *
********************************************************************************
   DESCRIPTION:
   This is a listing of all the public virtual functions that are supported
   by the extension.  This macro file eases maintenance of the virtual
   functions.  Do not modify the order of this list or anything else, otherwise
   you will <b>break the code</b>.


   REVISION HISTORY:
   Date:       Who:               Email:
      - Details:
--------------------------------------------------------------------------------
   10 Nov 2004 Richard Willis     richard.willis@openwave.com
      - Initial version

*******************************************************************************/
/*******************************************************************************
*                  Copyright (c) Openwave Systems 1995-2004                    *
*                            All rights reserved.                              *
*                                                                              *
*     THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Openwave Systems Inc.     *
*               The copyright notice above does not evidence any               *
*              actual or intended publication of such source code.             *
*******************************************************************************/

/*==============================================================================

	DUMMY DEFINES
	Blanks out anything that isn't defined when this macro file is included.

==============================================================================*/

/**@def FUNCTION
 This macro is used in the linklist.m file to declare a virtual function that is
 supported by the class.
 @param RETURNS Return type.  Eg, char *, int, etc
 @param NAME Name of the function.
*/
#ifndef FUNCTION
   #define FUNCTION( RETURNS, NAME )
#endif

/**@def NO_PARAM
 This macro is used in the linklist.m file to declare that a given function
 takes no parameters.
*/
#ifndef NO_PARAM
   #define NO_PARAM
#endif

/**@def FIRST_PARAM
 This macro is used in the linklist.m file to declare the first parameter for
 a given function.
 @param TYPE Parameter type.  Eg, char *, int, etc
 @param NAME Name of the parameter.
*/
#ifndef FIRST_PARAM
   #define FIRST_PARAM( TYPE, NAME )
#endif

/**@def NEXT_PARAM
 This macro is used in the linklist.m file to declare any subsequent parameters
 for a given function.
 @param TYPE Parameter type.  Eg, char *, int, etc
 @param NAME Name of the parameter.
*/
#ifndef NEXT_PARAM
   #define NEXT_PARAM( TYPE, NAME )
#endif

/**@def END_FUNCTION
 This macro is used in the linklist.m file to mark the end of a function
 declaration.
*/
#ifndef END_FUNCTION
   #define END_FUNCTION
#endif


/*==============================================================================

	VIRTUAL FUNCTIONS

 ** DO NOT CHANGE THE ORDER OF THESE MACROS AS IT WILL BREAK THE SOFTWARE **

==============================================================================*/
//------------------------------------------------------------------------------
FUNCTION( uint32, lwListAddRef )
FIRST_PARAM( ILinkedList *, psMe )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( uint32, lwListRelease )
FIRST_PARAM( ILinkedList *, psMe )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( boolean, oListInitialise )
FIRST_PARAM( ILinkedList *, psILinkedList )
NEXT_PARAM( const char *, kpczListName )
NEXT_PARAM( const void *, kpvInstanceData )
NEXT_PARAM( tpfvInitFunc, vfInitFunc )
NEXT_PARAM( tpfvInitFunc, vfFreeFunc )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, vListDeinitialise )
FIRST_PARAM( ILinkedList *, psILinkedList )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( uint32, lwListGetNofItems )
FIRST_PARAM( const ILinkedList *, kpsILinkedList )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void *, pvListAddItem )
FIRST_PARAM( ILinkedList *, psILinkedList )
NEXT_PARAM( uint16, wSize )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void *, pvListGetIndex )
FIRST_PARAM( const ILinkedList *, kpsILinkedList )
NEXT_PARAM( uint32, lwItemIndex )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void *, pvListGetNextItem )
FIRST_PARAM( const ILinkedList *, kpsILinkedList )
NEXT_PARAM( void *, pvItem )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void *, pvListGetPrevItem )
FIRST_PARAM( const ILinkedList *, kpsILinkedList )
NEXT_PARAM( void *, pvItem )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, vListDeleteIndex )
FIRST_PARAM( ILinkedList *, psILinkedList )
NEXT_PARAM( uint32, lwItemIndex )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, vListDeleteItem )
FIRST_PARAM( ILinkedList *, psILinkedList )
NEXT_PARAM( void *, pvItem )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void *, pvListDeleteItemGetNext )
FIRST_PARAM( ILinkedList *, psILinkedList )
NEXT_PARAM( void *, pvItem )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( boolean, oListValidate )
FIRST_PARAM( const ILinkedList *, kpsILinkedList )
END_FUNCTION



/*==============================================================================

	UNDEFINES
	Allows this macro file to be included multiple times

==============================================================================*/
#undef FUNCTION
#undef NO_PARAM
#undef FIRST_PARAM
#undef NEXT_PARAM
#undef END_FUNCTION


