You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, the get_xyz() methods return a copy of optional values. Something like: boost::optional<std::vector<Coordinate>> get_coordinates() const { return coordinates; }
Which makes this code not behave as expected: for (auto coordinate: test.get_coordinates()) std::cout << "latitude" << coordinate.get_latitude() << std::endl;
Required getters work as expected:
'const std::vector & get_coordinates_required() const { return coordinates_required; }'
Issue Type
This is an issue with quicktype C++ code generation.
Context (Environment, Version, Language)
Input Format: Json Scheam
Output Language: C++
CLI, npm, or app.quicktype.io:
Version: Current
Description
Returning a copy of the boost::optional means that user's can't iterate through the vector as they might initially expect, leading to bugs. It's also presumably less efficient that returning a const reference to the underlying object.
Currently, the get_xyz() methods return a copy of optional values. Something like:
boost::optional<std::vector<Coordinate>> get_coordinates() const { return coordinates; }
Which makes this code not behave as expected:
for (auto coordinate: test.get_coordinates()) std::cout << "latitude" << coordinate.get_latitude() << std::endl;
Required getters work as expected:
'const std::vector & get_coordinates_required() const { return coordinates_required; }'
Issue Type
This is an issue with quicktype C++ code generation.
Context (Environment, Version, Language)
Input Format: Json Scheam
Output Language: C++
CLI, npm, or app.quicktype.io:
Version: Current
Description
Returning a copy of the boost::optional means that user's can't iterate through the vector as they might initially expect, leading to bugs. It's also presumably less efficient that returning a const reference to the underlying object.
Input Data
{ { "$schema": "http://json-schema.org/draft-06/schema#", "$ref": "#/definitions/foo", "definitions": { "coordinate": { "type": "object", "required": [ "latitude", "longitude" ], "additionalProperties": false, "properties": { "latitude": { "type": "number" }, "longitude": { "type": "number" } } }, "coordinates": { "type": "array", "items": { "$ref": "#/definitions/coordinate" } }, "foo": { "type": "object", "required": [ "coordinates-required" ], "additionalProperties": false, "properties": { "coordinates": { "$ref": "#/definitions/coordinates" }, "coordinates-required": { "$ref": "#/definitions/coordinates" }, "bar" : { "type": "number" } } } } }
Expected Behaviour / Output
const boost::optional<std::vector<Coordinate>>& get_coordinates() const { return coordinates; }
Current Behaviour / Output
boost::optional<std::vector<Coordinate>> get_coordinates() const { return coordinates; }
Steps to Reproduce
Using above schema;
quicktype --lang c++ -s schema --out ./test.h ./test.schema.json
(or insert into app.quicktype.io)
Possible Solution
The text was updated successfully, but these errors were encountered: