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);
178#define DEFINE_COMMAND_HANDLER(name, usage_str, validate_body, execute_body) \
179 class name##CommandHandler : public CommandHandler { \
181 std::string GetName() const override { return #name; } \
182 std::string GetUsage() const override { return usage_str; } \
184 absl::Status ValidateArgs(const ArgumentParser& parser) override \
186 absl::Status Execute(Rom* rom, const ArgumentParser& parser, \
187 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.
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_
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.
std::string todo_reference
std::vector< DescriptorEntry > entries
std::string todo_reference
Modern project structure with comprehensive settings consolidation.