Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members  

chist.h

00001 //==========================================================================
00002 //
00003 //   CHIST.H - header for
00004 //                             OMNeT++
00005 //            Discrete System Simulation in C++
00006 //
00007 //
00008 //  Declaration of the following classes:
00009 //    cHistogramBase        : common base class for histogram classes
00010 //      cEqdHistogramBase   : Equi-distant histograms
00011 //        cLongHistogram    : long int distribution
00012 //        cDoubleHistogram  : double distribution
00013 //
00014 //==========================================================================
00015 
00016 /*--------------------------------------------------------------*
00017   Copyright (C) 1992-2003 Andras Varga
00018 
00019   This file is distributed WITHOUT ANY WARRANTY. See the file
00020   `license' for details on this and other legal matters.
00021 *--------------------------------------------------------------*/
00022 
00023 #ifndef __CHIST_H
00024 #define __CHIST_H
00025 
00026 #include "cdensity.h"
00027 
00028 //==========================================================================
00029 
00036 class SIM_API cHistogramBase : public cDensityEstBase
00037 {
00038   protected:
00039     int num_cells;        // nr. of categories
00040     unsigned *cellv;      // array of counters
00041 
00042   public:
00045 
00049     cHistogramBase(const cHistogramBase& r) : cDensityEstBase(r)
00050         {setName(r.name());cellv=NULL;operator=(r);}
00051 
00055     cHistogramBase(const char *name, int numcells);
00056 
00060     virtual ~cHistogramBase();
00061 
00065     cHistogramBase& operator=(const cHistogramBase& res);
00067 
00070 
00071     /* No dup() because this is an abstract class. */
00072 
00078     virtual int netPack();
00079 
00085     virtual int netUnpack();
00087 
00090 
00094     virtual void clearResult();
00095 
00100     virtual void transform();
00101 
00105     virtual int cells() const;
00106 
00110     virtual void saveToFile(FILE *) const; //--LG
00111 
00115     virtual void loadFromFile(FILE *);  //--LG
00117 
00120 
00125     virtual void setNumCells(int numcells);
00127 };
00128 
00129 //==========================================================================
00130 
00136 class SIM_API cEqdHistogramBase : public cHistogramBase //--LG
00137 {
00138   protected:
00139     double cellsize;            // cell/category  sizes
00140 
00141   public:
00144 
00148     cEqdHistogramBase(const cEqdHistogramBase& r) : cHistogramBase(r)
00149         {setName(r.name());operator=(r);}
00150 
00154     explicit cEqdHistogramBase(const char *name=NULL, int numcells=10);
00155 
00159     cEqdHistogramBase& operator=(const cEqdHistogramBase& res);
00161 
00164 
00165     /* No dup() because this is an abstract class. */
00166 
00172     virtual int netPack();
00173 
00179     virtual int netUnpack();
00181 
00182   protected:
00187     virtual void collectTransformed(double val);
00188 
00193     virtual void setupRange();
00194 
00195   public:
00198 
00202     virtual double basepoint(int k) const;
00203 
00207     virtual double cell(int k) const;
00208 
00212     virtual double pdf(double x) const; // --LG
00213 
00217     virtual double cdf(double x) const; // --LG
00218 
00222     virtual void saveToFile(FILE *) const; //--LG
00223 
00227     virtual void loadFromFile(FILE *);  //--LG
00229 };
00230 
00231 //==========================================================================
00232 
00252 class SIM_API cLongHistogram : public cEqdHistogramBase
00253 {
00254   public:
00257 
00261     cLongHistogram(const cLongHistogram& r) : cEqdHistogramBase(r)
00262         {setName(r.name());operator=(r);}
00263 
00267     explicit cLongHistogram(const char *name=NULL, int numcells=10);
00268 
00272     virtual ~cLongHistogram();
00273 
00277     cLongHistogram& operator=(const cLongHistogram&)  {copyNotSupported();return *this;}
00279 
00282 
00287     virtual cObject *dup() const    {return new cLongHistogram(*this);}
00288 
00294     virtual int netPack();
00295 
00301     virtual int netUnpack();
00303 
00304   protected:
00309     virtual void setupRange();
00310 
00311   public:
00314 
00318     virtual void collect(double val);
00319 
00326     virtual double random() const;
00328 };
00329 
00330 //==========================================================================
00331 
00338 class SIM_API cDoubleHistogram : public cEqdHistogramBase
00339 {
00340   public:
00343 
00347     cDoubleHistogram(const cDoubleHistogram& r) : cEqdHistogramBase(r)
00348           {setName(r.name());operator=(r);}
00349 
00353     explicit cDoubleHistogram(const char *name=NULL, int numcells=10);
00354 
00358     virtual ~cDoubleHistogram();
00359 
00363     cDoubleHistogram& operator=(const cDoubleHistogram&)  {copyNotSupported();return *this;}
00365 
00368 
00373     virtual cObject *dup() const  {return new cDoubleHistogram(*this);}
00374 
00380     virtual int netPack();
00381 
00387     virtual int netUnpack();
00389 
00392 
00399     virtual double random() const;
00401 };
00402 
00403 #endif
00404 

Generated at Mon Jun 16 23:37:31 2003 for OMNeT++ by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001