Movatterモバイル変換


[0]ホーム

URL:


Google Git
Sign in
chromium /chromium /src /refs/heads/main /. /sql /statement_id.h
blob: c12714d155ba707560b55ceccade91bacbcc80e2 [file] [log] [blame] [edit]
// 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 SQL_STATEMENT_ID_H_
#define SQL_STATEMENT_ID_H_
#include<cstdint>
#include<string_view>
#include<tuple>
#include"base/types/strong_alias.h"
namespace sql{
// Identifies a compiled SQLite statement in a statement cache.
//
// This is a value type with the same performance characteristics as
// `std::string_view`. Instances are thread-unsafe, but not thread-hostile.
//
// `StatementID` instances should be constructed by using the `SQL_FROM_HERE`
// macro, which produces an unique ID based on the source file name and line.
//
// It may seem tempting to represent `StatementID` as a string composed of the
// source file and line number, e.g. "sql/connection.cc:42". Although this is
// easy to do with C++ preprocessor magic, it would lead to a non-trivial
// increase in binary size. Chrome is compiled with `-fmerge-constants`, so
// repeated string literals are coalesced in the binary. This happens frequently
// with `SQL_FROM_HERE` because the macro tends to be used many times in the
// same file. If `SQL_FROM_HERE` generated many distinct string literals, we'd
// no longer benefit from this compile-time deduplication.
usingStatementID=base::StrongAlias<classStatementIDTag,
std::tuple<std::string_view,uint32_t>>;
}// namespace sql
// Produces a StatementID based on the current line in the source tree.
#define SQL_FROM_HERE sql::StatementID({__FILE__,uint32_t{__LINE__}})
#endif// SQL_STATEMENT_ID_H_

[8]ページ先頭

©2009-2025 Movatter.jp