1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-09 05:01:02 -08:00
emacs/mps/code/meter.h
Richard Brooksby 3d5e2ca85f Adding hopenames back into the master sources, so that they can be included in the union sources along with the id keywords.
This was achieved by partially undoing changelist 24817, including an accidental corruption of eventgen.pl.

Copied from Perforce
 Change: 24877
 ServerID: perforce.ravenbrook.com
2001-12-06 18:14:02 +00:00

58 lines
1.5 KiB
C

/* impl.h.meter: METER INTERFACE
*
* $Id$
* $HopeName: MMsrc!meter.h(trunk.7) $
* Copyright (c) 2001 Ravenbrook Limited.
*
* .sources: mps.design.metrics.
*
* .purpose: Defines an interface for creating "meters" that accumulate
* the number, total and mean^2 of a set of data points. These
* accumulators can be used to report on the number, total, average, and
* variance of the data set.
*/
#ifndef meter_h
#define meter_h
#include "mpmtypes.h"
#include "config.h"
#include "misc.h"
#include "mpslib.h"
typedef struct MeterStruct *Meter;
typedef struct MeterStruct
{
char *name;
Count count;
double total;
double meanSquared;
Size min;
Size max;
} MeterStruct;
extern void MeterInit(Meter meter, char* name, void *owner);
extern void MeterAccumulate(Meter meter, Size amount);
extern Res MeterWrite(Meter meter, mps_lib_FILE *stream);
extern void MeterEmit(Meter meter);
#define METER_DECL(meter) STATISTIC_DECL(struct MeterStruct meter)
#define METER_INIT(meter, init, owner) \
BEGIN STATISTIC(MeterInit(&(meter), init, owner)); UNUSED(owner); END
/* Hack: owner is typically only used for MeterInit */
#define METER_ACC(meter, delta) \
STATISTIC(MeterAccumulate(&(meter), delta))
#if defined(DIAGNOSTICS)
#define METER_WRITE(meter, stream) MeterWrite(&(meter), stream)
#elif defined(DIAGNOSTICS_NONE)
#define METER_WRITE(meter, stream) (ResOK)
#else
#error "Diagnostics not configured."
#endif
#define METER_EMIT(meter) STATISTIC(MeterEmit(meter))
#endif /* meter_h */