-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove necessity for RecordComponent::SCALAR #1154
Remove necessity for RecordComponent::SCALAR #1154
Commits on Nov 20, 2023
-
Configuration menu - View commit details
-
Copy full SHA for b4cbe37 - Browse repository at this point
Copy the full SHA b4cbe37View commit details -
Prepare Attributable for virtual inheritance
Use only zero-param constructors to avoid diamond initialization pitfalls
Configuration menu - View commit details
-
Copy full SHA for 16ff346 - Browse repository at this point
Copy the full SHA 16ff346View commit details -
Fix default constructors/operators of Container and BaseRecordComponent
These derive virtually from Attributable, and this avoids that pitfalls propagate to user code.
Configuration menu - View commit details
-
Copy full SHA for e8daa0d - Browse repository at this point
Copy the full SHA e8daa0dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 44db18d - Browse repository at this point
Copy the full SHA 44db18dView commit details -
Prepare class structure without applying logic yet
BaseRecord is now derived by its contained RecordComponent type. If it is scalar, the idea is that the BaseRecord itself is used as a RecordComponent, without needing to retrieve the [SCALAR] entry. No logic implemented yet around this, this just prepares the class structure. Notice that this will write some unnecessary attributes since the RecordComponent types initialize some default attributes upon construction.
Configuration menu - View commit details
-
Copy full SHA for e1c34ef - Browse repository at this point
Copy the full SHA e1c34efView commit details -
No longer use map entry SCALAR in application logic
Not yet supported: Backward compatibility for still allowing legacy access to scalar entries
Configuration menu - View commit details
-
Copy full SHA for 52a4d4e - Browse repository at this point
Copy the full SHA 52a4d4eView commit details -
No longer needed, as one object in the openPMD hierarchy is no longer represented by possibly multiple Writable objects.
Configuration menu - View commit details
-
Copy full SHA for 7d37e5a - Browse repository at this point
Copy the full SHA 7d37e5aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9817075 - Browse repository at this point
Copy the full SHA 9817075View commit details -
No virtual methods in Container class
Either this way, or make all of them virtual
Configuration menu - View commit details
-
Copy full SHA for 8ad6c8d - Browse repository at this point
Copy the full SHA 8ad6c8dView commit details -
Fully override Container methods in BaseRecord
Special care for legacy usage of SCALAR constant. Implement iteration API such that it works for scalar components as well.
Configuration menu - View commit details
-
Copy full SHA for 95b8315 - Browse repository at this point
Copy the full SHA 95b8315View commit details -
Configuration menu - View commit details
-
Copy full SHA for 882195f - Browse repository at this point
Copy the full SHA 882195fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1a5583e - Browse repository at this point
Copy the full SHA 1a5583eView commit details -
Factor out create_and_bind_container() function template
Will later be called by Record-type classes, too
Configuration menu - View commit details
-
Copy full SHA for 96310c9 - Browse repository at this point
Copy the full SHA 96310c9View commit details -
Factor out RecordComponent.__setitem__ and __getitem__
Similarly to the Container API, we will need to apply this to Record-type classes. Defining `__setitem__` and `__getitem__` for them is sufficient, as all other members are inherited from RecordComponent. `__setitem__` and `__getitem__` need special care, as they are inherited from Container AND from RecordComponent, so some conflict resolution is needed.
Configuration menu - View commit details
-
Copy full SHA for bb03e16 - Browse repository at this point
Copy the full SHA bb03e16View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0ccf5ba - Browse repository at this point
Copy the full SHA 0ccf5baView commit details -
Configuration menu - View commit details
-
Copy full SHA for bf58bf7 - Browse repository at this point
Copy the full SHA bf58bf7View commit details -
Adapt openpmd-pipe to new design
This somewhat demonstrates that this change is slightly API-breaking. Since openpmd-pipe acts directly on the class structure via `instanceof()`, fixes are necessary.
Configuration menu - View commit details
-
Copy full SHA for 5160f31 - Browse repository at this point
Copy the full SHA 5160f31View commit details -
Safeguard: No scalar and vector components side by side
"A scalar component can not be contained at the same time as one or more regular components."
Configuration menu - View commit details
-
Copy full SHA for 1cd6c6b - Browse repository at this point
Copy the full SHA 1cd6c6bView commit details -
Configuration menu - View commit details
-
Copy full SHA for b117863 - Browse repository at this point
Copy the full SHA b117863View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3142ef4 - Browse repository at this point
Copy the full SHA 3142ef4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 796da2f - Browse repository at this point
Copy the full SHA 796da2fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8b9239a - Browse repository at this point
Copy the full SHA 8b9239aView commit details