There isn't currently a way for a C++ extension to hide interface inheritance. It was possible before streamlined extensions because the dispatching code wasn't actively generated.
This is really only useful where the extension passes self to another function, e.g., a visitor.
This would probably need to be a new section in .zeolite-module. It doesn't really belong in category_source because the latter can define multiple categories.
For example:
category_internals: [
category {
name: Foo // Not sure if the param should be included here.
refines: []
defines: [
Equals<Foo<#x>>
LessThan<Foo<#x>>
]
}
]
To actually execute:
Code generation would need to be updated, e.g., StreamlinedExtension in CompilerCxx.CxxFiles.
Inherited categories need to be type checked. This could be done with a mostly-empty DefinedCategory passed to mergeInternalInheritance. The updated category map would then be needed when generating the code.
There isn't currently a way for a C++ extension to hide interface inheritance. It was possible before streamlined extensions because the dispatching code wasn't actively generated.
This is really only useful where the extension passes
self
to another function, e.g., a visitor.This would probably need to be a new section in
.zeolite-module
. It doesn't really belong incategory_source
because the latter can define multiple categories.For example:
To actually execute:
StreamlinedExtension
inCompilerCxx.CxxFiles
.DefinedCategory
passed tomergeInternalInheritance
. The updated category map would then be needed when generating the code.