| Index: third_party/re2/re2/testing/string_generator.h
|
| diff --git a/third_party/re2/re2/testing/string_generator.h b/third_party/re2/re2/testing/string_generator.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6a9ef42a561b475e739ecb14d55079e7901447af
|
| --- /dev/null
|
| +++ b/third_party/re2/re2/testing/string_generator.h
|
| @@ -0,0 +1,58 @@
|
| +// Copyright 2008 The RE2 Authors. All Rights Reserved.
|
| +// Use of this source code is governed by a BSD-style
|
| +// license that can be found in the LICENSE file.
|
| +
|
| +// String generator: generates all possible strings of up to
|
| +// maxlen letters using the set of letters in alpha.
|
| +// Fetch strings using a Java-like Next()/HasNext() interface.
|
| +
|
| +#ifndef RE2_TESTING_STRING_GENERATOR_H__
|
| +#define RE2_TESTING_STRING_GENERATOR_H__
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +#include "util/util.h"
|
| +#include "util/random.h"
|
| +#include "re2/stringpiece.h"
|
| +
|
| +namespace re2 {
|
| +
|
| +class StringGenerator {
|
| + public:
|
| + StringGenerator(int maxlen, const vector<string>& alphabet);
|
| + ~StringGenerator();
|
| + const StringPiece& Next();
|
| + bool HasNext() { return hasnext_; }
|
| +
|
| + // Resets generator to start sequence over.
|
| + void Reset();
|
| +
|
| + // Causes generator to emit random strings for next n calls to Next().
|
| + void Random(int32 seed, int n);
|
| +
|
| + // Causes generator to emit a NULL as the next call.
|
| + void GenerateNULL();
|
| +
|
| + private:
|
| + bool IncrementDigits();
|
| + bool RandomDigits();
|
| +
|
| + // Global state.
|
| + int maxlen_; // Maximum length string to generate.
|
| + vector<string> alphabet_; // Alphabet, one string per letter.
|
| +
|
| + // Iteration state.
|
| + StringPiece sp_; // Last StringPiece returned by Next().
|
| + string s_; // String data in last StringPiece returned by Next().
|
| + bool hasnext_; // Whether Next() can be called again.
|
| + vector<int> digits_; // Alphabet indices for next string.
|
| + bool generate_null_; // Whether to generate a NULL StringPiece next.
|
| + bool random_; // Whether generated strings are random.
|
| + int nrandom_; // Number of random strings left to generate.
|
| + ACMRandom* acm_; // Random number generator
|
| + DISALLOW_EVIL_CONSTRUCTORS(StringGenerator);
|
| +};
|
| +
|
| +} // namespace re2
|
| +
|
| +#endif // RE2_TESTING_STRING_GENERATOR_H__
|
|
|