// BaseModule.hpp
|
#ifndef MODULES_BASEMODULE_HPP
|
#define MODULES_BASEMODULE_HPP
|
|
|
// Base exception type for module errors
|
#include "../BaseException.hpp"
|
namespace Modules {
|
|
/**
|
* @brief Base class for modules that can register functions and variables into the symbol table.
|
*/
|
class BaseModule {
|
public:
|
BaseModule() = default;
|
virtual ~BaseModule() = default;
|
|
/**
|
* @brief Register this module's symbols (functions, variables) into the global symbol container.
|
* Modules should use Symbols::SymbolContainer::instance() and SymbolFactory to add symbols.
|
*/
|
virtual void registerModule() = 0;
|
};
|
|
/**
|
* @brief Exception type for errors thrown within module functions.
|
* Inherit from BaseException to allow rich error messages.
|
*/
|
class Exception : public ::BaseException {
|
public:
|
/**
|
* Construct a module exception with a message.
|
* @param msg Error message
|
*/
|
explicit Exception(const std::string & msg)
|
: BaseException(msg) {}
|
};
|
|
} // namespace Modules
|
#endif // MODULES_BASEMODULE_HPP
|