/**********************************************************************
 * Copyright (c) 2005, 2006 Scapa Technologies Limited and others
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * $Id: perfcalc.h,v 1.2 2006/10/26 22:40:22 kcallaghan Exp $
 * 
 * Contributors: 
 * Scapa Technologies Limited - Initial API and implementation
 **********************************************************************/


#ifndef __PERFCALC_H__
#define __PERFCALC_H__

#include <windows.h>

void createValueTables();
void freeValueTables();

void getPERF_COUNTER_RAWCOUNT			(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr);
void getPERF_RAW_FRACTION				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2);
void getPERF_COUNTER_COUNTER			(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_COUNTER_BULK_COUNT			(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_100NSEC_TIMER				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_100NSEC_TIMER_INV			(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_ELAPSED_TIME				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData, PPERF_OBJECT_TYPE PerfObj);
void getPERF_COUNTER_LARGE_RAWCOUNT		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr);
void getPERF_COUNTER_LARGE_RAWCOUNT_HEX (char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr);
void getPERF_AVERAGE_TIMER				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2,PPERF_DATA_BLOCK PerfData);
void getPERF_AVERAGE_BULK				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2);
void getPERF_COUNTER_LARGE_QUEUELEN_TYPE(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_COUNTER_NODATA				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr);
void getPERF_SAMPLE_FRACTION			(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2);
void getPERF_SAMPLE_COUNTER				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2); 
void getPERF_COUNTER_DELTA				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr);
void getPERF_COUNTER_LARGE_DELTA		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr);
void getPERF_100NSEC_MULTI_TIMER		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2, PPERF_DATA_BLOCK PerfData);
void getPERF_100NSEC_MULTI_TIMER_INV	(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2, PPERF_DATA_BLOCK PerfData);
void getPERF_COUNTER_RAWCOUNT_HEX		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr);
void getPERF_COUNTER_TIMER				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_COUNTER_TIMER_INV			(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_COUNTER_MULTI_TIMER		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2, PPERF_DATA_BLOCK PerfData);
void getPERF_COUNTER_MULTI_TIMER_INV	(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2, PPERF_DATA_BLOCK PerfData);
void getPERF_COUNTER_QUEUELEN_TYPE		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_OBJ_TIME_TIMER				(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);
void getPERF_PRECISION_100NS_TIMER		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2, PPERF_DATA_BLOCK PerfData);
void getPERF_PRECISION_OBJECT_TIMER		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2, PPERF_DATA_BLOCK PerfData);
void getPERF_PRECISION_SYSTEM_TIMER		(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_COUNTER_DEFINITION PerfCntr2, PPERF_DATA_BLOCK PerfData);
void getPERF_COUNTER_100NS_QUEUELEN_TYPE(char* output, char* key, PPERF_COUNTER_BLOCK PtrToCntr, PPERF_COUNTER_DEFINITION PerfCntr, PPERF_DATA_BLOCK PerfData);








#endif __PERFCALC_H__