/*
 *  Copyright 2010 OpenSourceStewardshipFoundation.org
 *  Licensed under GNU General Public License version 2
 *
 * Author: seanhalle@yahoo.com
 * 
 */

#include "../VMS_primitive_data_types.h"

#ifndef _HISTOGRAM_H
#define	_HISTOGRAM_H

typedef struct
 {
   int  startOfRange;
   int  endOfRange;
   int  numBins;
   int  binWidth;
   int *bins;
 }
Histogram;

typedef struct
 {
   float32  startOfRange;
   float32  endOfRange;
   int      numBins;
   float32  binWidth;
   int     *bins;
 }
FloatHist;

typedef struct
 {
   float64 startOfRange;
   float64  endOfRange;
   int      numBins;
   float64  binWidth;
   int     *bins;
 }
DblHist;

Histogram *
makeHistogram( int numBins, int startOfRange, int endOfRange );

void
addToHist( int value, Histogram *hist );

void
printHist( Histogram *hist );

FloatHist *
makeFloatHistogram( int numBins, float32 startOfRange, float32 binWidth );

void
addToFloatHist( float32 value, FloatHist *hist );

void
printFloatHist( FloatHist *hist );


DblHist *
makeDblHistogram( int numBins, float64 startOfRange, float64 binWidth );

void
addToDblHist( float64 value, DblHist *hist );

void
printDblHist( DblHist *hist );

#endif	/* _HISTOGRAM_H */

