blob: 77edfc5c521ad648e419ae67b8022379384ab6a9 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_SERVICES_STORAGE_INDEXED_DB_SCOPES_VARINT_CODING_H_
#define COMPONENTS_SERVICES_STORAGE_INDEXED_DB_SCOPES_VARINT_CODING_H_
#include <stdint.h>
#include <string>
#include <string_view>
namespace content::indexed_db {
// Encodes the given number into the given string using VarInt encoding. VarInts
// try to compress the number into the smallest number of bytes possible. It
// basically uses the top bit of the byte to signal if there are more bytes to
// read. As soon as the top bit is 0, then the number has been fully read.
// Note: |from| must be >= 0.
void EncodeVarInt(int64_t from, std::string* into);
// Decodes a varint from the given string piece into the given int64_t. Returns
// if the string had a valid varint (where a byte was found with it's top bit
// set). This function does NOT check to see if move than 64 bits were read.
[[nodiscard]] bool DecodeVarInt(std::string_view* from, int64_t* into);
} // namespace content::indexed_db
#endif // COMPONENTS_SERVICES_STORAGE_INDEXED_DB_SCOPES_VARINT_CODING_H_