// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_TOKEN_H_ #define BASE_TOKEN_H_ #include <stdint.h> #include <array> #include <compare> #include <optional> #include <string> #include <string_view> #include "base/base_export.h" #include "base/containers/span.h" namespace base { // A Token is a randomly chosen 128-bit integer. This class supports generation // from a cryptographically strong random source, or constexpr construction over // fixed values (e.g. to store a pre-generated constant value). Tokens are // similar in spirit and purpose to UUIDs, without many of the constraints and // expectations (such as byte layout and string representation) clasically // associated with UUIDs. class BASE_EXPORT Token { … }; // For use in std::unordered_map. struct BASE_EXPORT TokenHash { … }; class Pickle; class PickleIterator; // For serializing and deserializing Token values. BASE_EXPORT void WriteTokenToPickle(Pickle* pickle, const Token& token); BASE_EXPORT std::optional<Token> ReadTokenFromPickle( PickleIterator* pickle_iterator); } // namespace base #endif // BASE_TOKEN_H_