mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
// Copyright 2013 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "simple_token.h"
|
|
|
|
#include <ostream>
|
|
#include <random>
|
|
|
|
namespace base {
|
|
|
|
constexpr size_t kRandomTokenLength = 10;
|
|
|
|
SimpleToken::SimpleToken(const std::string& token) : token_(token) {}
|
|
|
|
// static
|
|
SimpleToken SimpleToken::Create() {
|
|
const char charset[] =
|
|
"0123456789"
|
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
"abcdefghijklmnopqrstuvwxyz";
|
|
const size_t max_index = (sizeof(charset) - 1);
|
|
|
|
std::string str;
|
|
for (size_t i = 0; i < kRandomTokenLength; i++) {
|
|
str.push_back(charset[rand() % max_index]);
|
|
}
|
|
return SimpleToken(str);
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& out, const SimpleToken& token) {
|
|
return out << "(" << token.ToString() << ")";
|
|
}
|
|
|
|
std::optional<base::SimpleToken> ValueToSimpleToken(std::string str) {
|
|
return std::make_optional<base::SimpleToken>(str);
|
|
}
|
|
|
|
std::string SimpleTokenToValue(const SimpleToken& token) {
|
|
return token.ToString();
|
|
}
|
|
|
|
size_t SimpleTokenHash(const SimpleToken& SimpleToken) {
|
|
return std::hash<std::string>()(SimpleToken.ToString());
|
|
}
|
|
|
|
} // namespace base
|