1#ifndef YAZE_SRC_CLI_SERVICE_RESOURCES_COMMAND_HANDLER_H_
2#define YAZE_SRC_CLI_SERVICE_RESOURCES_COMMAND_HANDLER_H_
7#include "absl/status/status.h"
72 absl::Status
Run(
const std::vector<std::string>& args,
Rom* rom_context,
73 std::string* captured_output =
nullptr);
183#define DEFINE_COMMAND_HANDLER(name, usage_str, validate_body, execute_body) \
184 class name##CommandHandler : public CommandHandler { \
186 std::string GetName() const override { return #name; } \
187 std::string GetUsage() const override { return usage_str; } \
189 absl::Status ValidateArgs(const ArgumentParser& parser) override \
191 absl::Status Execute(Rom* rom, const ArgumentParser& parser, \
192 OutputFormatter& formatter) override \
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Utility for parsing common CLI argument patterns.
Base class for CLI command handlers.
virtual bool RequiresLabels() const
Check if the command requires ROM labels.
virtual std::string GetUsage() const =0
Get the command usage string.
virtual std::string GetName() const =0
Get the command name.
virtual void SetRomContext(Rom *rom)
Set the ROM context for tools that need ROM access. Default implementation stores the ROM pointer for...
core::AsarWrapper * asar_wrapper_
virtual absl::Status Execute(Rom *rom, const ArgumentParser &parser, OutputFormatter &formatter)=0
Execute the command business logic.
virtual void SetSymbolProvider(emu::debug::SymbolProvider *provider)
Set the SymbolProvider context.
absl::Status Run(const std::vector< std::string > &args, Rom *rom_context, std::string *captured_output=nullptr)
Execute the command.
virtual std::string GetOutputTitle() const
Get the output title for formatting.
virtual void SetAsarWrapper(core::AsarWrapper *asar_wrapper)
Set the AsarWrapper context. Default implementation does nothing, override if tool needs Asar access.
project::YazeProject * project_
emu::debug::SymbolProvider * symbol_provider_
virtual std::string GetDefaultFormat() const
Get the default output format ("json" or "text")
virtual ~CommandHandler()=default
virtual bool RequiresRom() const
Check if the command requires a loaded ROM.
virtual void SetProjectContext(project::YazeProject *project)
Set the YazeProject context. Default implementation does nothing, override if tool needs project info...
virtual Descriptor Describe() const
Provide metadata for TUI/help summaries.
virtual absl::Status ValidateArgs(const ArgumentParser &parser)=0
Validate command arguments.
Modern C++ wrapper for Asar 65816 assembler integration.
Provider for symbol (label) resolution in disassembly.
std::string todo_reference
std::vector< DescriptorEntry > entries
std::string todo_reference
Modern project structure with comprehensive settings consolidation.