mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 17:26:01 +08:00
- Implement comprehensive C++ serializer generator (tests/generate-cpp-serializer.ts) - Direct transformation of Java SkeletonSerializer to C++ header-only implementation - Handle all C++-specific API differences: * Field access patterns (obj.field → obj->field, private fields → obj->_field) * Null check removal for reference-returning methods (getBones, getEdges) * Nested array null check elimination (getVertices, getDrawOrders) * Enum serialization via switch statements replacing .name() calls * Custom function replacement system for C++-specific implementations - Add specialized C++ implementations: * writeColor: handle public Color fields (r,g,b,a without underscore) * writeSkin: iterate AttachmentMap::Entries and call writeSkinEntry * writeSkinEntry: handle AttachmentMap::Entry instead of Java SkinEntry - Auto-generate both pointer and reference versions of all write methods - Create JsonWriter.h as header-only port of Java JsonWriter - Update HeadlessTest.cpp to use generated SkeletonSerializer - Add comprehensive type analysis and enum mapping from analysis-result.json - Implement exclusion system for filtering unwanted types/methods - Fix Java generator nested array null checks that were incorrectly hardcoded Generated C++ serializer produces identical JSON output to Java reference implementation.
13 lines
555 B
Plaintext
13 lines
555 B
Plaintext
# Exclusions for Spine serializer generation
|
|
# Single source of truth for all runtime exclusions
|
|
# Format: <type> <class> <property> [reason]
|
|
|
|
# Types that should be completely excluded
|
|
type SkeletonAttachment # Not available in runtimes other than spine-libgdx
|
|
type AnimationState.AnimationStateListener # No need to serialize this one
|
|
|
|
# Methods that should be excluded from specific classes
|
|
method AnimationState.TrackEntry getListener() # No need to serialize this one
|
|
|
|
# Fields that should be excluded (if any)
|
|
# field ClassName fieldName # reason |