mirror of
https://github.com/logos-co/logos-cpp-sdk.git
synced 2026-09-01 18:21:10 +00:00
Mirror the per-method documentation pipeline for events. Events (declared in a universal module's logos_events: section) now carry a description parsed from their /// doc comments, and are introspectable at runtime via a new getPluginEvents framework call. - lidl_ast: EventDecl gains a description field. - impl_header_parser: capture the event's doc comment (previously discarded) and an optional metadata.json events[].description. - lidl_gen_provider: generated universal provider emits getEvents() override, mirroring getMethods() (name/signature/ parameters/description; no returnType/isInvokable — events are void). - logos_provider_object: default-empty virtual getEvents() so the legacy provider path and QtProviderObject inherit empty. - module_proxy / qt_provider_object: intercept getPluginEvents next to the getPluginMethods special-case. - docs: spec + README event-documentation notes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
#ifndef MODULE_PROXY_H
|
|
#define MODULE_PROXY_H
|
|
|
|
#include <QObject>
|
|
#include <QVariant>
|
|
#include <QVariantList>
|
|
#include <QHash>
|
|
#include <QString>
|
|
#include <QJsonArray>
|
|
|
|
class LogosProviderObject;
|
|
|
|
/**
|
|
* @brief ModuleProxy wraps a LogosProviderObject and exposes it as a QObject
|
|
* so that Qt Remote Objects can publish it.
|
|
*
|
|
* All method dispatch, introspection, and event forwarding is delegated
|
|
* to the underlying LogosProviderObject*. For legacy QObject-based plugins,
|
|
* that provider is a QtProviderObject adapter; for new-API plugins it is
|
|
* the plugin's own LogosProviderObject subclass.
|
|
*/
|
|
class ModuleProxy : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit ModuleProxy(LogosProviderObject* provider, QObject* parent = nullptr);
|
|
~ModuleProxy();
|
|
|
|
Q_INVOKABLE QVariant callRemoteMethod(const QString& authToken, const QString& methodName, const QVariantList& args = QVariantList());
|
|
Q_INVOKABLE bool informModuleToken(const QString& authToken, const QString& moduleName, const QString& token);
|
|
bool saveToken(const QString& from_module_name, const QString& token);
|
|
Q_INVOKABLE QJsonArray getPluginMethods();
|
|
Q_INVOKABLE QJsonArray getPluginEvents();
|
|
|
|
signals:
|
|
void eventResponse(const QString& eventName, const QVariantList& data);
|
|
|
|
private:
|
|
LogosProviderObject* m_provider;
|
|
QHash<QString, QString> m_tokens;
|
|
};
|
|
|
|
#endif // MODULE_PROXY_H
|