Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add API for outputting JSON to stream #187

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

soburi
Copy link

@soburi soburi commented Aug 10, 2020

Add cbor_value_to_json_stream() function to output to a stream for JSON.
It has similar behavior with cbor_value_to_pretty_stream(),
output JSON text instead of pretty formatted text.

cbor_value_to_pretty_stream() that is used to mapkey-to-text convertion
can take over output stream continuously from JSON output process.
Converted text can output directly to a stream,
no more need to buffering with memstream.

The modification makes the source more portable
and reduces the frequents of dynamic memory allocations.

Add cbor_value_to_json_stream().

This is stream output API that similar to cbor_value_to_pretty_stream().
It makes easy handling to various output targets.

cbor_value_to_json_stream() is a generalized implementation of cbor_value_to_json_advance().
Replacing all fprintf() and fputs() used by internal functions with
CborStreamFunction to handle to various output targets.

cbor_value_to_json_advance() remake as a front-end for cbor_value_to_json_stream()
that specialized for FILE stream.

Signed-off-by: TOKITA, Hiroshi <[email protected]>
cbor_value_to_json_stream() calls cbor_value_to_pretty_stream() with the stream that given for it,
for output directly the text that representation of value.
It is no need to cache with memstream.

In map_to_json(), the map key may be written twice.
In such case, keeping iterator copy and use for re-read.

Signed-off-by: TOKITA, Hiroshi <[email protected]>
Using cbor_value_to_json_stream() and CborStreamFuction instead of open_memstream().

Signed-off-by: TOKITA, Hiroshi <[email protected]>
As a result of disappearing dependencies to open_memstream(),
MSVC got able to use "CBOR to JSON" APIs.

Add cbortojson.c to compile target and enable `tojson` tests.

Signed-off-by: TOKITA, Hiroshi <[email protected]>
Remove open_memstream.c and related configs that became unneeded with JSON stream API.

Signed-off-by: TOKITA, Hiroshi <[email protected]>
@soburi soburi changed the title Introduce API for outputting JSON to stream Add API for outputting JSON to stream Aug 10, 2020
@thiagomacieira
Copy link
Member

3 days and Travis hasn't run yet...

@soburi
Copy link
Author

soburi commented Aug 25, 2020

Travis is back!
I hope you can review at it when you have time.

@thiagomacieira
Copy link
Member

Will do. Just really busy at work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants