Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/asmjit/asmjit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/asmjit/core/logger.h')
-rw-r--r--src/asmjit/core/logger.h107
1 files changed, 40 insertions, 67 deletions
diff --git a/src/asmjit/core/logger.h b/src/asmjit/core/logger.h
index ddc1cfc..d416a50 100644
--- a/src/asmjit/core/logger.h
+++ b/src/asmjit/core/logger.h
@@ -1,25 +1,7 @@
-// AsmJit - Machine code generation for C++
+// This file is part of AsmJit project <https://asmjit.com>
//
-// * Official AsmJit Home Page: https://asmjit.com
-// * Official Github Repository: https://github.com/asmjit/asmjit
-//
-// Copyright (c) 2008-2020 The AsmJit Authors
-//
-// This software is provided 'as-is', without any express or implied
-// warranty. In no event will the authors be held liable for any damages
-// arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it
-// freely, subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented; you must not
-// claim that you wrote the original software. If you use this software
-// in a product, an acknowledgment in the product documentation would be
-// appreciated but is not required.
-// 2. Altered source versions must be plainly marked as such, and must not be
-// misrepresented as being the original software.
-// 3. This notice may not be removed or altered from any source distribution.
+// See asmjit.h or LICENSE.md for license and copyright information
+// SPDX-License-Identifier: Zlib
#ifndef ASMJIT_CORE_LOGGING_H_INCLUDED
#define ASMJIT_CORE_LOGGING_H_INCLUDED
@@ -35,15 +17,10 @@ ASMJIT_BEGIN_NAMESPACE
//! \addtogroup asmjit_logging
//! \{
-// ============================================================================
-// [asmjit::Logger]
-// ============================================================================
-
//! Logging interface.
//!
-//! This class can be inherited and reimplemented to fit into your own logging
-//! needs. When reimplementing a logger use \ref Logger::_log() method to log
-//! customize the output.
+//! This class can be inherited and reimplemented to fit into your own logging needs. When reimplementing a logger
+//! use \ref Logger::_log() method to log customize the output.
//!
//! There are two `Logger` implementations offered by AsmJit:
//! - \ref FileLogger - logs into a `FILE*`.
@@ -73,25 +50,35 @@ public:
inline FormatOptions& options() noexcept { return _options; }
//! \overload
inline const FormatOptions& options() const noexcept { return _options; }
+ //! Sets formatting options of this Logger to `options`.
+ inline void setOptions(const FormatOptions& options) noexcept { _options = options; }
+ //! Resets formatting options of this Logger to defaults.
+ inline void resetOptions() noexcept { _options.reset(); }
- //! Returns formatting flags, see \ref FormatOptions::Flags.
- inline uint32_t flags() const noexcept { return _options.flags(); }
+ //! Returns formatting flags.
+ inline FormatFlags flags() const noexcept { return _options.flags(); }
//! Tests whether the logger has the given `flag` enabled.
- inline bool hasFlag(uint32_t flag) const noexcept { return _options.hasFlag(flag); }
- //! Sets formatting flags to `flags`, see \ref FormatOptions::Flags.
- inline void setFlags(uint32_t flags) noexcept { _options.setFlags(flags); }
- //! Enables the given formatting `flags`, see \ref FormatOptions::Flags.
- inline void addFlags(uint32_t flags) noexcept { _options.addFlags(flags); }
- //! Disables the given formatting `flags`, see \ref FormatOptions::Flags.
- inline void clearFlags(uint32_t flags) noexcept { _options.clearFlags(flags); }
-
- //! Returns indentation of `type`, see \ref FormatOptions::IndentationType.
- inline uint32_t indentation(uint32_t type) const noexcept { return _options.indentation(type); }
- //! Sets indentation of the given indentation `type` to `n` spaces, see \ref
- //! FormatOptions::IndentationType.
- inline void setIndentation(uint32_t type, uint32_t n) noexcept { _options.setIndentation(type, n); }
- //! Resets indentation of the given indentation `type` to 0 spaces.
- inline void resetIndentation(uint32_t type) noexcept { _options.resetIndentation(type); }
+ inline bool hasFlag(FormatFlags flag) const noexcept { return _options.hasFlag(flag); }
+ //! Sets formatting flags to `flags`.
+ inline void setFlags(FormatFlags flags) noexcept { _options.setFlags(flags); }
+ //! Enables the given formatting `flags`.
+ inline void addFlags(FormatFlags flags) noexcept { _options.addFlags(flags); }
+ //! Disables the given formatting `flags`.
+ inline void clearFlags(FormatFlags flags) noexcept { _options.clearFlags(flags); }
+
+ //! Returns indentation of a given indentation `group`.
+ inline uint32_t indentation(FormatIndentationGroup type) const noexcept { return _options.indentation(type); }
+ //! Sets indentation of the given indentation `group` to `n` spaces.
+ inline void setIndentation(FormatIndentationGroup type, uint32_t n) noexcept { _options.setIndentation(type, n); }
+ //! Resets indentation of the given indentation `group` to 0 spaces.
+ inline void resetIndentation(FormatIndentationGroup type) noexcept { _options.resetIndentation(type); }
+
+ //! Returns padding of a given padding `group`.
+ inline size_t padding(FormatPaddingGroup type) const noexcept { return _options.padding(type); }
+ //! Sets padding of a given padding `group` to `n`.
+ inline void setPadding(FormatPaddingGroup type, uint32_t n) noexcept { _options.setPadding(type, n); }
+ //! Resets padding of a given padding `group` to 0, which means that a default will be used.
+ inline void resetPadding(FormatPaddingGroup type) noexcept { _options.resetPadding(type); }
//! \}
@@ -100,9 +87,8 @@ public:
//! Logs `str` - must be reimplemented.
//!
- //! The function can accept either a null terminated string if `size` is
- //! `SIZE_MAX` or a non-null terminated string of the given `size`. The
- //! function cannot assume that the data is null terminated and must handle
+ //! The function can accept either a null terminated string if `size` is `SIZE_MAX` or a non-null terminated
+ //! string of the given `size`. The function cannot assume that the data is null terminated and must handle
//! non-null terminated inputs.
virtual Error _log(const char* data, size_t size) noexcept = 0;
@@ -111,21 +97,15 @@ public:
//! Logs content of a string `str`.
inline Error log(const String& str) noexcept { return _log(str.data(), str.size()); }
- //! Formats the message by using `snprintf()` and then passes the formatted
- //! string to \ref _log().
+ //! Formats the message by using `snprintf()` and then passes the formatted string to \ref _log().
ASMJIT_API Error logf(const char* fmt, ...) noexcept;
- //! Formats the message by using `vsnprintf()` and then passes the formatted
- //! string to \ref _log().
+ //! Formats the message by using `vsnprintf()` and then passes the formatted string to \ref _log().
ASMJIT_API Error logv(const char* fmt, va_list ap) noexcept;
//! \}
};
-// ============================================================================
-// [asmjit::FileLogger]
-// ============================================================================
-
//! Logger that can log to a `FILE*`.
class ASMJIT_VIRTAPI FileLogger : public Logger {
public:
@@ -146,17 +126,14 @@ public:
//! \name Accessors
//! \{
- //! Returns the logging output stream or null if the logger has no output
- //! stream.
+ //! Returns the logging output stream or null if the logger has no output stream.
inline FILE* file() const noexcept { return _file; }
//! Sets the logging output stream to `stream` or null.
//!
- //! \note If the `file` is null the logging will be disabled. When a logger
- //! is attached to `CodeHolder` or any emitter the logging API will always
- //! be called regardless of the output file. This means that if you really
- //! want to disable logging at emitter level you must not attach a logger
- //! to it.
+ //! \note If the `file` is null the logging will be disabled. When a logger is attached to `CodeHolder` or any
+ //! emitter the logging API will always be called regardless of the output file. This means that if you really
+ //! want to disable logging at emitter level you must not attach a logger to it.
inline void setFile(FILE* file) noexcept { _file = file; }
//! \}
@@ -164,10 +141,6 @@ public:
ASMJIT_API Error _log(const char* data, size_t size = SIZE_MAX) noexcept override;
};
-// ============================================================================
-// [asmjit::StringLogger]
-// ============================================================================
-
//! Logger that stores everything in an internal string buffer.
class ASMJIT_VIRTAPI StringLogger : public Logger {
public: