Grok 20.3.2
minpf_plugin.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2026 Grok Image Compression Inc.
3 *
4 * This source code is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License, version 3,
6 * as published by the Free Software Foundation.
7 *
8 * This source code is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Affero General Public License for more details.
12 *
13 * You should have received a copy of the GNU Affero General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 */
17
18#pragma once
19#include <stdint.h>
20#include "grok.h"
21#include "Logger.h"
22
23namespace gpup
24{
25// Forward-declare the plugin's ILogger (no virtual dtor, 3 methods)
26// so we can pass a compatible pointer across the shared-library boundary.
27struct ILogger
28{
29 virtual void info(const char* fmt, ...) = 0;
30 virtual void warn(const char* fmt, ...) = 0;
31 virtual void error(const char* fmt, ...) = 0;
32};
33} // namespace gpup
34
35namespace grk
36{
37
38// Adapter: wraps grk::ILogger (virtual dtor + 5 methods) in a gpup::ILogger
39// (no virtual dtor, 3 methods) so the vtable layout matches what the plugin expects.
41{
44 void info(const char* fmt, ...) override
45 {
46 va_list args;
47 va_start(args, fmt);
48 char buf[1024];
49 vsnprintf(buf, sizeof(buf), fmt, args);
50 va_end(args);
51 grk_logger->info("%s", buf);
52 }
53 void warn(const char* fmt, ...) override
54 {
55 va_list args;
56 va_start(args, fmt);
57 char buf[1024];
58 vsnprintf(buf, sizeof(buf), fmt, args);
59 va_end(args);
60 grk_logger->warn("%s", buf);
61 }
62 void error(const char* fmt, ...) override
63 {
64 va_list args;
65 va_start(args, fmt);
66 char buf[1024];
67 vsnprintf(buf, sizeof(buf), fmt, args);
68 va_end(args);
69 grk_logger->error("%s", buf);
70 }
71};
72
74
80
86
87typedef void* (*minpf_create_func)(minpf_object_params*);
88typedef int32_t (*minpf_destroy_func)(void*);
89
94
95typedef int32_t (*minpf_register_func)(const char* nodeType, const minpf_register_params* params);
96typedef int32_t (*minpf_invoke_service_func)(const char* serviceName, void* serviceParams);
97
108
109typedef int32_t (*minpf_exit_func)();
110
112
113#if defined(GRK_STATIC) || !defined(_WIN32)
114/* http://gcc.gnu.org/wiki/Visibility */
115#if __GNUC__ >= 4
116#if defined(GRK_STATIC) /* static library uses "hidden" */
117#define PLUGIN_API __attribute__((visibility("hidden")))
118#else
119#define PLUGIN_API __attribute__((visibility("default")))
120#endif
121#define PLUGIN_LOCAL __attribute__((visibility("hidden")))
122#else
123#define PLUGIN_API
124#define PLUGIN_LOCAL
125#endif
126#else
127#ifdef GRK_EXPORTS
128#define PLUGIN_API __declspec(dllexport)
129#else
130#define PLUGIN_API __declspec(dllimport)
131#endif /* GRK_EXPORTS */
132#endif /* !GRK_STATIC || !_WIN32 */
133
134extern "C" PLUGIN_API minpf_exit_func minpf_init_plugin(const char* pluginPath,
135 const minpf_platform_services* params);
136
137} // namespace grk
#define PLUGIN_API
Definition minpf_plugin.h:123
Definition minpf_plugin.h:24
ResWindow.
Definition CompressedChunkCache.h:36
int32_t(* minpf_register_func)(const char *nodeType, const minpf_register_params *params)
Definition minpf_plugin.h:95
int32_t(* minpf_destroy_func)(void *)
Definition minpf_plugin.h:88
struct grk::minpf_object_params minpf_object_params
int32_t(* minpf_invoke_service_func)(const char *serviceName, void *serviceParams)
Definition minpf_plugin.h:96
struct grk::minpf_register_params minpf_register_params
minpf_exit_func(* minpf_post_load_func)(const minpf_platform_services *)
Definition minpf_plugin.h:111
int32_t(* minpf_exit_func)()
Definition minpf_plugin.h:109
struct grk::minpf_platform_services minpf_platform_services
struct grk::minpf_plugin_api_version minpf_plugin_api_version
PLUGIN_API minpf_exit_func minpf_init_plugin(const char *pluginPath, const minpf_platform_services *params)
Definition minpf_plugin.h:28
virtual void error(const char *fmt,...)=0
virtual void warn(const char *fmt,...)=0
virtual void info(const char *fmt,...)=0
GpupLoggerAdapter(grk::ILogger *l)
Definition minpf_plugin.h:43
grk::ILogger * grk_logger
Definition minpf_plugin.h:42
void warn(const char *fmt,...) override
Definition minpf_plugin.h:53
void error(const char *fmt,...) override
Definition minpf_plugin.h:62
void info(const char *fmt,...) override
Definition minpf_plugin.h:44
Definition ILogger.h:27
Definition minpf_plugin.h:76
const char * id
Definition minpf_plugin.h:77
const struct minpf_platform_services * platformServices
Definition minpf_plugin.h:78
Definition minpf_plugin.h:99
minpf_invoke_service_func invokeService
Definition minpf_plugin.h:102
gpup::ILogger * logger
Definition minpf_plugin.h:106
const char * pluginPath
Definition minpf_plugin.h:104
bool verbose
Definition minpf_plugin.h:105
minpf_plugin_api_version version
Definition minpf_plugin.h:100
minpf_register_func registerObject
Definition minpf_plugin.h:101
Definition minpf_plugin.h:82
int32_t minor
Definition minpf_plugin.h:84
int32_t major
Definition minpf_plugin.h:83
Definition minpf_plugin.h:91
minpf_plugin_api_version version
Definition minpf_plugin.h:92