diff --git a/spine-c/build.sh b/spine-c/build.sh index 5d56f9c90..cf2414d03 100755 --- a/spine-c/build.sh +++ b/spine-c/build.sh @@ -45,7 +45,7 @@ if [ "$1" = "codegen" ]; then exit 1 fi - ../formatters/format.sh cpp + ../formatters/format-cpp.sh log_summary "✓ Code generation successful" exit 0 diff --git a/spine-c/codegen/biome.json b/spine-c/codegen/biome.json new file mode 100644 index 000000000..fb8fcc747 --- /dev/null +++ b/spine-c/codegen/biome.json @@ -0,0 +1,11 @@ +{ + "formatter": { + "enabled": false + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + } +} \ No newline at end of file diff --git a/spine-c/codegen/package-lock.json b/spine-c/codegen/package-lock.json index d2a46e949..564b95d45 100644 --- a/spine-c/codegen/package-lock.json +++ b/spine-c/codegen/package-lock.json @@ -1,26 +1,796 @@ { - "name": "codegen", + "name": "spine-c-codegen", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "codegen", - "version": "1.0.0", - "license": "ISC", + "name": "spine-c-codegen", "devDependencies": { - "@types/node": "^24.0.10", - "typescript": "^5.8.3" + "@biomejs/biome": "^2.1.1", + "@types/node": "^20.0.0", + "tsx": "^4.0.0", + "typescript-formatter": "^7.2.2" + } + }, + "node_modules/@biomejs/biome": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.1.2.tgz", + "integrity": "sha512-yq8ZZuKuBVDgAS76LWCfFKHSYIAgqkxVB3mGVVpOe2vSkUTs7xG46zXZeNPRNVjiJuw0SZ3+J2rXiYx0RUpfGg==", + "dev": true, + "license": "MIT OR Apache-2.0", + "bin": { + "biome": "bin/biome" + }, + "engines": { + "node": ">=14.21.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/biome" + }, + "optionalDependencies": { + "@biomejs/cli-darwin-arm64": "2.1.2", + "@biomejs/cli-darwin-x64": "2.1.2", + "@biomejs/cli-linux-arm64": "2.1.2", + "@biomejs/cli-linux-arm64-musl": "2.1.2", + "@biomejs/cli-linux-x64": "2.1.2", + "@biomejs/cli-linux-x64-musl": "2.1.2", + "@biomejs/cli-win32-arm64": "2.1.2", + "@biomejs/cli-win32-x64": "2.1.2" + } + }, + "node_modules/@biomejs/cli-darwin-arm64": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.1.2.tgz", + "integrity": "sha512-leFAks64PEIjc7MY/cLjE8u5OcfBKkcDB0szxsWUB4aDfemBep1WVKt0qrEyqZBOW8LPHzrFMyDl3FhuuA0E7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-darwin-x64": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.1.2.tgz", + "integrity": "sha512-Nmmv7wRX5Nj7lGmz0FjnWdflJg4zii8Ivruas6PBKzw5SJX/q+Zh2RfnO+bBnuKLXpj8kiI2x2X12otpH6a32A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.1.2.tgz", + "integrity": "sha512-NWNy2Diocav61HZiv2enTQykbPP/KrA/baS7JsLSojC7Xxh2nl9IczuvE5UID7+ksRy2e7yH7klm/WkA72G1dw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64-musl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.1.2.tgz", + "integrity": "sha512-qgHvafhjH7Oca114FdOScmIKf1DlXT1LqbOrrbR30kQDLFPEOpBG0uzx6MhmsrmhGiCFCr2obDamu+czk+X0HQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.1.2.tgz", + "integrity": "sha512-Km/UYeVowygTjpX6sGBzlizjakLoMQkxWbruVZSNE6osuSI63i4uCeIL+6q2AJlD3dxoiBJX70dn1enjQnQqwA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64-musl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.1.2.tgz", + "integrity": "sha512-xlB3mU14ZUa3wzLtXfmk2IMOGL+S0aHFhSix/nssWS/2XlD27q+S6f0dlQ8WOCbYoXcuz8BCM7rCn2lxdTrlQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-arm64": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.1.2.tgz", + "integrity": "sha512-G8KWZli5ASOXA3yUQgx+M4pZRv3ND16h77UsdunUL17uYpcL/UC7RkWTdkfvMQvogVsAuz5JUcBDjgZHXxlKoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-x64": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.1.2.tgz", + "integrity": "sha512-9zajnk59PMpjBkty3bK2IrjUsUHvqe9HWwyAWQBjGLE7MIBjbX2vwv1XPEhmO2RRuGoTkVx3WCanHrjAytICLA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, "node_modules/@types/node": { - "version": "24.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.10.tgz", - "integrity": "sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA==", + "version": "20.19.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.9.tgz", + "integrity": "sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.8.0" + "undici-types": "~6.21.0" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/commandpost": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.4.0.tgz", + "integrity": "sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true, + "license": "ISC" + }, + "node_modules/tsx": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", + "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" } }, "node_modules/typescript": { @@ -29,6 +799,7 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -37,12 +808,39 @@ "node": ">=14.17" } }, + "node_modules/typescript-formatter": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/typescript-formatter/-/typescript-formatter-7.2.2.tgz", + "integrity": "sha512-V7vfI9XArVhriOTYHPzMU2WUnm5IMdu9X/CPxs8mIMGxmTBFpDABlbkBka64PZJ9/xgQeRpK8KzzAG4MPzxBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "commandpost": "^1.0.0", + "editorconfig": "^0.15.0" + }, + "bin": { + "tsfmt": "bin/tsfmt" + }, + "engines": { + "node": ">= 4.2.0" + }, + "peerDependencies": { + "typescript": "^2.1.6 || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev" + } + }, "node_modules/undici-types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", - "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "license": "ISC" } } } diff --git a/spine-c/codegen/package.json b/spine-c/codegen/package.json index dd7b8b5c0..2500b5875 100644 --- a/spine-c/codegen/package.json +++ b/spine-c/codegen/package.json @@ -1,18 +1,10 @@ { - "name": "codegen", - "version": "1.0.0", - "main": "index.js", - "scripts": { - "build": "tsc", - "generate": "npm run build && node dist/index.js", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "description": "", + "name": "spine-c-codegen", + "type": "module", "devDependencies": { - "@types/node": "^24.0.10", - "typescript": "^5.8.3" + "@types/node": "^20.0.0", + "tsx": "^4.0.0", + "typescript-formatter": "^7.2.2", + "@biomejs/biome": "^2.1.1" } -} +} \ No newline at end of file diff --git a/spine-c/codegen/src/array-scanner.ts b/spine-c/codegen/src/array-scanner.ts index 9cfc77b59..5e79808fb 100644 --- a/spine-c/codegen/src/array-scanner.ts +++ b/spine-c/codegen/src/array-scanner.ts @@ -1,7 +1,6 @@ -import { Type, ArraySpecialization, isPrimitive, toSnakeCase, Member } from './types'; +import { isFieldExcluded, isFieldGetterExcluded, isMethodExcluded } from './exclusions'; +import { type ArraySpecialization, type Exclusion, isPrimitive, type Member, type Type, toSnakeCase } from './types'; import { WarningsCollector } from './warnings'; -import { Exclusion } from './types'; -import { isMethodExcluded, isFieldExcluded, isFieldGetterExcluded } from './exclusions'; // Note: This regex won't correctly parse nested arrays like Array> // It will match "Array" instead of the full type. @@ -21,7 +20,8 @@ function extractArrayTypes( // Reset regex lastIndex to ensure it starts from the beginning ARRAY_REGEX.lastIndex = 0; - let match; + let match: RegExpExecArray | null; + // biome-ignore lint/suspicious/noAssignInExpressions: it's fine while ((match = ARRAY_REGEX.exec(typeStr)) !== null) { const arrayType = match[0]; const arrayTypeSources = arrayTypes.get(arrayType) || []; @@ -76,18 +76,18 @@ export function scanArraySpecializations(includedTypes: Type[], exclusions: Excl const filteredSources = sources.filter(source => { const typeName = source.type.name; const member = source.member; - + // Check if the entire type is excluded if (exclusions.some(e => e.kind === 'type' && e.typeName === typeName)) { return false; } - + // Check based on member kind switch (member.kind) { case 'method': // Check if method is excluded return !isMethodExcluded(typeName, member.name, exclusions, member); - + case 'field': // Check if field is excluded (all accessors) if (isFieldExcluded(typeName, member.name, exclusions)) { @@ -99,12 +99,12 @@ export function scanArraySpecializations(includedTypes: Type[], exclusions: Excl } // Field is included if at least setter is not excluded return true; - + default: return true; } }); - + // Skip if all sources are excluded if (filteredSources.length === 0) { continue; diff --git a/spine-c/codegen/src/c-types.ts b/spine-c/codegen/src/c-types.ts index 76b241c83..ea3c69336 100644 --- a/spine-c/codegen/src/c-types.ts +++ b/spine-c/codegen/src/c-types.ts @@ -1,8 +1,8 @@ -import { ClassOrStruct, Enum } from './types'; +import type { ClassOrStruct, Enum } from './types'; export interface CParameter { name: string; // Parameter name in C - cType: string; // C type (e.g., "float*", "spine_bone") + cType: string; // C type (e.g., "float*", "spine_bone") cppType: string; // Original C++ type (e.g., "float&", "Bone*") isOutput: boolean; // true for non-const references that become output params } diff --git a/spine-c/codegen/src/c-writer.ts b/spine-c/codegen/src/c-writer.ts index 893c257a0..3bf43ca89 100644 --- a/spine-c/codegen/src/c-writer.ts +++ b/spine-c/codegen/src/c-writer.ts @@ -1,8 +1,10 @@ -import * as fs from 'fs'; -import * as path from 'path'; -import { Type, toSnakeCase } from './types'; -import { CClassOrStruct, CEnum, CMethod, CParameter } from './c-types'; +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import type { CClassOrStruct, CEnum, CMethod, CParameter } from './c-types'; +import { toSnakeCase } from './types'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const LICENSE_HEADER = fs.readFileSync(path.join(__dirname, '../../../spine-cpp/src/spine/Skeleton.cpp'), 'utf8').split('\n').slice(0, 28).join('\n'); /** Generates strings for CClassOrStruct and CEnum, and writes them to files. */ @@ -35,6 +37,7 @@ export class CWriter { // Add includes lines.push('#include "../base.h"'); lines.push('#include "types.h"'); + lines.push('#include "arrays.h"'); lines.push(''); // Add extern C @@ -44,8 +47,8 @@ export class CWriter { lines.push(''); // Add all method declarations - for (const constructor of type.constructors) { - lines.push(this.writeMethodDeclaration(constructor)); + for (const constr of type.constructors) { + lines.push(this.writeMethodDeclaration(constr)); } if (type.constructors.length > 0) { @@ -84,8 +87,8 @@ export class CWriter { lines.push(''); // Add all method implementations - for (const constructor of type.constructors) { - lines.push(this.writeMethodImplementation(constructor)); + for (const constr of type.constructors) { + lines.push(this.writeMethodImplementation(constr)); lines.push(''); } @@ -99,7 +102,7 @@ export class CWriter { lines.push(''); } - return lines.join('\n').trim() + '\n'; + return `${lines.join('\n').trim()}\n`; } writeEnumHeader(enumType: CEnum): string { @@ -227,68 +230,68 @@ export class CWriter { // Generate header const arrayHeaderLines: string[] = []; - { - arrayHeaderLines.push(LICENSE_HEADER); - arrayHeaderLines.push(''); - arrayHeaderLines.push('#ifndef SPINE_C_ARRAYS_H'); - arrayHeaderLines.push('#define SPINE_C_ARRAYS_H'); - arrayHeaderLines.push(''); - arrayHeaderLines.push('#include "../base.h"'); - arrayHeaderLines.push('#include "types.h"'); - arrayHeaderLines.push(''); - arrayHeaderLines.push('#ifdef __cplusplus'); - arrayHeaderLines.push('extern "C" {'); - arrayHeaderLines.push('#endif'); - arrayHeaderLines.push(''); - // Add opaque type declarations - for (const arrayType of cArrayTypes) { - arrayHeaderLines.push(`SPINE_OPAQUE_TYPE(${arrayType.name})`); + arrayHeaderLines.push(LICENSE_HEADER); + arrayHeaderLines.push(''); + arrayHeaderLines.push('#ifndef SPINE_C_ARRAYS_H'); + arrayHeaderLines.push('#define SPINE_C_ARRAYS_H'); + arrayHeaderLines.push(''); + arrayHeaderLines.push('#include "../base.h"'); + arrayHeaderLines.push('#include "types.h"'); + arrayHeaderLines.push(''); + arrayHeaderLines.push('#ifdef __cplusplus'); + arrayHeaderLines.push('extern "C" {'); + arrayHeaderLines.push('#endif'); + arrayHeaderLines.push(''); + + // Add opaque type declarations + for (const arrayType of cArrayTypes) { + arrayHeaderLines.push(`SPINE_OPAQUE_TYPE(${arrayType.name})`); + } + + arrayHeaderLines.push(''); + + // Add all method declarations + for (const arrayType of cArrayTypes) { + arrayHeaderLines.push(arrayType.constructors.map(c => this.writeMethodDeclaration(c)).join('\n\n')); + if (arrayType.destructor) { + arrayHeaderLines.push(this.writeMethodDeclaration(arrayType.destructor)); } - - arrayHeaderLines.push(''); - - // Add all method declarations - for (const arrayType of cArrayTypes) { - arrayHeaderLines.push(arrayType.constructors.map(c => this.writeMethodDeclaration(c)).join('\n\n')); - if (arrayType.destructor) { - arrayHeaderLines.push(this.writeMethodDeclaration(arrayType.destructor)); - } - arrayHeaderLines.push(arrayType.methods.map(c => this.writeMethodDeclaration(c)).join('\n\n')); - arrayHeaderLines.push(''); - } - - // Close extern C - arrayHeaderLines.push('#ifdef __cplusplus'); - arrayHeaderLines.push('}'); - arrayHeaderLines.push('#endif'); - arrayHeaderLines.push(''); - arrayHeaderLines.push('#endif /* SPINE_C_ARRAYS_H */'); + arrayHeaderLines.push(arrayType.methods.map(c => this.writeMethodDeclaration(c)).join('\n\n')); arrayHeaderLines.push(''); } + // Close extern C + arrayHeaderLines.push('#ifdef __cplusplus'); + arrayHeaderLines.push('}'); + arrayHeaderLines.push('#endif'); + arrayHeaderLines.push(''); + arrayHeaderLines.push('#endif /* SPINE_C_ARRAYS_H */'); + arrayHeaderLines.push(''); + + // Generate source const arraySourceLines: string[] = []; - { - arraySourceLines.push(LICENSE_HEADER); - arraySourceLines.push(''); - arraySourceLines.push('#include "arrays.h"'); - arraySourceLines.push('#include '); - arraySourceLines.push(''); - arraySourceLines.push('using namespace spine;'); - arraySourceLines.push(''); - // Add all method implementations - for (const arrayType of cArrayTypes) { - arraySourceLines.push(arrayType.constructors.map(c => this.writeMethodImplementation(c)).join('\n\n')); - if (arrayType.destructor) { - arraySourceLines.push(this.writeMethodImplementation(arrayType.destructor)); - } - arraySourceLines.push(arrayType.methods.map(c => this.writeMethodImplementation(c)).join('\n\n')); - arraySourceLines.push(''); + arraySourceLines.push(LICENSE_HEADER); + arraySourceLines.push(''); + arraySourceLines.push('#include "arrays.h"'); + arraySourceLines.push('#include '); + arraySourceLines.push(''); + arraySourceLines.push('using namespace spine;'); + arraySourceLines.push(''); + + // Add all method implementations + for (const arrayType of cArrayTypes) { + arraySourceLines.push(arrayType.constructors.map(c => this.writeMethodImplementation(c)).join('\n\n')); + if (arrayType.destructor) { + arraySourceLines.push(this.writeMethodImplementation(arrayType.destructor)); } + arraySourceLines.push(arrayType.methods.map(c => this.writeMethodImplementation(c)).join('\n\n')); + arraySourceLines.push(''); } + const headerPath = path.join(this.outputDir, 'arrays.h'); const sourcePath = path.join(this.outputDir, 'arrays.cpp'); @@ -327,10 +330,6 @@ export class CWriter { lines.push(`#include "${enumType.name.replace("spine_", "")}.h"`); } - lines.push(''); - lines.push('// Array specializations'); - lines.push('#include "arrays.h"'); - lines.push(''); lines.push('#ifdef __cplusplus'); lines.push('}'); diff --git a/spine-c/codegen/src/checks.ts b/spine-c/codegen/src/checks.ts index f6d798b7b..ac2552e88 100644 --- a/spine-c/codegen/src/checks.ts +++ b/spine-c/codegen/src/checks.ts @@ -1,6 +1,5 @@ import { isMethodExcluded } from "./exclusions"; -import { Exclusion, Method, Field, Type } from "./types"; -import { ClassOrStruct, toSnakeCase, isPrimitive } from "./types"; +import { type ClassOrStruct, type Exclusion, type Field, isPrimitive, type Method, type Type, toSnakeCase } from "./types"; /** * Checks for methods that have both const and non-const versions with different return types. @@ -50,7 +49,7 @@ export function checkConstNonConstConflicts(classes: ClassOrStruct[], exclusions // Check if we have both const and non-const versions const hasConst = group.some(m => m.isConst === true); const hasNonConst = group.some(m => m.isConst === false); - + if (hasConst && hasNonConst) { conflicts.push({ type: type.name, method: group[0].name }); } diff --git a/spine-c/codegen/src/exclusions.ts b/spine-c/codegen/src/exclusions.ts index 96120b36c..e147eb8eb 100644 --- a/spine-c/codegen/src/exclusions.ts +++ b/spine-c/codegen/src/exclusions.ts @@ -1,5 +1,5 @@ -import * as fs from 'fs'; -import { Exclusion } from './types'; +import * as fs from 'node:fs'; +import type { Exclusion } from './types'; /** * Loads exclusions from a text file. @@ -85,7 +85,7 @@ export function loadExclusions(filePath: string): Exclusion[] { if (fieldMatch) { const typeName = fieldMatch[1].trim(); const fieldName = fieldMatch[2]?.trim(); - + if (fieldName) { // Specific field exclusions.push({ @@ -169,7 +169,7 @@ export function isFieldExcluded(typeName: string, fieldName: string, exclusions: export function isFieldGetterExcluded(typeName: string, fieldName: string, exclusions: Exclusion[]): boolean { return exclusions.some(ex => { - if (ex.kind === 'field-get' && ex.typeName === typeName && + if (ex.kind === 'field-get' && ex.typeName === typeName && (ex.fieldName === fieldName || ex.fieldName === '*')) { return true; } @@ -183,7 +183,7 @@ export function isFieldGetterExcluded(typeName: string, fieldName: string, exclu export function isFieldSetterExcluded(typeName: string, fieldName: string, exclusions: Exclusion[]): boolean { return exclusions.some(ex => { - if (ex.kind === 'field-set' && ex.typeName === typeName && + if (ex.kind === 'field-set' && ex.typeName === typeName && (ex.fieldName === fieldName || ex.fieldName === '*')) { return true; } diff --git a/spine-c/codegen/src/index.ts b/spine-c/codegen/src/index.ts index ae8720a7a..ace23e161 100644 --- a/spine-c/codegen/src/index.ts +++ b/spine-c/codegen/src/index.ts @@ -1,13 +1,16 @@ #!/usr/bin/env node -import * as path from 'path'; +import * as path from 'node:path'; +import { fileURLToPath } from 'node:url'; import { CWriter } from './c-writer'; -import { checkConstNonConstConflicts, checkMultiLevelPointers, checkFieldAccessorConflicts, checkMethodTypeNameConflicts, checkValueReturns } from './checks'; +import { checkConstNonConstConflicts, checkFieldAccessorConflicts, checkMethodTypeNameConflicts, checkMultiLevelPointers, checkValueReturns } from './checks'; import { isTypeExcluded, loadExclusions } from './exclusions'; import { generateArrays, generateTypes } from './ir-generator'; import { extractTypes } from './type-extractor'; -import { ClassOrStruct } from './types'; +import type { ClassOrStruct } from './types'; -async function main() { +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export async function generate() { // Load all exclusions const exclusions = loadExclusions(path.join(__dirname, '../exclusions.txt')); @@ -66,6 +69,12 @@ async function main() { // Generate C intermediate representation for classes, enums and arrays const { cTypes, cEnums } = await generateTypes(types, exclusions, allExtractedTypes); const cArrayTypes = await generateArrays(types, arrayType, exclusions); + return { cTypes, cEnums, cArrayTypes }; +} + +async function main() { + // Generate C types and enums + const { cTypes, cEnums, cArrayTypes } = await generate(); // Write all files to disk const cWriter = new CWriter(path.join(__dirname, '../../src/generated')); diff --git a/spine-c/codegen/src/ir-generator.ts b/spine-c/codegen/src/ir-generator.ts index 1f6234ddf..c85599e82 100644 --- a/spine-c/codegen/src/ir-generator.ts +++ b/spine-c/codegen/src/ir-generator.ts @@ -1,10 +1,8 @@ -import { ClassOrStruct, Enum, Member, Constructor, Method, Field, Destructor, Parameter, Type } from './types'; -import { CClassOrStruct, CEnum, CMethod, CParameter, CEnumValue } from './c-types'; -import { toSnakeCase, toCFunctionName, toCTypeName, isPrimitive, checkTypeSupport } from './types'; -import { Exclusion } from './types'; -import { ArraySpecialization } from './types'; import { scanArraySpecializations } from './array-scanner'; +import type { CClassOrStruct, CEnum, CEnumValue, CMethod, CParameter } from './c-types'; import { isFieldExcluded, isFieldGetterExcluded, isFieldSetterExcluded } from './exclusions'; +import type { ArraySpecialization, Exclusion } from './types'; +import { type ClassOrStruct, type Constructor, checkTypeSupport, type Enum, type Field, isPrimitive, type Method, type Parameter, type Type, toCFunctionName, toCTypeName, toSnakeCase } from './types'; /** * Checks if a type inherits from SpineObject (directly or indirectly) @@ -110,7 +108,7 @@ export function generateConstructors(type: ClassOrStruct, knownTypeNames: Set toSnakeCase(p.name)).join('_'); -} - -/** - * Generates a parameter suffix that includes type information for overloaded methods. - * This ensures unique function names when methods have the same parameter names but different types. - */ -function generateParameterSuffixWithTypes(params: CParameter[], knownTypeNames: Set): string { - if (params.length === 0) return ''; - - return params.map(p => { - const paramName = toSnakeCase(p.name); - - // For pointer types that differ (e.g., float* vs spine_array_float), include type info - if (p.cType.includes('spine_array_')) { - // Extract the array element type - const arrayType = p.cType.replace('spine_array_', 'array_'); - return `${paramName}_${arrayType}`; - } else if (p.cType.endsWith('*') && isPrimitive(p.cType.slice(0, -1).trim())) { - // For primitive pointers like float*, int* - const baseType = p.cType.slice(0, -1).trim(); - return `${paramName}_${baseType}_ptr`; - } - - // For other parameters, just use the name - return paramName; - }).join('_'); -} - /** * Converts a C parameter to its C++ argument form for function calls. * Handles type conversions, casts, and dereferencing as needed. @@ -695,13 +662,13 @@ function generateMethod(type: ClassOrStruct, method: Method, cTypeName: string, // Generate method body let methodCall: string; let body: string; - + if (method.isStatic) { methodCall = `${cppTypeName}::${method.name}(${buildCppArgs(method.parameters || [], cParams, knownTypeNames)})`; body = generateReturnStatement(method.returnType, methodCall, knownTypeNames); } else { // Use local variable to avoid cast->method line breaks - const instanceVar = method.fromSupertype ? + const instanceVar = method.fromSupertype ? `${method.fromSupertype} *_self = (${method.fromSupertype} *) (${cppTypeName} *) self;` : `${cppTypeName} *_self = (${cppTypeName} *) self;`; methodCall = `_self->${method.name}(${buildCppArgs(method.parameters || [], cParams.slice(1), knownTypeNames)})`; diff --git a/spine-c/codegen/src/type-extractor.ts b/spine-c/codegen/src/type-extractor.ts index a61a465e1..1a8145b02 100644 --- a/spine-c/codegen/src/type-extractor.ts +++ b/spine-c/codegen/src/type-extractor.ts @@ -1,8 +1,10 @@ -import * as fs from 'fs'; -import * as path from 'path'; -import { execSync } from 'child_process'; -import { Type, Member, Method, Field, Constructor, Destructor, Parameter, EnumValue, ClassOrStruct, Enum } from './types'; +import { execSync } from 'node:child_process'; +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import type { ClassOrStruct, Constructor, Destructor, Enum, EnumValue, Field, Member, Method, Parameter, Type } from './types'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const SPINE_CPP_PATH = path.join(__dirname, '../../../spine-cpp'); const SPINE_INCLUDE_DIR = path.join(SPINE_CPP_PATH, 'include'); const OUTPUT_FILE = path.join(__dirname, '../spine-cpp-types.json'); @@ -11,52 +13,52 @@ const OUTPUT_FILE = path.join(__dirname, '../spine-cpp-types.json'); * Extracts the value of an enum constant from source code */ function extractEnumValueFromSource( - enumConstNode: any, + enumConstNode: { name: string, loc?: { line: number } | undefined }, sourceLines: string[] ): string | null | undefined { if (!enumConstNode.loc) return undefined; - let startLine = enumConstNode.loc.line - 1; - + const startLine = enumConstNode.loc.line - 1; + // Build a multi-line buffer starting from the enum constant let buffer = ''; let foundName = false; - + // Look for the enum constant name across multiple lines for (let i = startLine; i < sourceLines.length && i < startLine + 5; i++) { const line = sourceLines[i]; if (!line) continue; - - buffer += line + '\n'; - + + buffer += `${line}\n`; + // Check if we found the enum constant name if (!foundName && line.match(new RegExp(`\\b${enumConstNode.name}\\b`))) { foundName = true; } - + // If we found a comma or closing brace, we have the complete enum entry if (foundName && (line.includes(',') || line.includes('}'))) { break; } } - + if (!foundName) return undefined; - + // Extract the part after the enum name const nameMatch = buffer.match(new RegExp(`\\b${enumConstNode.name}\\b\\s*([^,}]*)[,}]?`)); if (!nameMatch) return undefined; - + const afterName = nameMatch[1]; - + // Check if there's an assignment if (!afterName.includes('=')) return null; // No explicit value - + // Extract the value after '=' const equalMatch = afterName.match(/=\s*(.+)/); if (!equalMatch) return null; - - let valueText = equalMatch[1]; - + + const valueText = equalMatch[1]; + // Clean up return valueText .replace(/\/\/.*$/gm, '') // Remove single-line comments @@ -68,7 +70,7 @@ function extractEnumValueFromSource( /** * Extracts return type from a method node */ -function extractReturnType(methodNode: any): string { +function extractReturnType(methodNode: { type?: { qualType: string }}): string { const fullType = methodNode.type?.qualType || ''; const match = fullType.match(/^(.+?)\s*\(/); return match ? match[1].trim() : 'void'; @@ -119,7 +121,7 @@ function extractMember(inner: any, parent: any): Member & { access?: 'public' | if (inner.isImplicit) return null; switch (inner.kind) { - case 'FieldDecl': + case 'FieldDecl': { const field: Field & { access?: 'public' | 'protected' } = { kind: 'field', name: inner.name || '', @@ -128,8 +130,8 @@ function extractMember(inner: any, parent: any): Member & { access?: 'public' | access: 'public' // Will be set correctly later }; return field; - - case 'CXXMethodDecl': + } + case 'CXXMethodDecl': { if (!inner.name) return null; // Skip operators - not needed for C wrapper generation if (inner.name.startsWith('operator')) return null; @@ -146,17 +148,17 @@ function extractMember(inner: any, parent: any): Member & { access?: 'public' | access: 'public' // Will be set correctly later }; return method; - - case 'CXXConstructorDecl': - const constructor: Constructor & { access?: 'public' | 'protected' } = { + } + case 'CXXConstructorDecl': { + const constr: Constructor & { access?: 'public' | 'protected' } = { kind: 'constructor', name: inner.name || parent.name || '', parameters: extractParameters(inner), access: 'public' // Will be set correctly later }; - return constructor; - - case 'CXXDestructorDecl': + return constr; + } + case 'CXXDestructorDecl': { // Include destructors for completeness const destructor: Destructor & { access?: 'public' | 'protected' } = { kind: 'destructor', @@ -166,7 +168,7 @@ function extractMember(inner: any, parent: any): Member & { access?: 'public' | access: 'public' // Will be set correctly later }; return destructor; - + } default: return null; } @@ -391,7 +393,7 @@ function extractLocalTypes(headerFile: string, typeMap: Map | null function getMethodSignature(method: Method): string { let sig = method.name; if (method.parameters && method.parameters.length > 0) { - sig += '(' + method.parameters.map(p => p.type).join(',') + ')'; + sig += `(${method.parameters.map(p => p.type).join(',')})`; } else { sig += '()'; } diff --git a/spine-c/codegen/src/types.ts b/spine-c/codegen/src/types.ts index e53269e9b..ac358df62 100644 --- a/spine-c/codegen/src/types.ts +++ b/spine-c/codegen/src/types.ts @@ -237,6 +237,11 @@ export function toCTypeName(cppType: string, knownTypeNames: Set): strin return `${baseType} *`; } + // Speical case for PropertyId + if (baseType === 'PropertyId') { + return 'int64_t *'; // PropertyId is a typedef for int64_t + } + // Class pointers become opaque types return `spine_${toSnakeCase(baseType)}`; } @@ -281,7 +286,7 @@ export function toCTypeName(cppType: string, knownTypeNames: Set): strin * Checks if a C++ type can be represented in the C API. * Returns null if the type can be handled, or an error message if not. */ -export function checkTypeSupport(cppType: string, knownTypeNames: Set): string | null { +export function checkTypeSupport(cppType: string): string | null { // Remove extra spaces and normalize const normalizedType = cppType.replace(/\s+/g, ' ').trim(); @@ -292,9 +297,6 @@ export function checkTypeSupport(cppType: string, knownTypeNames: Set): if (elementType === 'String') { return "Array is not supported - use const char** instead"; } - // Check if array type exists - const arrayTypeName = `spine_array_${toSnakeCase(elementType)}`; - // We can't check if the array was generated, so we'll let toCTypeName handle that } // Check for multi-level pointers diff --git a/spine-c/codegen/tsconfig.json b/spine-c/codegen/tsconfig.json index 2a13d3a6d..0820898b8 100644 --- a/spine-c/codegen/tsconfig.json +++ b/spine-c/codegen/tsconfig.json @@ -1,19 +1,17 @@ { "compilerOptions": { - "target": "ES2020", - "module": "commonjs", - "lib": ["ES2020"], - "outDir": "./dist", - "rootDir": "./src", - "strict": true, + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "node", "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "types": ["node"] }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"] + "include": [ + "src/**/*.ts" + ] } \ No newline at end of file diff --git a/spine-c/codegen/tsfmt.json b/spine-c/codegen/tsfmt.json new file mode 100644 index 000000000..6b24a3b02 --- /dev/null +++ b/spine-c/codegen/tsfmt.json @@ -0,0 +1,24 @@ +{ + "baseIndentSize": 0, + "indentSize": 4, + "tabSize": 4, + "indentStyle": 2, + "newLineCharacter": "\n", + "convertTabsToSpaces": false, + "insertSpaceAfterCommaDelimiter": true, + "insertSpaceAfterSemicolonInForStatements": true, + "insertSpaceBeforeAndAfterBinaryOperators": true, + "insertSpaceAfterConstructor": true, + "insertSpaceAfterKeywordsInControlFlowStatements": true, + "insertSpaceAfterFunctionKeywordForAnonymousFunctions": true, + "insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false, + "insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false, + "insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true, + "insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": false, + "insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": false, + "insertSpaceAfterTypeAssertion": false, + "insertSpaceBeforeFunctionParenthesis": true, + "insertSpaceBeforeTypeAnnotation": false, + "placeOpenBraceOnNewLineForFunctions": false, + "placeOpenBraceOnNewLineForControlBlocks": false +} \ No newline at end of file diff --git a/spine-c/src/generated/alpha_timeline.h b/spine-c/src/generated/alpha_timeline.h index bf07301b3..4bd9bf484 100644 --- a/spine-c/src/generated/alpha_timeline.h +++ b/spine-c/src/generated/alpha_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/animation.h b/spine-c/src/generated/animation.h index 02c24ad7f..10564374d 100644 --- a/spine-c/src/generated/animation.h +++ b/spine-c/src/generated/animation.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/animation_state.h b/spine-c/src/generated/animation_state.h index 279e13188..ab2bcc2f5 100644 --- a/spine-c/src/generated/animation_state.h +++ b/spine-c/src/generated/animation_state.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/animation_state_data.h b/spine-c/src/generated/animation_state_data.h index 5f24857e2..58b64ced8 100644 --- a/spine-c/src/generated/animation_state_data.h +++ b/spine-c/src/generated/animation_state_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/arrays.cpp b/spine-c/src/generated/arrays.cpp index 4d8026413..0f4ff4871 100644 --- a/spine-c/src/generated/arrays.cpp +++ b/spine-c/src/generated/arrays.cpp @@ -307,9 +307,9 @@ int spine_array_property_id_index_of(spine_array_property_id array, int64_t inVa return _array->indexOf(*((const PropertyId *) inValue)); } -spine_property_id spine_array_property_id_buffer(spine_array_property_id array) { +int64_t *spine_array_property_id_buffer(spine_array_property_id array) { Array *_array = (Array *) array; - return (spine_property_id) _array->buffer(); + return (int64_t *) _array->buffer(); } spine_array_animation spine_array_animation_create(void) { diff --git a/spine-c/src/generated/arrays.h b/spine-c/src/generated/arrays.h index aba91fb9b..11de58aaa 100644 --- a/spine-c/src/generated/arrays.h +++ b/spine-c/src/generated/arrays.h @@ -176,7 +176,7 @@ SPINE_C_API bool spine_array_property_id_contains(spine_array_property_id array, SPINE_C_API int spine_array_property_id_index_of(spine_array_property_id array, int64_t inValue); -SPINE_C_API spine_property_id spine_array_property_id_buffer(spine_array_property_id array); +SPINE_C_API int64_t *spine_array_property_id_buffer(spine_array_property_id array); SPINE_C_API spine_array_animation spine_array_animation_create(void); diff --git a/spine-c/src/generated/atlas.h b/spine-c/src/generated/atlas.h index 34744423a..94a4b9526 100644 --- a/spine-c/src/generated/atlas.h +++ b/spine-c/src/generated/atlas.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/atlas_attachment_loader.h b/spine-c/src/generated/atlas_attachment_loader.h index 12cff3b45..a68c4f353 100644 --- a/spine-c/src/generated/atlas_attachment_loader.h +++ b/spine-c/src/generated/atlas_attachment_loader.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/atlas_page.h b/spine-c/src/generated/atlas_page.h index 8c578eca3..85be02b01 100644 --- a/spine-c/src/generated/atlas_page.h +++ b/spine-c/src/generated/atlas_page.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/atlas_region.h b/spine-c/src/generated/atlas_region.h index f6b3bac50..0edfc6269 100644 --- a/spine-c/src/generated/atlas_region.h +++ b/spine-c/src/generated/atlas_region.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/attachment.h b/spine-c/src/generated/attachment.h index c50673b87..03f54dcb4 100644 --- a/spine-c/src/generated/attachment.h +++ b/spine-c/src/generated/attachment.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/attachment_loader.h b/spine-c/src/generated/attachment_loader.h index 0c5aff482..bc1424850 100644 --- a/spine-c/src/generated/attachment_loader.h +++ b/spine-c/src/generated/attachment_loader.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/attachment_timeline.h b/spine-c/src/generated/attachment_timeline.h index a4c69fc69..a40bdda70 100644 --- a/spine-c/src/generated/attachment_timeline.h +++ b/spine-c/src/generated/attachment_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/bone.h b/spine-c/src/generated/bone.h index 347974661..344e20be5 100644 --- a/spine-c/src/generated/bone.h +++ b/spine-c/src/generated/bone.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/bone_data.h b/spine-c/src/generated/bone_data.h index d70fca4c2..0ccf828ae 100644 --- a/spine-c/src/generated/bone_data.h +++ b/spine-c/src/generated/bone_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/bone_local.h b/spine-c/src/generated/bone_local.h index 1fee5715d..340455da3 100644 --- a/spine-c/src/generated/bone_local.h +++ b/spine-c/src/generated/bone_local.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/bone_pose.h b/spine-c/src/generated/bone_pose.h index 5dfe88f78..9f9752ae8 100644 --- a/spine-c/src/generated/bone_pose.h +++ b/spine-c/src/generated/bone_pose.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/bone_timeline.h b/spine-c/src/generated/bone_timeline.h index df262825d..c0329d371 100644 --- a/spine-c/src/generated/bone_timeline.h +++ b/spine-c/src/generated/bone_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/bone_timeline1.h b/spine-c/src/generated/bone_timeline1.h index 16675d0bb..39be38df6 100644 --- a/spine-c/src/generated/bone_timeline1.h +++ b/spine-c/src/generated/bone_timeline1.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/bone_timeline2.h b/spine-c/src/generated/bone_timeline2.h index 7f5b10bc5..11d480d9b 100644 --- a/spine-c/src/generated/bone_timeline2.h +++ b/spine-c/src/generated/bone_timeline2.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/bounding_box_attachment.h b/spine-c/src/generated/bounding_box_attachment.h index 7d75fd006..522956610 100644 --- a/spine-c/src/generated/bounding_box_attachment.h +++ b/spine-c/src/generated/bounding_box_attachment.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/clipping_attachment.h b/spine-c/src/generated/clipping_attachment.h index f1f9932e3..0f1cb4915 100644 --- a/spine-c/src/generated/clipping_attachment.h +++ b/spine-c/src/generated/clipping_attachment.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/color.h b/spine-c/src/generated/color.h index 275d6332e..975052d9e 100644 --- a/spine-c/src/generated/color.h +++ b/spine-c/src/generated/color.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/constraint.h b/spine-c/src/generated/constraint.h index e6cb78272..f12ea556e 100644 --- a/spine-c/src/generated/constraint.h +++ b/spine-c/src/generated/constraint.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/constraint_data.h b/spine-c/src/generated/constraint_data.h index 1fd6cae0c..d27311788 100644 --- a/spine-c/src/generated/constraint_data.h +++ b/spine-c/src/generated/constraint_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/constraint_timeline.h b/spine-c/src/generated/constraint_timeline.h index 765ea45f6..2985b6add 100644 --- a/spine-c/src/generated/constraint_timeline.h +++ b/spine-c/src/generated/constraint_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/constraint_timeline1.h b/spine-c/src/generated/constraint_timeline1.h index 68639ae9a..4653bd777 100644 --- a/spine-c/src/generated/constraint_timeline1.h +++ b/spine-c/src/generated/constraint_timeline1.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/curve_timeline.h b/spine-c/src/generated/curve_timeline.h index 1200009c3..a4e293cce 100644 --- a/spine-c/src/generated/curve_timeline.h +++ b/spine-c/src/generated/curve_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/curve_timeline1.h b/spine-c/src/generated/curve_timeline1.h index fde58dc75..fca18c107 100644 --- a/spine-c/src/generated/curve_timeline1.h +++ b/spine-c/src/generated/curve_timeline1.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/curve_timeline2.h b/spine-c/src/generated/curve_timeline2.h index ac380f9d8..bd946cf36 100644 --- a/spine-c/src/generated/curve_timeline2.h +++ b/spine-c/src/generated/curve_timeline2.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/deform_timeline.h b/spine-c/src/generated/deform_timeline.h index 1ec7daf88..0c4618b92 100644 --- a/spine-c/src/generated/deform_timeline.h +++ b/spine-c/src/generated/deform_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/draw_order_timeline.h b/spine-c/src/generated/draw_order_timeline.h index 330048462..98b9ba73a 100644 --- a/spine-c/src/generated/draw_order_timeline.h +++ b/spine-c/src/generated/draw_order_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/event.h b/spine-c/src/generated/event.h index 2f9496032..88fc8813e 100644 --- a/spine-c/src/generated/event.h +++ b/spine-c/src/generated/event.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/event_data.h b/spine-c/src/generated/event_data.h index d8a7701f9..9d92146f1 100644 --- a/spine-c/src/generated/event_data.h +++ b/spine-c/src/generated/event_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/event_queue_entry.h b/spine-c/src/generated/event_queue_entry.h index 8c37a8da5..4d59ef8d8 100644 --- a/spine-c/src/generated/event_queue_entry.h +++ b/spine-c/src/generated/event_queue_entry.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/event_timeline.h b/spine-c/src/generated/event_timeline.h index f698164a0..bacea8e6f 100644 --- a/spine-c/src/generated/event_timeline.h +++ b/spine-c/src/generated/event_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/from_property.h b/spine-c/src/generated/from_property.h index 301b2ab0a..f6630658d 100644 --- a/spine-c/src/generated/from_property.h +++ b/spine-c/src/generated/from_property.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/from_rotate.h b/spine-c/src/generated/from_rotate.h index 19f05fb1b..fe7d6a31c 100644 --- a/spine-c/src/generated/from_rotate.h +++ b/spine-c/src/generated/from_rotate.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/from_scale_x.h b/spine-c/src/generated/from_scale_x.h index 9f9a93e94..d7ed1c9d7 100644 --- a/spine-c/src/generated/from_scale_x.h +++ b/spine-c/src/generated/from_scale_x.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/from_scale_y.h b/spine-c/src/generated/from_scale_y.h index cb14c88ee..b8ccc7591 100644 --- a/spine-c/src/generated/from_scale_y.h +++ b/spine-c/src/generated/from_scale_y.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/from_shear_y.h b/spine-c/src/generated/from_shear_y.h index 88ccd27ca..9da30fd5a 100644 --- a/spine-c/src/generated/from_shear_y.h +++ b/spine-c/src/generated/from_shear_y.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/from_x.h b/spine-c/src/generated/from_x.h index 99769d380..9ea101170 100644 --- a/spine-c/src/generated/from_x.h +++ b/spine-c/src/generated/from_x.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/from_y.h b/spine-c/src/generated/from_y.h index d97c85c71..dcdbec144 100644 --- a/spine-c/src/generated/from_y.h +++ b/spine-c/src/generated/from_y.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/ik_constraint.h b/spine-c/src/generated/ik_constraint.h index 64f11643c..9752fe33b 100644 --- a/spine-c/src/generated/ik_constraint.h +++ b/spine-c/src/generated/ik_constraint.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/ik_constraint_data.h b/spine-c/src/generated/ik_constraint_data.h index 6356a11cd..c5ac259ff 100644 --- a/spine-c/src/generated/ik_constraint_data.h +++ b/spine-c/src/generated/ik_constraint_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/ik_constraint_pose.h b/spine-c/src/generated/ik_constraint_pose.h index 6a8a3cbac..eac41ac08 100644 --- a/spine-c/src/generated/ik_constraint_pose.h +++ b/spine-c/src/generated/ik_constraint_pose.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/ik_constraint_timeline.h b/spine-c/src/generated/ik_constraint_timeline.h index 0b21da3f3..0e84120fa 100644 --- a/spine-c/src/generated/ik_constraint_timeline.h +++ b/spine-c/src/generated/ik_constraint_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/inherit_timeline.h b/spine-c/src/generated/inherit_timeline.h index f3f0443b4..d1c1a7b1f 100644 --- a/spine-c/src/generated/inherit_timeline.h +++ b/spine-c/src/generated/inherit_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/linked_mesh.h b/spine-c/src/generated/linked_mesh.h index a774ca7f8..d4acb933c 100644 --- a/spine-c/src/generated/linked_mesh.h +++ b/spine-c/src/generated/linked_mesh.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/mesh_attachment.h b/spine-c/src/generated/mesh_attachment.h index 2667aa6ae..e742dfc9d 100644 --- a/spine-c/src/generated/mesh_attachment.h +++ b/spine-c/src/generated/mesh_attachment.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/path_attachment.h b/spine-c/src/generated/path_attachment.h index d667fd950..a03fb3a22 100644 --- a/spine-c/src/generated/path_attachment.h +++ b/spine-c/src/generated/path_attachment.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/path_constraint.h b/spine-c/src/generated/path_constraint.h index 4fc2fe28b..911ab5f64 100644 --- a/spine-c/src/generated/path_constraint.h +++ b/spine-c/src/generated/path_constraint.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/path_constraint_data.h b/spine-c/src/generated/path_constraint_data.h index 31a15d35b..3cad0377f 100644 --- a/spine-c/src/generated/path_constraint_data.h +++ b/spine-c/src/generated/path_constraint_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/path_constraint_mix_timeline.h b/spine-c/src/generated/path_constraint_mix_timeline.h index e3dcb90eb..a976a2b49 100644 --- a/spine-c/src/generated/path_constraint_mix_timeline.h +++ b/spine-c/src/generated/path_constraint_mix_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/path_constraint_pose.h b/spine-c/src/generated/path_constraint_pose.h index 671688dc9..8cf726144 100644 --- a/spine-c/src/generated/path_constraint_pose.h +++ b/spine-c/src/generated/path_constraint_pose.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/path_constraint_position_timeline.h b/spine-c/src/generated/path_constraint_position_timeline.h index 058d0c2a1..c0afa7c35 100644 --- a/spine-c/src/generated/path_constraint_position_timeline.h +++ b/spine-c/src/generated/path_constraint_position_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/path_constraint_spacing_timeline.h b/spine-c/src/generated/path_constraint_spacing_timeline.h index 3f0a51a8a..a945df54a 100644 --- a/spine-c/src/generated/path_constraint_spacing_timeline.h +++ b/spine-c/src/generated/path_constraint_spacing_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint.h b/spine-c/src/generated/physics_constraint.h index d212ca63d..8655f0a73 100644 --- a/spine-c/src/generated/physics_constraint.h +++ b/spine-c/src/generated/physics_constraint.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_damping_timeline.h b/spine-c/src/generated/physics_constraint_damping_timeline.h index c1fb20439..1115f3bde 100644 --- a/spine-c/src/generated/physics_constraint_damping_timeline.h +++ b/spine-c/src/generated/physics_constraint_damping_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_data.h b/spine-c/src/generated/physics_constraint_data.h index 172d2781a..318580bf4 100644 --- a/spine-c/src/generated/physics_constraint_data.h +++ b/spine-c/src/generated/physics_constraint_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_gravity_timeline.h b/spine-c/src/generated/physics_constraint_gravity_timeline.h index adb2ea952..870a60866 100644 --- a/spine-c/src/generated/physics_constraint_gravity_timeline.h +++ b/spine-c/src/generated/physics_constraint_gravity_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_inertia_timeline.h b/spine-c/src/generated/physics_constraint_inertia_timeline.h index 6cfee1b8f..a6fb5f51f 100644 --- a/spine-c/src/generated/physics_constraint_inertia_timeline.h +++ b/spine-c/src/generated/physics_constraint_inertia_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_mass_timeline.h b/spine-c/src/generated/physics_constraint_mass_timeline.h index 310a57ea3..12503470c 100644 --- a/spine-c/src/generated/physics_constraint_mass_timeline.h +++ b/spine-c/src/generated/physics_constraint_mass_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_mix_timeline.h b/spine-c/src/generated/physics_constraint_mix_timeline.h index 0c8a5da83..548d30340 100644 --- a/spine-c/src/generated/physics_constraint_mix_timeline.h +++ b/spine-c/src/generated/physics_constraint_mix_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_pose.h b/spine-c/src/generated/physics_constraint_pose.h index e8800aeaf..287efd512 100644 --- a/spine-c/src/generated/physics_constraint_pose.h +++ b/spine-c/src/generated/physics_constraint_pose.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_reset_timeline.h b/spine-c/src/generated/physics_constraint_reset_timeline.h index 6c1a0732c..2e4cbe73f 100644 --- a/spine-c/src/generated/physics_constraint_reset_timeline.h +++ b/spine-c/src/generated/physics_constraint_reset_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_strength_timeline.h b/spine-c/src/generated/physics_constraint_strength_timeline.h index 78e1e4fa6..7b0259f65 100644 --- a/spine-c/src/generated/physics_constraint_strength_timeline.h +++ b/spine-c/src/generated/physics_constraint_strength_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_timeline.h b/spine-c/src/generated/physics_constraint_timeline.h index c4ba14aa1..ac34f5c75 100644 --- a/spine-c/src/generated/physics_constraint_timeline.h +++ b/spine-c/src/generated/physics_constraint_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/physics_constraint_wind_timeline.h b/spine-c/src/generated/physics_constraint_wind_timeline.h index b6eb05b48..de4fac238 100644 --- a/spine-c/src/generated/physics_constraint_wind_timeline.h +++ b/spine-c/src/generated/physics_constraint_wind_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/point_attachment.h b/spine-c/src/generated/point_attachment.h index cc7e8e15a..7eb6bdf85 100644 --- a/spine-c/src/generated/point_attachment.h +++ b/spine-c/src/generated/point_attachment.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/polygon.h b/spine-c/src/generated/polygon.h index 4dd7bfe0b..afea08430 100644 --- a/spine-c/src/generated/polygon.h +++ b/spine-c/src/generated/polygon.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/posed.h b/spine-c/src/generated/posed.h index c9d16034e..d8a5e741a 100644 --- a/spine-c/src/generated/posed.h +++ b/spine-c/src/generated/posed.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/posed_active.h b/spine-c/src/generated/posed_active.h index 8bf6a487b..73b985c0b 100644 --- a/spine-c/src/generated/posed_active.h +++ b/spine-c/src/generated/posed_active.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/posed_data.h b/spine-c/src/generated/posed_data.h index 43dd23afb..bcfb38314 100644 --- a/spine-c/src/generated/posed_data.h +++ b/spine-c/src/generated/posed_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/region_attachment.h b/spine-c/src/generated/region_attachment.h index 521594b97..30b6c4606 100644 --- a/spine-c/src/generated/region_attachment.h +++ b/spine-c/src/generated/region_attachment.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/render_command.h b/spine-c/src/generated/render_command.h index 82c9e0020..1bcf7bdb3 100644 --- a/spine-c/src/generated/render_command.h +++ b/spine-c/src/generated/render_command.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/rgb2_timeline.h b/spine-c/src/generated/rgb2_timeline.h index 6250e8157..78af466ad 100644 --- a/spine-c/src/generated/rgb2_timeline.h +++ b/spine-c/src/generated/rgb2_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/rgb_timeline.h b/spine-c/src/generated/rgb_timeline.h index a3dfe7575..8c7661b80 100644 --- a/spine-c/src/generated/rgb_timeline.h +++ b/spine-c/src/generated/rgb_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/rgba2_timeline.h b/spine-c/src/generated/rgba2_timeline.h index f69de7273..e5d734eb1 100644 --- a/spine-c/src/generated/rgba2_timeline.h +++ b/spine-c/src/generated/rgba2_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/rgba_timeline.h b/spine-c/src/generated/rgba_timeline.h index 50f458612..f6c73292f 100644 --- a/spine-c/src/generated/rgba_timeline.h +++ b/spine-c/src/generated/rgba_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/rotate_timeline.h b/spine-c/src/generated/rotate_timeline.h index b10a7ca54..c65882c9b 100644 --- a/spine-c/src/generated/rotate_timeline.h +++ b/spine-c/src/generated/rotate_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/rtti.h b/spine-c/src/generated/rtti.h index 31097201c..663ec00ae 100644 --- a/spine-c/src/generated/rtti.h +++ b/spine-c/src/generated/rtti.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/scale_timeline.h b/spine-c/src/generated/scale_timeline.h index d952f46d3..643cc2cb7 100644 --- a/spine-c/src/generated/scale_timeline.h +++ b/spine-c/src/generated/scale_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/scale_x_timeline.h b/spine-c/src/generated/scale_x_timeline.h index 5500bb7ae..b57b59bab 100644 --- a/spine-c/src/generated/scale_x_timeline.h +++ b/spine-c/src/generated/scale_x_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/scale_y_timeline.h b/spine-c/src/generated/scale_y_timeline.h index 7c1c328fe..9b6860343 100644 --- a/spine-c/src/generated/scale_y_timeline.h +++ b/spine-c/src/generated/scale_y_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/sequence.h b/spine-c/src/generated/sequence.h index 615125fef..9de9c208d 100644 --- a/spine-c/src/generated/sequence.h +++ b/spine-c/src/generated/sequence.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/sequence_timeline.h b/spine-c/src/generated/sequence_timeline.h index 93705ca0d..7536ba4f8 100644 --- a/spine-c/src/generated/sequence_timeline.h +++ b/spine-c/src/generated/sequence_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/shear_timeline.h b/spine-c/src/generated/shear_timeline.h index ad493ac25..5525a2192 100644 --- a/spine-c/src/generated/shear_timeline.h +++ b/spine-c/src/generated/shear_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/shear_x_timeline.h b/spine-c/src/generated/shear_x_timeline.h index 9fb958bcf..37d73be70 100644 --- a/spine-c/src/generated/shear_x_timeline.h +++ b/spine-c/src/generated/shear_x_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/shear_y_timeline.h b/spine-c/src/generated/shear_y_timeline.h index b1cc5bad2..5501c074c 100644 --- a/spine-c/src/generated/shear_y_timeline.h +++ b/spine-c/src/generated/shear_y_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/skeleton.h b/spine-c/src/generated/skeleton.h index 5792125fe..a1a0d069e 100644 --- a/spine-c/src/generated/skeleton.h +++ b/spine-c/src/generated/skeleton.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/skeleton_binary.h b/spine-c/src/generated/skeleton_binary.h index f5ecd8349..da3d6d5e1 100644 --- a/spine-c/src/generated/skeleton_binary.h +++ b/spine-c/src/generated/skeleton_binary.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/skeleton_bounds.h b/spine-c/src/generated/skeleton_bounds.h index f3780f8fb..0b3b66764 100644 --- a/spine-c/src/generated/skeleton_bounds.h +++ b/spine-c/src/generated/skeleton_bounds.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/skeleton_clipping.h b/spine-c/src/generated/skeleton_clipping.h index 38ee6ee0c..3f45b416c 100644 --- a/spine-c/src/generated/skeleton_clipping.h +++ b/spine-c/src/generated/skeleton_clipping.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/skeleton_data.h b/spine-c/src/generated/skeleton_data.h index d597a2d61..c0f53b365 100644 --- a/spine-c/src/generated/skeleton_data.h +++ b/spine-c/src/generated/skeleton_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/skeleton_json.h b/spine-c/src/generated/skeleton_json.h index 78334c259..af4de08e6 100644 --- a/spine-c/src/generated/skeleton_json.h +++ b/spine-c/src/generated/skeleton_json.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/skeleton_renderer.h b/spine-c/src/generated/skeleton_renderer.h index 56c3cf528..50cd8981d 100644 --- a/spine-c/src/generated/skeleton_renderer.h +++ b/spine-c/src/generated/skeleton_renderer.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/skin.h b/spine-c/src/generated/skin.h index bfe3a7227..36c0c9684 100644 --- a/spine-c/src/generated/skin.h +++ b/spine-c/src/generated/skin.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slider.h b/spine-c/src/generated/slider.h index 54ed24c87..4f4806591 100644 --- a/spine-c/src/generated/slider.h +++ b/spine-c/src/generated/slider.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slider_data.h b/spine-c/src/generated/slider_data.h index 78643b015..13a5564f7 100644 --- a/spine-c/src/generated/slider_data.h +++ b/spine-c/src/generated/slider_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slider_mix_timeline.h b/spine-c/src/generated/slider_mix_timeline.h index 2f3c9b1ae..6a6ce6691 100644 --- a/spine-c/src/generated/slider_mix_timeline.h +++ b/spine-c/src/generated/slider_mix_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slider_pose.h b/spine-c/src/generated/slider_pose.h index 57bdb7943..993e39967 100644 --- a/spine-c/src/generated/slider_pose.h +++ b/spine-c/src/generated/slider_pose.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slider_timeline.h b/spine-c/src/generated/slider_timeline.h index 4fad6fce4..b5e08cb7e 100644 --- a/spine-c/src/generated/slider_timeline.h +++ b/spine-c/src/generated/slider_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slot.h b/spine-c/src/generated/slot.h index 52c7ef7f9..d36be6e6f 100644 --- a/spine-c/src/generated/slot.h +++ b/spine-c/src/generated/slot.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slot_curve_timeline.h b/spine-c/src/generated/slot_curve_timeline.h index 43a93d1f8..269370fda 100644 --- a/spine-c/src/generated/slot_curve_timeline.h +++ b/spine-c/src/generated/slot_curve_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slot_data.h b/spine-c/src/generated/slot_data.h index 6123a838e..f67589501 100644 --- a/spine-c/src/generated/slot_data.h +++ b/spine-c/src/generated/slot_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slot_pose.h b/spine-c/src/generated/slot_pose.h index 90577ebe9..bc5364c0f 100644 --- a/spine-c/src/generated/slot_pose.h +++ b/spine-c/src/generated/slot_pose.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/slot_timeline.h b/spine-c/src/generated/slot_timeline.h index 70befdfae..739f1fcf8 100644 --- a/spine-c/src/generated/slot_timeline.h +++ b/spine-c/src/generated/slot_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/texture_region.h b/spine-c/src/generated/texture_region.h index be446b92e..11aed9cb3 100644 --- a/spine-c/src/generated/texture_region.h +++ b/spine-c/src/generated/texture_region.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/timeline.h b/spine-c/src/generated/timeline.h index 7db7c9de7..cfd9d7f81 100644 --- a/spine-c/src/generated/timeline.h +++ b/spine-c/src/generated/timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/to_property.h b/spine-c/src/generated/to_property.h index daa16ab01..2ba456438 100644 --- a/spine-c/src/generated/to_property.h +++ b/spine-c/src/generated/to_property.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/to_rotate.h b/spine-c/src/generated/to_rotate.h index 315ef7937..bc40f0ebe 100644 --- a/spine-c/src/generated/to_rotate.h +++ b/spine-c/src/generated/to_rotate.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/to_scale_x.h b/spine-c/src/generated/to_scale_x.h index 8ef9ccd5a..cb8f73454 100644 --- a/spine-c/src/generated/to_scale_x.h +++ b/spine-c/src/generated/to_scale_x.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/to_scale_y.h b/spine-c/src/generated/to_scale_y.h index 9238eb8b1..3a81c251e 100644 --- a/spine-c/src/generated/to_scale_y.h +++ b/spine-c/src/generated/to_scale_y.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/to_shear_y.h b/spine-c/src/generated/to_shear_y.h index 654e8dcbb..904bb1f86 100644 --- a/spine-c/src/generated/to_shear_y.h +++ b/spine-c/src/generated/to_shear_y.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/to_x.h b/spine-c/src/generated/to_x.h index 8b894f11d..72e19ef6f 100644 --- a/spine-c/src/generated/to_x.h +++ b/spine-c/src/generated/to_x.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/to_y.h b/spine-c/src/generated/to_y.h index 8f767ce70..d83060415 100644 --- a/spine-c/src/generated/to_y.h +++ b/spine-c/src/generated/to_y.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/track_entry.h b/spine-c/src/generated/track_entry.h index f062eca75..935dc090e 100644 --- a/spine-c/src/generated/track_entry.h +++ b/spine-c/src/generated/track_entry.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/transform_constraint.h b/spine-c/src/generated/transform_constraint.h index 1edb56422..ed6a98ba8 100644 --- a/spine-c/src/generated/transform_constraint.h +++ b/spine-c/src/generated/transform_constraint.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/transform_constraint_data.h b/spine-c/src/generated/transform_constraint_data.h index 3bcea151c..7d5ddc38e 100644 --- a/spine-c/src/generated/transform_constraint_data.h +++ b/spine-c/src/generated/transform_constraint_data.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/transform_constraint_pose.h b/spine-c/src/generated/transform_constraint_pose.h index cd78db3b1..b18d256a0 100644 --- a/spine-c/src/generated/transform_constraint_pose.h +++ b/spine-c/src/generated/transform_constraint_pose.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/transform_constraint_timeline.h b/spine-c/src/generated/transform_constraint_timeline.h index b1a685513..fd61ba435 100644 --- a/spine-c/src/generated/transform_constraint_timeline.h +++ b/spine-c/src/generated/transform_constraint_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/translate_timeline.h b/spine-c/src/generated/translate_timeline.h index 1d302c992..e929476db 100644 --- a/spine-c/src/generated/translate_timeline.h +++ b/spine-c/src/generated/translate_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/translate_x_timeline.h b/spine-c/src/generated/translate_x_timeline.h index 9ad888ff4..0b0307a6b 100644 --- a/spine-c/src/generated/translate_x_timeline.h +++ b/spine-c/src/generated/translate_x_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/translate_y_timeline.h b/spine-c/src/generated/translate_y_timeline.h index 3f9363eb7..1711952ac 100644 --- a/spine-c/src/generated/translate_y_timeline.h +++ b/spine-c/src/generated/translate_y_timeline.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/types.h b/spine-c/src/generated/types.h index 2cc072e61..458c307e6 100644 --- a/spine-c/src/generated/types.h +++ b/spine-c/src/generated/types.h @@ -180,9 +180,6 @@ SPINE_OPAQUE_TYPE(spine_vertex_attachment) #include "texture_filter.h" #include "texture_wrap.h" -// Array specializations -#include "arrays.h" - #ifdef __cplusplus } #endif diff --git a/spine-c/src/generated/update.h b/spine-c/src/generated/update.h index c54c961bb..0bf8248ee 100644 --- a/spine-c/src/generated/update.h +++ b/spine-c/src/generated/update.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-c/src/generated/vertex_attachment.h b/spine-c/src/generated/vertex_attachment.h index 75f30b3b6..f206e9515 100644 --- a/spine-c/src/generated/vertex_attachment.h +++ b/spine-c/src/generated/vertex_attachment.h @@ -3,6 +3,7 @@ #include "../base.h" #include "types.h" +#include "arrays.h" #ifdef __cplusplus extern "C" { diff --git a/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift b/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift index bfa0333a3..cccf817a5 100644 --- a/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,5 +5,6 @@ import FlutterMacOS import Foundation + func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { } diff --git a/spine-flutter/example/pubspec.lock b/spine-flutter/example/pubspec.lock index 2a84dd491..d38ecc27e 100644 --- a/spine-flutter/example/pubspec.lock +++ b/spine-flutter/example/pubspec.lock @@ -169,7 +169,7 @@ packages: path: ".." relative: true source: path - version: "4.2.35" + version: "4.2.36" string_scanner: dependency: transitive description: diff --git a/tests/package.json b/tests/package.json index 28cfc853d..8fc78ed38 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,19 +1,10 @@ { "name": "spine-tests", "type": "module", - "private": true, - "scripts": { - "compare": "tsx compare-with-reference-impl.ts", - "format": "npx -y typescript-formatter -r ./**/*.ts", - "lint": "npx biome lint ." - }, "devDependencies": { "@types/node": "^20.0.0", "tsx": "^4.0.0", "typescript-formatter": "^7.2.2", "@biomejs/biome": "^2.1.1" - }, - "dependencies": { - "@mariozechner/lsp-cli": "^0.1.3" } -} +} \ No newline at end of file