1#ifndef YAZE_SRC_CLI_SERVICE_RESOURCES_COMMAND_HANDLER_H_
2#define YAZE_SRC_CLI_SERVICE_RESOURCES_COMMAND_HANDLER_H_
8#include "absl/status/status.h"
73 absl::Status
Run(
const std::vector<std::string>& args,
Rom* rom_context,
74 std::string* captured_output =
nullptr);
134 const std::map<std::string, core::AsarSymbol>* table) {
198#define DEFINE_COMMAND_HANDLER(name, usage_str, validate_body, execute_body) \
199 class name##CommandHandler : public CommandHandler { \
201 std::string GetName() const override { return #name; } \
202 std::string GetUsage() const override { return usage_str; } \
205 absl::Status ValidateArgs(const ArgumentParser& parser) override \
206 validate_body absl::Status \
207 Execute(Rom* rom, const ArgumentParser& parser, \
208 OutputFormatter& formatter) override execute_body \
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.
const std::map< std::string, core::AsarSymbol > * assembly_symbol_table_
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 void SetAssemblySymbolTable(const std::map< std::string, core::AsarSymbol > *table)
Optional Asar symbol table for assembly-aware tools.
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.