Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR does not include the interface-related CMake changes - those will be brought in when #392 gets merged.
The PR introduces 2 main interface classes:
Microenvironment_InterfaceBasic_Agent_InterfaceThese interfaces are used throughout the rest of PhysiCell code instead of the concrete BioFVM classes so that we can support multiple BioFVM implementations.
As of now, the interfaces are very close to 1-to-1 copies of the concrete classes. In the next PR, which introduces a new BioFVM implementation, we will refine the interfaces further by removing internal methods.
BioFVM_Implementationclass is the pseudo-factory for the new implementation: The new implementation will have to implement the methods of this class that will operate with the concrete classes of the 2 aforementioned interfaces.The code change is big, but it is mainly just a necessary syntactic change to support proper interface isolation. However, here are the major logic changes:
modulestoBioFVMdirectoryBioFVM_Implementation::initialize_microenvironment();that will initialize a BioFVM implementation for the further modification and useall_basic_agentsare now only accessible viaBioFVM_Implementation::get_all_basic_agentsfor the sake of hiding implementation details