This is an automated email from the ASF dual-hosted git repository.

martinzink pushed a commit to branch controller_c_api_requirements
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit 04c8c2fae3e049dc4b28eb1d0f274e4970ce048f
Author: Adam Debreceni <[email protected]>
AuthorDate: Thu Feb 12 11:17:30 2026 +0100

    MINIFICPP-2715 - Windows fix
---
 extensions/ExtensionInitializer.cpp                     |  2 +-
 extensions/llamacpp/processors/ExtensionInitializer.cpp |  2 +-
 extensions/opencv/OpenCVLoader.cpp                      |  2 +-
 extensions/python/pythonlibloader/PythonLibLoader.cpp   |  2 +-
 extensions/python/pythonloader/PyProcLoader.cpp         |  2 +-
 extensions/sftp/SFTPLoader.cpp                          |  2 +-
 libminifi/src/ApiVersions.cpp                           | 11 +++++++----
 libminifi/src/minifi-c.cpp                              |  2 +-
 minifi-api/CMakeLists.txt                               |  2 +-
 minifi-api/include/minifi-c/minifi-c.h                  | 11 +++++++----
 minifi-api/minifi-c-api.def                             |  2 +-
 11 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/extensions/ExtensionInitializer.cpp 
b/extensions/ExtensionInitializer.cpp
index 3caaaeed0..4044e15c2 100644
--- a/extensions/ExtensionInitializer.cpp
+++ b/extensions/ExtensionInitializer.cpp
@@ -31,5 +31,5 @@ extern "C" MinifiExtension* MinifiInitExtension(MinifiConfig* 
/*config*/) {
     .processors_count = 0,
     .processors_ptr = nullptr
   };
-  return 
MinifiCreateExtension(minifi::utils::toStringView(MINIFI_API_VERSION), 
&ext_create_info);
+  return MinifiCreateExtension(MINIFI_API_VERSION, &ext_create_info);
 }
diff --git a/extensions/llamacpp/processors/ExtensionInitializer.cpp 
b/extensions/llamacpp/processors/ExtensionInitializer.cpp
index b90b8b133..18f5ff58e 100644
--- a/extensions/llamacpp/processors/ExtensionInitializer.cpp
+++ b/extensions/llamacpp/processors/ExtensionInitializer.cpp
@@ -35,7 +35,7 @@ extern "C" MinifiExtension* MinifiInitExtension(MinifiConfig* 
/*config*/) {
       .processors_count = 1,
       .processors_ptr = &description,
     };
-    extension = 
MinifiCreateExtension(minifi::api::utils::toStringView(MINIFI_API_VERSION), 
&ext_create_info);
+    extension = MinifiCreateExtension(MINIFI_API_VERSION, &ext_create_info);
   });
   return extension;
 }
diff --git a/extensions/opencv/OpenCVLoader.cpp 
b/extensions/opencv/OpenCVLoader.cpp
index 3f91395c4..83e75bdbd 100644
--- a/extensions/opencv/OpenCVLoader.cpp
+++ b/extensions/opencv/OpenCVLoader.cpp
@@ -42,5 +42,5 @@ extern "C" MinifiExtension* MinifiInitExtension(MinifiConfig* 
/*config*/) {
     .processors_count = 0,
     .processors_ptr = nullptr
   };
-  return 
MinifiCreateExtension(minifi::utils::toStringView(MINIFI_API_VERSION), 
&ext_create_info);
+  return MinifiCreateExtension(MINIFI_API_VERSION, &ext_create_info);
 }
diff --git a/extensions/python/pythonlibloader/PythonLibLoader.cpp 
b/extensions/python/pythonlibloader/PythonLibLoader.cpp
index cdf0356b7..522c43633 100644
--- a/extensions/python/pythonlibloader/PythonLibLoader.cpp
+++ b/extensions/python/pythonlibloader/PythonLibLoader.cpp
@@ -114,5 +114,5 @@ extern "C" MinifiExtension* 
MinifiInitExtension(MinifiConfig* config) {
     .processors_count = 0,
     .processors_ptr = nullptr
   };
-  return 
MinifiCreateExtension(minifi::utils::toStringView(MINIFI_API_VERSION), 
&ext_create_info);
+  return MinifiCreateExtension(MINIFI_API_VERSION, &ext_create_info);
 }
diff --git a/extensions/python/pythonloader/PyProcLoader.cpp 
b/extensions/python/pythonloader/PyProcLoader.cpp
index 55ad4ebef..f283847ff 100644
--- a/extensions/python/pythonloader/PyProcLoader.cpp
+++ b/extensions/python/pythonloader/PyProcLoader.cpp
@@ -49,5 +49,5 @@ extern "C" MinifiExtension* MinifiInitExtension(MinifiConfig* 
config) {
     .processors_count = 0,
     .processors_ptr = nullptr
   };
-  return 
MinifiCreateExtension(minifi::utils::toStringView(MINIFI_API_VERSION), 
&ext_create_info);
+  return MinifiCreateExtension(MINIFI_API_VERSION, &ext_create_info);
 }
diff --git a/extensions/sftp/SFTPLoader.cpp b/extensions/sftp/SFTPLoader.cpp
index bb23e9998..3cf12aedd 100644
--- a/extensions/sftp/SFTPLoader.cpp
+++ b/extensions/sftp/SFTPLoader.cpp
@@ -44,5 +44,5 @@ extern "C" MinifiExtension* MinifiInitExtension(MinifiConfig* 
/*config*/) {
     .processors_count = 0,
     .processors_ptr = nullptr
   };
-  return 
MinifiCreateExtension(minifi::utils::toStringView(MINIFI_API_VERSION), 
&ext_create_info);
+  return MinifiCreateExtension(MINIFI_API_VERSION, &ext_create_info);
 }
diff --git a/libminifi/src/ApiVersions.cpp b/libminifi/src/ApiVersions.cpp
index 5bff5c020..76364c0f0 100644
--- a/libminifi/src/ApiVersions.cpp
+++ b/libminifi/src/ApiVersions.cpp
@@ -20,11 +20,14 @@
 
 extern "C" {
 
-MINIFIAPI extern const char* const MINIFI_API_VERSION = 
MINIFI_PRIVATE_STRINGIFY(MINIFI_API_VERSION);
+const MinifiApiVersion* MINIFI_API_VERSION_FN() {
+  return reinterpret_cast<const 
MinifiApiVersion*>(MINIFI_PRIVATE_STRINGIFY(MINIFI_API_VERSION_FN));
+}
 
-#define REGISTER_C_API_VERSION(major, minor) \
-    MINIFIAPI extern const char* const 
MINIFI_PRIVATE_JOIN(MINIFI_C_API_VERSION, MINIFI_PRIVATE_JOIN(major, minor)) = \
-    MINIFI_PRIVATE_STRINGIFY(MINIFI_C_API_MAJOR_VERSION) "." 
MINIFI_PRIVATE_STRINGIFY(MINIFI_C_API_MINOR_VERSION) "." 
MINIFI_PRIVATE_STRINGIFY(MINIFI_C_API_PATCH_VERSION);
+#define REGISTER_C_API_VERSION(major, minor)  \
+    const MinifiApiVersion* MINIFI_PRIVATE_JOIN(MinifiCApiVersion, 
MINIFI_PRIVATE_JOIN(major, minor))() {  \
+      return reinterpret_cast<const 
MinifiApiVersion*>(MINIFI_PRIVATE_STRINGIFY(MINIFI_C_API_MAJOR_VERSION) "." 
MINIFI_PRIVATE_STRINGIFY(MINIFI_C_API_MINOR_VERSION) "." 
MINIFI_PRIVATE_STRINGIFY(MINIFI_C_API_PATCH_VERSION));  \
+    }
 
 REGISTER_C_API_VERSION(0, 1)
 
diff --git a/libminifi/src/minifi-c.cpp b/libminifi/src/minifi-c.cpp
index ebceb9f02..2abff81d0 100644
--- a/libminifi/src/minifi-c.cpp
+++ b/libminifi/src/minifi-c.cpp
@@ -225,7 +225,7 @@ void useCProcessorClassDescription(const 
MinifiProcessorClassDefinition& class_d
 
 extern "C" {
 
-MinifiExtension* MinifiCreateExtension(MinifiStringView /*api_version*/, const 
MinifiExtensionCreateInfo* extension_create_info) {
+MinifiExtension* MinifiCreateExtension(const MinifiApiVersion* 
/*api_version*/, const MinifiExtensionCreateInfo* extension_create_info) {
   gsl_Assert(extension_create_info);
   auto extension_name = toString(extension_create_info->name);
   minifi::BundleIdentifier bundle{
diff --git a/minifi-api/CMakeLists.txt b/minifi-api/CMakeLists.txt
index 7a758dbf8..dfef95bc7 100644
--- a/minifi-api/CMakeLists.txt
+++ b/minifi-api/CMakeLists.txt
@@ -6,7 +6,7 @@ target_compile_definitions(minifi-api-common INTERFACE 
MINIFI_VERSION_STR="${MIN
 add_library(minifi-api INTERFACE)
 target_include_directories(minifi-api INTERFACE include)
 target_link_libraries(minifi-api INTERFACE minifi-api-common)
-target_compile_definitions(minifi-api INTERFACE 
MINIFI_API_VERSION=MINIFI_CPP_API_VERSION_${BUILD_IDENTIFIER})
+target_compile_definitions(minifi-api INTERFACE 
MINIFI_API_VERSION_FN=MinifiCppApiVersion_${BUILD_IDENTIFIER})
 
 add_library(minifi-c-api INTERFACE)
 target_include_directories(minifi-c-api INTERFACE include/minifi-c)
diff --git a/minifi-api/include/minifi-c/minifi-c.h 
b/minifi-api/include/minifi-c/minifi-c.h
index afccd00c8..d1f45ea28 100644
--- a/minifi-api/include/minifi-c/minifi-c.h
+++ b/minifi-api/include/minifi-c/minifi-c.h
@@ -38,10 +38,10 @@ extern "C" {
 #define MINIFI_C_API_MINOR_VERSION 1
 #define MINIFI_C_API_PATCH_VERSION 0
 
-#ifndef MINIFI_API_VERSION
-#define MINIFI_API_VERSION MINIFI_PRIVATE_JOIN(MINIFI_C_API_VERSION, 
MINIFI_PRIVATE_JOIN(MINIFI_C_API_MAJOR_VERSION, MINIFI_C_API_MINOR_VERSION))
+#ifndef MINIFI_API_VERSION_FN
+#define MINIFI_API_VERSION_FN MINIFI_PRIVATE_JOIN(MinifiCApiVersion, 
MINIFI_PRIVATE_JOIN(MINIFI_C_API_MAJOR_VERSION, MINIFI_C_API_MINOR_VERSION))
 #endif
-extern const char* const MINIFI_API_VERSION;
+#define MINIFI_API_VERSION MINIFI_API_VERSION_FN()
 
 #define MINIFI_NULL nullptr
 #define MINIFI_OWNED
@@ -94,6 +94,7 @@ typedef struct MinifiOutputStream MinifiOutputStream;
 typedef struct MinifiConfig MinifiConfig;
 typedef struct MinifiExtension MinifiExtension;
 typedef struct MinifiPublishedMetrics MinifiPublishedMetrics;
+typedef struct MinifiApiVersion MinifiApiVersion;
 
 typedef enum MinifiStatus : uint32_t {
   MINIFI_STATUS_SUCCESS = 0,
@@ -188,10 +189,12 @@ typedef struct MinifiExtensionCreateInfo {
   const MinifiProcessorClassDefinition* processors_ptr;
 } MinifiExtensionCreateInfo;
 
+const MinifiApiVersion* MINIFI_API_VERSION_FN();
+
 // api_version is used to provide backwards compatible changes to the 
MinifiExtensionCreateInfo structure,
 // e.g. if MinifiExtensionCreateInfo gets a new field in version 1.2.0, 
extensions built with api 1.1.0 do not
 // have to be rebuilt
-MinifiExtension* MinifiCreateExtension(MinifiStringView api_version, const 
MinifiExtensionCreateInfo*);
+MinifiExtension* MinifiCreateExtension(const MinifiApiVersion* api_version, 
const MinifiExtensionCreateInfo*);
 
 MINIFI_OWNED MinifiPublishedMetrics* MinifiPublishedMetricsCreate(size_t 
count, const MinifiStringView* metric_names, const double* metric_values);
 
diff --git a/minifi-api/minifi-c-api.def b/minifi-api/minifi-c-api.def
index ee763264d..1e9f66ecd 100644
--- a/minifi-api/minifi-c-api.def
+++ b/minifi-api/minifi-c-api.def
@@ -22,4 +22,4 @@ EXPORTS
   MinifiFlowFileSetAttribute
   MinifiFlowFileGetAttribute
   MinifiFlowFileGetAttributes
-  MINIFI_C_API_VERSION_0_1
+  MinifiCApiVersion_0_1

Reply via email to