// Copyright 2018 The Chromium Authors. All rights reserved.
// 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 <cstddef>

#include "sql/sql_export.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.
class SQL_EXPORT StatementID {
 public:
  // Creates an ID representing a line in the source tree.
  //
  // SQL_FROM_HERE should be preferred to calling this constructor directly.
  //
  // |source_file| should point to a C-style string that lives for the duration
  // of the program.
  explicit StatementID(const char* source_file, size_t source_line) noexcept
      : source_file_(source_file), source_line_(source_line) {}

  // Copying intentionally allowed.
  StatementID(const StatementID&) noexcept = default;
  StatementID& operator=(const StatementID&) noexcept = default;

  // Facilitates storing StatementID instances in maps.
  bool operator<(const StatementID& rhs) const noexcept;

 private:
  // Instances cannot be immutable because they support being used as map keys.
  //
  // It seems tempting to merge source_file_ and source_line_ in a single
  // source_location_ member, and to have SQL_FROM_HERE use C++ preprocessor
  // magic to generate strings like "sql/connection.cc:42". This causes a
  // non-trivial binary size increase, because Chrome uses -fmerge-constants and
  // SQL_FROM_HERE tends to be used many times in the same few files.
  const char* source_file_;
  size_t source_line_;
};

}  // namespace sql

// Produces a StatementID based on the current line in the source tree.
#define SQL_FROM_HERE sql::StatementID(__FILE__, __LINE__)

#endif  // SQL_STATEMENT_ID_H_
