Comments (7)
Thanks for bringing up these issues with raw and std::string_view buffers. I'm about to merge a major change to support errors when writing and then I'll prioritize these issues.
from glaze.
Support has been merged, let me know if you run into any issues.
from glaze.
This was just overlooked for partial writing, so I'll add in a function that supports raw buffers.
I actually need to make some write API changes to better support handling write errors. I'll probably include this support in that merge.
I'm curious, do you know your sizes? Could you be using std::string_view
?
from glaze.
As far as knowing sizes:
JSON tags: yes
JSON values: no
so it'll look like this for one partial
{"name": "John Smith"}
and this for another and so on.
{"address": "123 North Str"}
so the size of the JSON needs to be variable, but we're just allocating enough memory up front to hold anything we would ever serialize and using a buffer + an offset to determine the size of the buffer content we care about.
I get a different issue when using std::string_view interestingly:
/include/glaze/json/write.hpp:1326:38: error: could not convert ‘quoted_key’ from ‘const std::basic_string_view<char>’ to ‘long unsigned int’
1326 | dump<quoted_key>(b, ix);
| ~~~~~~~~~~~~~~~~^~~~~~~
| |
| const std::basic_string_view<char>
where my call to write_json is as follows
char buf*;
std::string_view svOut{buf};
glz::write_json<partial_1>(msg, svOut);
from glaze.
Support is being added in #1074
from glaze.
std::string_view
is read only, so I've decided to just support char*
and char[]
raw buffers for writing. I could add write support for std::span<char>
, but this might add some confusion and I don't feel is necessary.
from glaze.
Awesome, I will definitely check it out soon. Thanks!
from glaze.
Related Issues (20)
- There seems to be an error. HOT 10
- Possible bug following examples in the README? HOT 2
- _GLIBCXX_DEBUG for libstdc++ cannot currently be used with glaze HOT 6
- Compilation error on 32-bit system HOT 6
- "expected_quote" Error in Variant Parsing with Unrelated JSON Key Length in glaze v3.3.1 HOT 2
- Disable exceptions if a specific macro is defined HOT 1
- AppleClang std::hash<std::filesystem::path> issue HOT 4
- Buffer length checking when writing to a raw buffer
- Runtime JSON pointer syntax for writing
- hang in glz::beve_to_json HOT 2
- stack overflow in beve_to_json_value
- const-qualified partial writing has issues
- Dynamic formatter HOT 1
- Can JSON schema defaults pull from the defaults on the struct if not otherwise specified?
- Min max macro redefinition prevents compilation of program HOT 1
- Request an option of disabling column names of csv output and writing in rowwise structure HOT 1
- Why is std::vector<std::vector<double>> 3X slower than std::vector<std::array<double>>?
- XML support? HOT 4
- beve reads empty value, that should be skipped HOT 3
- Multi-format test suite
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from glaze.