Siv3D / OpenSiv3D

C++20 framework for creative coding 🎮🎨🎹 / Cross-platform support (Windows, macOS, Linux, and the Web)
https://siv3d.github.io/
MIT License
1k stars 138 forks source link

fix JSON #1165

Closed Reputeless closed 8 months ago

Reputeless commented 9 months ago
Raclamusi commented 8 months ago

1. 寿命について

以前触れたように、寿命を延長出来るようにして、次のコードが通るようにするのがいいと思います。 https://discord.com/channels/443310697397354506/999983621408567326/1162390851624898581

寿命の延長を実装するなら、detail::JSONDetail::RefTypestd::shared_ptr<detail::JSONDetail::ValueType> にするのがよさそうですね。

https://gist.github.com/Raclamusi/08fbf4e70d0f1ac418793b7cdce30f7e/revisions#diff-018619d34dd37983bbc72f3e0cdfbd1a131c0670de6bec1d6bf04bddd206dece

Reputeless commented 8 months ago

ありがとうございます。JSON クラス、v0.6.15 以降で根本的に作り直したいので、寿命の延長関連は新規のほうで検討しましょう。そちらは別の Issue を立てます。

Reputeless commented 8 months ago

メンバ関数 clear について → JSON.clear() は少し特殊で、クリア後も JSONValueType を保持する仕様になっています。例えば配列を .clear() したら空の配列になるなど。

そのため、Invalid の .clear() 結果が Invalid であるのも不自然ではないと考えています。

1175 ではそもそも Invalid を廃止することも検討しているので、ここら辺の仕様変更はスキップしたいと思います。

Reputeless commented 8 months ago

レビューありがとうございました。 @Raclamusi @tomolatoon 気になった点は修正したので、これでマージする予定です。#1175 についても参加いただけると幸いです。