Wiselib
wiselib.testing/external_interface/isense/isense_rand.h
Go to the documentation of this file.
00001 /***************************************************************************
00002  ** This file is part of the generic algorithm library Wiselib.           **
00003  ** Copyright (C) 2008,2009 by the Wisebed (www.wisebed.eu) project.      **
00004  **                                                                       **
00005  ** The Wiselib is free software: you can redistribute it and/or modify   **
00006  ** it under the terms of the GNU Lesser General Public License as        **
00007  ** published by the Free Software Foundation, either version 3 of the    **
00008  ** License, or (at your option) any later version.                       **
00009  **                                                                       **
00010  ** The Wiselib 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         **
00013  ** GNU 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 the Wiselib.                                       **
00017  ** If not, see <http://www.gnu.org/licenses/>.                           **
00018  ***************************************************************************/
00019 #ifndef CONNECTOR_ISENSE_RAND_H
00020 #define CONNECTOR_ISENSE_RAND_H
00021 
00022 #include <stdint.h>
00023 #include <isense/util/pseudo_random_number_generator.h>
00024 
00025 namespace wiselib {
00026 template<typename OsModel_P>
00027 class iSenseRandModel {
00028 public:
00029    typedef OsModel_P OsModel;
00030    typedef uint32 rand_t;
00031    typedef iSenseRandModel<OsModel> self_type;
00032    typedef self_type* self_pointer_t;
00033 
00034    typedef uint32 value_t;
00035    // --------------------------------------------------------------------
00036    enum {
00037       RANDOM_MAX = 0xffffffff
00038    };
00039    // --------------------------------------------------------------------
00040    iSenseRandModel(isense::Os& os)
00041       :os_ (os)
00042    {
00043    }
00044    // --------------------------------------------------------------------
00045    iSenseRandModel(isense::Os& os, value_t seed) {
00046       random_number_generator_.srand(seed);
00047    }
00048    // --------------------------------------------------------------------
00049    void srand(value_t seed) {
00050       random_number_generator_.srand(seed);
00051    }
00052    // --------------------------------------------------------------------
00053    value_t operator()(value_t max) {
00054       return random_number_generator_.rand(max);
00055    }
00056    // --------------------------------------------------------------------
00057    value_t operator()() {
00058       return random_number_generator_.rand(RANDOM_MAX);
00059    }
00060 private:
00061    isense::PseudoRandomNumberGenerator random_number_generator_;
00062    isense::Os& os_;
00063 };
00064 
00065 }
00066 
00067 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines