Skip to content

Decouple plugin operator interface from ADIOS internals#4854

Open
eisenhauer wants to merge 3 commits intoornladios:masterfrom
eisenhauer:plugin-operator-interface
Open

Decouple plugin operator interface from ADIOS internals#4854
eisenhauer wants to merge 3 commits intoornladios:masterfrom
eisenhauer:plugin-operator-interface

Conversation

@eisenhauer
Copy link
Member

Extract DataType, Dims, Params, Accuracy into ADIOSBaseTypes.h as a self-contained header with no internal dependencies. Rewrite PluginOperatorInterface as a standalone abstract class (no core::Operator inheritance) so external plugin operators need only include a single header and no longer link against adios2_core.

This is a first step to not exporting all of our internal .h files for the sake of plugins. Fixing the plugin engine interface will be much harder.

I'm not wildly happy about the duplication of DataTypeSize and GetTotalSize here, but moving those functions out of helper while still making sure that plug-in operators don't link against adios_core is a little more involved. For the moment this seemed like an easy solution that can be cleaned up later if desired.

Extract DataType, Dims, Params, Accuracy into ADIOSBaseTypes.h as a
self-contained header with no internal dependencies. Rewrite
PluginOperatorInterface as a standalone abstract class (no core::Operator
inheritance) so external plugin operators need only include a single
header and no longer link against adios2_core.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@eisenhauer eisenhauer force-pushed the plugin-operator-interface branch from b118867 to 1973ef4 Compare February 10, 2026 15:55
pnorbert
pnorbert previously approved these changes Feb 10, 2026
Copy link
Contributor

@pnorbert pnorbert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I approve it already but maybe the GetTotalSize and DataTypeSize could go into that single exported header.

@eisenhauer
Copy link
Member Author

I approve it already but maybe the GetTotalSize and DataTypeSize could go into that single exported header.

Yeah, the easy thing is to put them as inline functions in the new BaseTypes header. Then the choice is to either 1) just change the bodies of those functions in helper so that they use the new version (least code disruption), or 2) kill those functions in helper and then modify everywhere they are called to remove the helper:: prefix (if there wasn't a use statement that made it unnecessary). Honestly, the latter seemed like the right approach, but I wasn't sure I wanted to touch all those files in this PR. But we've probably got time to decide, Caitlin is the code owner, so no merging until she has a look. So what's your preference? And do it here or another PR?

@pnorbert
Copy link
Contributor

Either way is fine with me.

…ource of truth

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@eisenhauer
Copy link
Member Author

Either way is fine with me.

OK, I've de-dup'd.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants