Add Typeinfo method registration#307
Merged
Merged
Conversation
2 tasks
waynemwashuma
added a commit
that referenced
this pull request
Mar 29, 2026
## Objective Integrate `copy` / `clone` semantics into the type registry system. - Registers duplication methods for all ECS components in their respective modules - Enables reflection-based systems to invoke component-specific duplication logic - This is building upon #307 ## Solution Although `copy` / `clone` methods were introduced on components, they were not discoverable through the type registry. This adds a way to use the type registry to clone/copy components in reflection based systems without needing to know the underlying type. ### Changes made Added method registrations for ` ``copy` and `clone` across all registered component types. ### Why this approach - Enables generic systems to invoke `copy`/`clone` without hardcoding types - Aligns duplication with existing metadata-driven workflows ## Showcase ### Before ```js // Registry cannot perform cloning generically const info = registry.get(Position2D) // No way to invoke type-specific copy logic // Requires manual handling per type ``` ### After ```js const info = registry.get(Position2D) // Invoke registered method (pseudo-API) const copy = info.call('copy', source) ``` ## Migration guide No migration required. ## Checklist - [ ] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Objective
Extend the reflection system to support runtime method registration and invocation on types.
Solution
The existing reflection system (
TypeRegistry/TypeEntry) only stored type metadata (TypeInfo) but lacked support for:This limited reflection to static inspection without behavioral interaction.
Changes made
TypeEntryMethodEntryWhy this approach
1. Enables behavioral reflection
Moves reflection from introspection-only to introspection + execution
This is critical for:
2. Minimal abstraction overhead
MethodEntryis intentionally thin3. Extensible foundation
This design allows future additions:
this)Notes
Array)Showcase
Direct method access
Migration guide
No migration required.
Checklist