1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
//////////////////////////////////////////////////////////////////////////
//
// pgScript - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////////////////
#ifndef PGSINTEGERGEN_H_
#define PGSINTEGERGEN_H_
#include "pgscript/pgScript.h"
#include "pgscript/generators/pgsNumberGen.h"
#include "pgscript/generators/pgsObjectGen.h"
#include "pgscript/utilities/pgsCopiedPtr.h"
class pgsIntegerGen : public pgsObjectGen
{
private:
class pgsSequentialIntGen : public pgsNumberGen
{
private:
MAPM m_state;
MAPM m_m;
static const MAPM arg_a;
static const MAPM arg_c;
MAPM m_remainder;
pgsVectorMapm m_buffer;
public:
pgsSequentialIntGen(const MAPM &range, const long &seed);
virtual MAPM random();
virtual ~pgsSequentialIntGen();
virtual pgsNumberGen *clone();
/* pgsSequentialIntGen & operator =(const pgsSequentialIntGen & that); */
/* pgsSequentialIntGen(const pgsSequentialIntGen & that); */
};
class pgsNormalIntGen : public pgsNumberGen
{
private:
MAPM m_state;
MAPM m_top;
static const MAPM arg_a;
static const MAPM arg_c;
static const MAPM arg_m;
public:
pgsNormalIntGen(const MAPM &range, const long &seed);
virtual MAPM random();
virtual ~pgsNormalIntGen();
virtual pgsNumberGen *clone();
/* pgsNormalIntGen & operator =(const pgsNormalIntGen & that); */
/* pgsNormalIntGen(const pgsNormalIntGen & that); */
};
friend class pgsRealGen;
private:
typedef pgsCopiedPtr<pgsNumberGen> pgsRandomizer; // Needs a clone() method
MAPM m_min;
MAPM m_max;
MAPM m_range;
bool m_sequence;
pgsRandomizer m_randomizer;
public:
pgsIntegerGen(const MAPM &min, const MAPM &max,
const bool &sequence = false, const long &seed = wxDateTime::GetTimeNow());
bool is_sequence() const;
virtual wxString random();
long random_long();
virtual ~pgsIntegerGen();
virtual pgsIntegerGen *clone();
/* pgsIntegerGen & operator =(const pgsIntegerGen & that); */
/* pgsIntegerGen(const pgsIntegerGen & that); */
};
#endif /*PGSINTEGERGEN_H_*/
|