[skjson] Implementation/API tweaks
* move most common accessor methods to the header, for inlining
* drop the lazy type checking semantics in favor of explicit guarded/unguarded
conversions
* revisit the public class hierarchy to better constrain type-bound APIs
* expose public type factories and add tests
* drop the empty-vector optimization -- allocating an external size_t in these
uncommon cases is better than paying for a conditional on every access.
Change-Id: I24a7c75db3aa8b12c740c77ac7df4af4e3a1dff8
Reviewed-on: https://skia-review.googlesource.com/134610
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
3 files changed