00001 // Copyright (C) 2001, Compaq Computer Corporation 00002 // 00003 // This file is part of Vesta. 00004 // 00005 // Vesta is free software; you can redistribute it and/or 00006 // modify it under the terms of the GNU Lesser General Public 00007 // License as published by the Free Software Foundation; either 00008 // version 2.1 of the License, or (at your option) any later version. 00009 // 00010 // Vesta is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 // Lesser General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU Lesser General Public 00016 // License along with Vesta; if not, write to the Free Software 00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00018 00019 // Last modified on Thu Aug 5 10:48:12 EDT 2004 by ken@xorian.net 00020 // modified on Tue Apr 30 11:15:20 PDT 1996 by heydon 00021 00022 #ifndef HISTOGRAM_H 00023 #define HISTOGRAM_H 00024 00025 #include <Basics.H> 00026 00027 // A class for storing a histogram; its methods are unmonitored 00028 class Histogram { 00029 public: 00030 Histogram(int gran) throw () 00031 : numVals(0), gran(gran), bucket(NULL), numBuckets(0), firstBucket(0) 00032 { /*SKIP*/ } 00033 /* Initialize a new histogram with a granularity of "gran" units. */ 00034 00035 void AddVal(int t) throw (); 00036 /* Add a new value to the histogram corresponding to "t" units. */ 00037 00038 void Print(std::ostream &os, int width = 78) const throw (); 00039 /* Print a representation of the histogram to "os" using a screen 00040 width of "width". */ 00041 00042 private: 00043 int numVals; // total number of values added to this histogram 00044 int gran; // histogram granularity 00045 int numBuckets; // size of "bucket" array 00046 int *bucket; // array of counts 00047 int firstBucket; // min val of first bucket / gran 00048 }; 00049 00050 #endif // HISTOGRAM_H