~alinuxninja/nginx-edge/trunk

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/re2/src/re2/testing/string_generator.h

  • Committer: Vivian
  • Date: 2015-12-04 18:20:11 UTC
  • Revision ID: git-v1:a36f2bc32e884f7473b3a47040e5411306144d7d
* Do not extract psol.tar.gz

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Copyright 2008 The RE2 Authors.  All Rights Reserved.
2
 
// Use of this source code is governed by a BSD-style
3
 
// license that can be found in the LICENSE file.
4
 
 
5
 
// String generator: generates all possible strings of up to
6
 
// maxlen letters using the set of letters in alpha.
7
 
// Fetch strings using a Java-like Next()/HasNext() interface.
8
 
 
9
 
#ifndef RE2_TESTING_STRING_GENERATOR_H__
10
 
#define RE2_TESTING_STRING_GENERATOR_H__
11
 
 
12
 
#include <string>
13
 
#include <vector>
14
 
#include "util/util.h"
15
 
#include "util/random.h"
16
 
#include "re2/stringpiece.h"
17
 
 
18
 
namespace re2 {
19
 
 
20
 
class StringGenerator {
21
 
 public:
22
 
  StringGenerator(int maxlen, const vector<string>& alphabet);
23
 
  ~StringGenerator();
24
 
  const StringPiece& Next();
25
 
  bool HasNext() { return hasnext_; }
26
 
 
27
 
  // Resets generator to start sequence over.
28
 
  void Reset();
29
 
 
30
 
  // Causes generator to emit random strings for next n calls to Next().
31
 
  void Random(int32 seed, int n);
32
 
 
33
 
  // Causes generator to emit a NULL as the next call.
34
 
  void GenerateNULL();
35
 
 
36
 
 private:
37
 
  bool IncrementDigits();
38
 
  bool RandomDigits();
39
 
 
40
 
  // Global state.
41
 
  int maxlen_;               // Maximum length string to generate.
42
 
  vector<string> alphabet_;  // Alphabet, one string per letter.
43
 
 
44
 
  // Iteration state.
45
 
  StringPiece sp_;           // Last StringPiece returned by Next().
46
 
  string s_;                 // String data in last StringPiece returned by Next().
47
 
  bool hasnext_;             // Whether Next() can be called again.
48
 
  vector<int> digits_;       // Alphabet indices for next string.
49
 
  bool generate_null_;       // Whether to generate a NULL StringPiece next.
50
 
  bool random_;              // Whether generated strings are random.
51
 
  int nrandom_;              // Number of random strings left to generate.
52
 
  ACMRandom* acm_;           // Random number generator
53
 
  DISALLOW_EVIL_CONSTRUCTORS(StringGenerator);
54
 
};
55
 
 
56
 
}  // namespace re2
57
 
 
58
 
#endif  // RE2_TESTING_STRING_GENERATOR_H__