//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:		Player for HL1.
//
// $NoKeywords: $
//=============================================================================//

#ifndef DT_UTLVECTOR_SEND_H
#define DT_UTLVECTOR_SEND_H
#pragma once


#include "dt_send.h"
#include "dt_utlvector_common.h"


#define SENDINFO_UTLVECTOR( varName )	#varName, \
										offsetof(currentSendDTClass, varName), \
										sizeof(((currentSendDTClass*)0)->varName[0]), \
										GetEnsureCapacityTemplate( ((currentSendDTClass*)0)->varName )



#define SendPropUtlVectorDataTable( varName, nMaxElements, dataTableName ) \
	SendPropUtlVector( \
		SENDINFO_UTLVECTOR( varName ), \
		nMaxElements, \
		SendPropDataTable( NULL, 0, &REFERENCE_SEND_TABLE( dataTableName ) ) \
		)

//
// Set it up to transmit a CUtlVector of basic types or of structures.
//
// pArrayProp doesn't need a name, offset, or size. You can pass 0 for all those.
// Example usage:
//
//	SendPropUtlVectorDataTable( m_StructArray, 11, DT_TestStruct )
//
//	SendPropUtlVector( 
//		SENDINFO_UTLVECTOR( m_FloatArray ),
//		16,	// max elements
//		SendPropFloat( NULL, 0, 0, 0, SPROP_NOSCALE )
//		)
//
SendProp SendPropUtlVector(
	char *pVarName,		// Use SENDINFO_UTLVECTOR to generate these first 4 parameters.
	int offset,
	int sizeofVar,
	EnsureCapacityFn ensureFn,

	int nMaxElements,			// Max # of elements in the array. Keep this as low as possible.
	SendProp pArrayProp,		// Describe the data inside of each element in the array.
	SendTableProxyFn varProxy=SendProxy_DataTableToDataTable	// This can be overridden to control who the array is sent to.
	);


#endif	// DT_UTLVECTOR_SEND_H