Files
LithosAnanke/v3/include/log.h
T
Claude 16b9747d33 chore(license): the source headers name the Starship License 1.0 (SL-1.0), as LICENSE does [skip ci]
347 headers said "Licensed under the StarForth License, Version 1.0" -- a
shortening (Captain Bob, 2026-11-08: "License file SL I think I shortened
accidently"); LICENSE is, and has been since the first commit, the
Starship License 1.0 (SL-1.0, SPDX LicenseRef-Starship-1.0). 349 files,
566 occurrences, now "Starship License, Version 1.0 (SL-1.0)".

Left as they are, pending a ruling: docs/patent/ (the patent figures),
docs/formal/ (the citable volumes) and the generated reports under
docs/working/experiments/ (32 files). Comments and license text only:
the amd64 kernel builds, every changed script parses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
2026-11-08 17:54:24 +00:00

120 lines
3.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
StarForth — Steady-State Virtual Machine Runtime
Copyright (c) 2023–2025 Robert A. James
All rights reserved.
This file is part of the StarForth project.
Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at:
https://github.com/star.4th@proton.me/StarForth/LICENSE.txt
This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
express or implied, including but not limited to the warranties of
merchantability, fitness for a particular purpose, and noninfringement.
See the License for the specific language governing permissions and
limitations under the License.
StarForth — Steady-State Virtual Machine Runtime
Copyright (c) 2023–2025 Robert A. James
All rights reserved.
This file is part of the StarForth project.
Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at:
https://github.com/star.4th@proton.me/StarForth/LICENSE.txt
This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
express or implied, including but not limited to the warranties of
merchantability, fitness for a particular purpose, and noninfringement.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef LOG_H
#define LOG_H
/* Maximum log line size for persistent logging */
/* Renamed from LOG_LINE_MAX: vm.h owns that name for the persistent
* block-log line width (64, unrelated concept). This is the in-memory log
* message-formatting line length; keeping a distinct name removes the
* include-order collision that forced a fragile "vm.h before log.h"
* convention across the kernel (kernel_main.c/shim.c/capsule_birth.c). */
#ifndef LOG_MSG_LINE_MAX
#define LOG_MSG_LINE_MAX 256
#endif
/* Forward declaration */
struct VM;
/**
* @brief Logging level enumeration
*
* Defines the available logging levels in order of increasing verbosity.
*/
typedef enum {
LOG_NONE = -1, /**< Completely disable all logging */
LOG_ERROR = 0, /**< Error messages only */
LOG_WARN, /**< Warning and error messages */
LOG_INFO, /**< Informational, warning and error messages */
LOG_TEST, /**< Test results_run_01_2025_12_08 and all previous levels */
LOG_DEBUG /**< Debug messages and all previous levels */
} LogLevel;
/**
* @brief Test result type enumeration
*
* Defines the possible outcomes of test execution.
*/
typedef enum {
TEST_PASS = 0, /**< Test completed successfully */
TEST_FAIL, /**< Test failed */
TEST_SKIP, /**< Test was skipped */
TEST_ERROR /**< Test encountered an error during execution */
} TestResult;
/**
* @brief Set the global logging level
* @param level The new logging level to set
* @note Default level is LOG_INFO
*/
void log_set_level(LogLevel level);
/**
* @brief Get the current logging level
* @return The current logging level
*/
LogLevel log_get_level(void);
/**
* @brief Log a formatted message at the specified level
* @param level The logging level for this message
* @param fmt Printf-style format string
* @param ... Variable arguments for format string
*/
void log_message(LogLevel level, const char *fmt, ...);
/**
* @brief Log a test result with colored output
* @param word_name Name of the word being tested
* @param result Result of the test execution
*/
void log_test_result(const char *word_name, TestResult result);
/**
* @brief Set the VM instance for persistent logging
* @param vm VM instance to use for persistent logging (NULL to disable)
*/
void log_set_vm(struct VM *vm);
#endif /* LOG_H */