node/deps/v8/include/v8-source-location.h
Michaël Zasso f1e0b83e7b
deps: update V8 to 14.6.202.33
PR-URL: https://github.com/nodejs/node/pull/61898
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
2026-04-24 18:01:28 +02:00

91 lines
2.3 KiB
C++

// Copyright 2020 the V8 project 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 INCLUDE_SOURCE_LOCATION_H_
#define INCLUDE_SOURCE_LOCATION_H_
#include <cstddef>
#include <source_location>
#include <string>
#include "v8config.h" // NOLINT(build/include_directory)
#define V8_SUPPORTS_SOURCE_LOCATION 1
namespace v8 {
/**
* Encapsulates source location information. Mimics C++20's
* `std::source_location`.
*/
class V8_EXPORT SourceLocation final {
public:
/**
* Constructs source location information corresponding to the location of the
* call site.
*/
static constexpr SourceLocation Current(
const std::source_location& loc = std::source_location::current()) {
return SourceLocation(loc);
}
#ifdef DEBUG
static constexpr SourceLocation CurrentIfDebug(
const std::source_location& loc = std::source_location::current()) {
return SourceLocation(loc);
}
#else
static constexpr SourceLocation CurrentIfDebug() { return {}; }
#endif
/**
* Constructs unspecified source location information.
*/
constexpr SourceLocation() = default;
/**
* Returns the name of the function associated with the position represented
* by this object, if any.
*
* \returns the function name as cstring.
*/
constexpr const char* Function() const { return loc_.function_name(); }
/**
* Returns the name of the current source file represented by this object.
*
* \returns the file name as cstring.
*/
constexpr const char* FileName() const { return loc_.file_name(); }
/**
* Returns the line number represented by this object.
*
* \returns the line number.
*/
constexpr size_t Line() const { return loc_.line(); }
/**
* Returns a human-readable string representing this object.
*
* \returns a human-readable string representing source location information.
*/
std::string ToString() const;
/**
* Checks whether this object is initialized.
*
* \returns true if this object is initialized, false otherwise.
*/
operator bool() const { return loc_.line() != 0; }
private:
constexpr explicit SourceLocation(const std::source_location& loc)
: loc_(loc) {}
std::source_location loc_;
};
} // namespace v8
#endif // INCLUDE_SOURCE_LOCATION_H_