Comments (5)
I can also reproduce this in my development environment. Quickest workaround for now seems to be to add a #define PODIO_JSON_OUTPUT
to each macro that wants to use this. Obviously that is not a longterm solution.
(Adding a few thoughts that we already partially discussed in private):
I gave putting all to_json
function implementations into the respective headers a quick go, and that doesn't really work because then we would also have to start replacing forward declarations with #include
s of the corresponding headers, which most likely is not viable because relations can lead to cyclic includes here.
I am also not sure whether we can make, e.g. a #define EDM4HEP_PODIO_OUTPUT
that we implicitly generate based on the value of PODIO_JSON_OUTPUT
work nicely. Maybe the cleanest solution would be to make this explicitly opt-in by creating a new option in the YAML file that enables / disables the json conversion.
from podio.
Another thought. Maybe we can make the current approach work? I don't actually understand what goes wrong in cling. Clearly it finds the dictionary and the (correct, for my system) nlohmann-json headers. So I don't really understand why it thinks the constructor signature doesn't match? Is this maybe due to an implicit c++ option that affects initializer lists?
from podio.
Looking at the error message again, I think the problem is actually in an inline
definition of a to_json
function, as it is in TrackState.h
which is a component. Not sure yet what that teaches us about the problem.
from podio.
Maybe it would be easiest to remove the #ifdef PODIO_JSON_OUTPUT
with a
#if __has_include("nlohmann/json.hpp")
#include "nlohmann/json.hpp"
// potentially a version check
#define PODIO_JSON_OUTPUT // or something else for easier internal use
#endif
in that way we would at least not depend on some external -DPODIO_JSON_OUTPUT
, but would have some (maybe) consistent internal check.
from podio.
I think it seems like the Components just aren't guarded. Nevermind, that didn't make sense.
from podio.
Related Issues (20)
- Check podio Collections for C++ Container compatibility
- Frame based I/O crashes when reading objects with related object that were not persisted
- New python import structure does not work if SIO backend is not built HOT 2
- AddressSanitizer: heap-use-after-free in object destructor HOT 9
- Negative comparisons between `podio::ObjectID` objects are not implemented HOT 2
- Allow to limit the collections that are read
- ROOTFrameData leaks collection buffers that are not requested by the Frame HOT 2
- podio-vis not installed by make install HOT 2
- Cleanup CollectionReadBuffers HOT 1
- Weird names in `dir(podio)` HOT 1
- discussion: Possibility of differing in-memory and on-file datatypes HOT 1
- Add tests for JSON output
- Trivial return types of generated get methods should be by value instead of const reference
- Switch to black for formatting python sources HOT 1
- how to retrieve the cell ID encoding from the metadata in the output ROOT file HOT 2
- RNTuple interface changed in ROOT HOT 1
- collection push_back and value_type incompatible with some std iterator adaptors HOT 1
- Inconsistent reference access for Mutable types
- Schema evolution script does not flag some evolutions as impossible
- Frame serialization/deserialization HOT 12
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 podio.