/*************************************************************************** * * * copyright (C) 2003, 2004 by Michael Buesch * * email: mbuesch@freenet.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License version 2 * * as published by the Free Software Foundation. * * * ***************************************************************************/ /*************************************************************************** * copyright (C) 2004 by Ulf Schenk * This file is originaly based on version 1.0.1 of pwmanager * and was modified to run on embedded devices that run microkde * * $Id$ **************************************************************************/ #ifndef RANDOMIZER_H #define RANDOMIZER_H #include "pwmexception.h" #include /** simple randomizer * This class is *NOT* reentrant save! */ class Randomizer { public: Randomizer(); ~Randomizer(); static Randomizer * obj() { PWM_ASSERT(rndObj); return rndObj; } static void init() { PWM_ASSERT(!rndObj); rndObj = new Randomizer; } static void cleanup() { delete_ifnot_null(rndObj); } /** generate random char */ char genRndChar(); /** generate random int */ int genRndInt(); /** generate random unsigned int */ unsigned int genRndUInt(); protected: /** random-device-node (if available. Otherwise NULL) */ FILE *rndDev; /** seed value for fallback - rand_r() */ unsigned int seed; /** static Randomier object returned by obj() */ static Randomizer *rndObj; }; #endif