-
Notifications
You must be signed in to change notification settings - Fork 334
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
C/C++ errorhandling #3001
C/C++ errorhandling #3001
Conversation
d184a95
to
9ce3f32
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice, error handling is a lot of work 😓
I find it a bit confusing that you mix "error" and "status". I get it that Status
doesn't always imply an error, nor does ErrorCode
, but it is pretty standard in C and C++ for error codes to include the OK case.
I do think Status
is a better name for the C++ type, and matches that of Arrow
, but I am leaning towards that ErrorCode
is better for the enum. In any case: let's be consistent everywhere. It's quite confusing now that "Error" becomes "Status" on the FFI boundary imho
e0a839c
to
370bb25
Compare
* Depends on #3001 * Part of #2919 * Fixes #2917 * Solves a big chunk of #2873 ### What Introduces a very simple `rerun::Result`. I decided to keep it **a lot** more simple than the arrow Result type and refrained from the typical "return or assign" etc. macro since I noticed that they get quite complicated quickly. The idea is that the rerun result type won't be needed by a lot of manual code, so erring on the too lightweight side should be in our favor. We use this now accross the entire public serialization path - meaning that once we move out array->arrow serialization helper into separate headers we should be pretty much done with not exposing arrow headers! ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/3005) (if applicable) - [PR Build Summary](https://build.rerun.io/pr/3005) - [Docs preview](https://rerun.io/preview/pr%3Aandreas%2Fcpp%2Fcustom-result-type/docs) - [Examples preview](https://rerun.io/preview/pr%3Aandreas%2Fcpp%2Fcustom-result-type/examples)
* Part of #2919 * Depends on #3001 * Solves C++ part of #2537 ### What Moves out all affix-fuzzer and co. testing types of the actual SDK. While working on that... * I figured out why warnings from arrow headers showed up only sometimes: When Arrow isn't added explicitely as a dependency, CMake doesn't seem to declare it as system header which normally suppresses warnings (as you can imagine this got really bad now when adding more cpps that include arrow to the test library). Obvious workaround is to add arrow explicitly to the text executable. * internal include paths got shorter/more natural in some cases. I had to make the `Includes` utility more clever in order to support types outside of the sdk, so we got this almost for free :) ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/3007) (if applicable) - [PR Build Summary](https://build.rerun.io/pr/3007) - [Docs preview](https://rerun.io/preview/pr%3Aandreas%2Fcpp%2Fseparate-test-types/docs) - [Examples preview](https://rerun.io/preview/pr%3Aandreas%2Fcpp%2Fseparate-test-types/examples)
### What This is so we can test things out before the next release, and also get in some new egui features for the plot aggregator and drag-and-drop. * Closes #4716 * Closes #4794 ### TODO * [x] Fix hovering ListItems in blueprint panel ### wgpu changelog https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md#v0190-2024-01-17 ### relevant egui changelog (so far) #### eframe * Keep `ViewportInfo::maximized` and `minimized` up-to-date on Windows [#3831](emilk/egui#3831) (thanks [@rustbasic](https://github.com/rustbasic)!) * Update wgpu to 0.19 [#3824](emilk/egui#3824) * Fix: handle `IconData::default()` without crashing [#3842](emilk/egui#3842) #### egui_extras * Fix unwraps in SVG scaling [#3826](emilk/egui#3826) (thanks [@amPerl](https://github.com/amPerl)!) * Update to ehttp 0.4 [#3834](emilk/egui#3834) #### egui_plot * Make `egui_plot::PlotMemory` public [#3871](emilk/egui#3871) #### egui * Selectable text in Labels [#3814](emilk/egui#3814) * `ComboBox`: add builder method for height [#3001](emilk/egui#3001) (thanks [@hinto-janai](https://github.com/hinto-janai)!) * Add keys `?`, `/`, `|` [#3820](emilk/egui#3820) * Fix clickable widgets blocking scrolling on touch screens [#3815](emilk/egui#3815) (thanks [@lucasmerlin](https://github.com/lucasmerlin)!) * Fix `stable_dt` [#3832](emilk/egui#3832) * Bug Fix : `Response::is_pointer_button_down_on` is now false the frame the button is released [#3833](emilk/egui#3833) (thanks [@rustbasic](https://github.com/rustbasic)!) * Use runtime knowledge of OS for OS-specific text editing [#3840](emilk/egui#3840) * Refactor: move text selection logic to own module [#3843](emilk/egui#3843) * Fix: dragging to above/below a `TextEdit` or `Label` will select text to begin/end [#3858](emilk/egui#3858) * Add `Response::contains_pointer` [#3859](emilk/egui#3859) * Always set `response.hovered` to false when dragging another widget [#3860](emilk/egui#3860) * Add `Align2::anchor_size` [#3863](emilk/egui#3863) * Add `Context::debug_text` [#3864](emilk/egui#3864) #### epaint * Add `Align2::anchor_size` [#3863](emilk/egui#3863) ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using newly built examples: [app.rerun.io](https://app.rerun.io/pr/4885/index.html) * Using examples from latest `main` build: [app.rerun.io](https://app.rerun.io/pr/4885/index.html?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [app.rerun.io](https://app.rerun.io/pr/4885/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG - [PR Build Summary](https://build.rerun.io/pr/4885) - [Docs preview](https://rerun.io/preview/eb1bce846c3adb29b99d04018b002475994ad213/docs) <!--DOCS-PREVIEW--> - [Examples preview](https://rerun.io/preview/eb1bce846c3adb29b99d04018b002475994ad213/examples) <!--EXAMPLES-PREVIEW--> - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) --------- Co-authored-by: Andreas Reich <r_andreas2@web.de>
What
Introduces error handling to C/C++.
Missing (and already in the works!) is a custom result type that will allow us to remove dependency on arrow status/result which right now doesn't translate to
rerun::Status
Checklist