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
{{ message }}
Repository navigation
Commit eb82ef6
Browse filesBrowse the repository at this point in the historyBrowse files
**reflect-cpp** is a C++-20/C++-26 library for **fast serialization, deserialization and validation** using reflection, similar to [pydantic](https://github.com/pydantic/pydantic) in Python, [serde](https://github.com/serde-rs) in Rust, [encoding](https://github.com/golang/go/tree/master/src/encoding) in Go or [aeson](https://github.com/haskell/aeson/tree/master) in Haskell.
16
16
17
17
reflect-cpp supports C++-26 reflection, but most of the functionality is also available in C++-20, except where explicitly noted otherwise.
18
18
19
-
Moreover, reflect-cpp is the basis for [sqlgen](https://github.com/getml/sqlgen), a **modern, type-safe ORM and SQL query generator** for C++20, inspired by Python's SQLAlchemy/SQLModel and Rust's Diesel. It provides a fluent, composable interface for database operations with compile-time type checking and SQL injection protection.
19
+
[Moreover, reflect-cpp is the basis for [sqlgen](https://github.com/munich-data-engineering/sqlgen), a **modern, type-safe ORM and SQL query generator** for C++20, inspired by Python's SQLAlchemy/SQLModel and Rust's Diesel. It provides a fluent, composable interface for database operations with compile-time type checking and SQL injection protection.]
20
20
21
21
reflect-cpp and sqlgen fill important gaps in C++ development. They reduce boilerplate code and increase code safety. Together, they enable reliable and efficient ETL pipelines.
22
22
23
23
### Design principles for reflect-cpp include:
24
24
25
-
- Close integration with [containers](https://github.com/getml/reflect-cpp?tab=readme-ov-file#support-for-containers) from the C++ standard library
25
+
[- Close integration with [containers](https://github.com/munich-data-engineering/reflect-cpp?tab=readme-ov-file#support-for-containers) from the C++ standard library]
26
26
- Close adherence to C++ idioms
27
-
- Out-of-the-box support for [JSON](https://rfl.getml.com/supported_formats/json)
- Simple extendability to [other serialization formats](https://munich-data-engineering.github.io/reflect-cpp/supported_formats/supporting_your_own_format)
30
+
- Simple extendability to [custom classes](https://munich-data-engineering.github.io/reflect-cpp/concepts/custom_classes)
31
+
- Being one of the fastest serialization libraries in existence, as demonstrated by our [benchmarks](https://munich-data-engineering.github.io/reflect-cpp/benchmarks)
32
32
33
33
<br>
34
34
@@ -51,17 +51,17 @@ reflect-cpp and sqlgen fill important gaps in C++ development. They reduce boile
51
51
-[The team behind reflect-cpp](#the-team-behind-reflect-cpp)
52
52
-[License](#license)
53
53
54
-
### More in our [documentation](https://rfl.getml.com):
-[How to contribute ↗](https://munich-data-engineering.github.io/reflect-cpp/contributing)
59
+
-[Compiling and running the tests ↗](https://munich-data-engineering.github.io/reflect-cpp/contributing/#compiling-and-running-the-tests)
60
60
61
61
62
62
## Serialization formats
63
63
64
-
reflect-cpp provides a unified reflection-based interface across different serialization formats. It is deliberately designed in a very modular way, using [concepts](https://en.cppreference.com/w/cpp/language/constraints), to make it as easy as possible to interface various C or C++ libraries related to serialization. Refer to the [documentation](https://rfl.getml.com/supported_formats/bson/) for details.
64
+
reflect-cpp provides a unified reflection-based interface across different serialization formats. It is deliberately designed in a very modular way, using [concepts](https://en.cppreference.com/w/cpp/language/constraints), to make it as easy as possible to interface various C or C++ libraries related to serialization. Refer to the [documentation](https://munich-data-engineering.github.io/reflect-cpp/supported_formats/bson/) for details.
65
65
66
66
The following table lists the serialization formats currently supported by reflect-cpp and the underlying libraries used:
67
67
@@ -86,7 +86,7 @@ The following table lists the serialization formats currently supported by refle
86
86
| YAML |[yaml-cpp](https://github.com/jbeder/yaml-cpp)| >= 0.8.0 | MIT | Textual format with an emphasis on readability |
87
87
| yas |[yas](https://github.com/niXman/yas)| >= 7.1.0 | BSL 1.0 | Very fast and compact serialization library |
88
88
89
-
Support for more serialization formats is in development. Refer to the [issues](https://github.com/getml/reflect-cpp/issues) for details.
89
+
[Support for more serialization formats is in development. Refer to the [issues](https://github.com/munich-data-engineering/reflect-cpp/issues) for details.]
90
90
91
91
Please also refer to the *conanfile.py* or *vcpkg.json* in this repository.
92
92
@@ -366,7 +366,7 @@ struct Config {
366
366
// ./app data.csv -o /tmp/out -v --count=10
367
367
```
368
368
369
-
Nested structs, `std::optional`, `std::vector`, enums, `rfl::Flatten` and `rfl::Rename` are all supported. Refer to the [documentation](https://rfl.getml.com/cli) for details.
369
+
Nested structs, `std::optional`, `std::vector`, enums, `rfl::Flatten` and `rfl::Rename` are all supported. Refer to the [documentation](https://munich-data-engineering.github.io/reflect-cpp/cli) for details.
370
370
371
371
### Error messages
372
372
@@ -483,7 +483,7 @@ This results in the following JSON string:
483
483
{"shape":"Rectangle","height":10.0,"width":5.0}
484
484
```
485
485
486
-
Other forms of tagging are supported as well. Refer to the [documentation](https://rfl.getml.com/docs-readme) for details.
486
+
Other forms of tagging are supported as well. Refer to the [documentation](https://munich-data-engineering.github.io/reflect-cpp/docs-readme) for details.
487
487
488
488
### Extra fields
489
489
@@ -666,7 +666,7 @@ In addition, it supports the following custom containers:
666
666
667
667
#### Custom classes
668
668
669
-
Finally, it is very easy to extend full support to your own classes, refer to the [documentation](https://rfl.getml.com/docs-readme) for details.
669
+
Finally, it is very easy to extend full support to your own classes, refer to the [documentation](https://munich-data-engineering.github.io/reflect-cpp/docs-readme) for details.
For other installation methods, refer to the [documentation](https://rfl.getml.com/docs-readme).
717
+
For other installation methods, refer to the [documentation](https://munich-data-engineering.github.io/reflect-cpp/docs-readme).
718
718
719
719
### Compiling with C++-26 reflection
720
720
@@ -729,11 +729,11 @@ cmake --build build -j 4
729
729
730
730
With C++-26 reflection, fixed-size C arrays and inheritance are supported out of the box (no
731
731
`-DREFLECT_CPP_C_ARRAYS_OR_INHERITANCE` flag needed), and there are no range restrictions for
732
-
enums. Refer to the [documentation](https://rfl.getml.com/cpp26_reflection) for details.
732
+
enums. Refer to the [documentation](https://munich-data-engineering.github.io/reflect-cpp/cpp26_reflection) for details.
733
733
734
734
## The team behind reflect-cpp
735
735
736
-
reflect-cpp has been developed by [getML (Code17 GmbH)](https://getml.com), a company specializing in software engineering and machine learning for enterprise applications. reflect-cpp is currently maintained by Patrick Urbanke and Manuel Bellersen, with major contributions coming from the community.
736
+
reflect-cpp has been developed by [Munich Data Engineering](https://www.munich-data-engineering.com), a company specializing in software engineering and machine learning for enterprise applications.
Copy file name to clipboardExpand all lines: benchmarks/README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
1
# Benchmarks
2
2
3
-
reflect-cpp conducts continuuous benchmarking through its [Github Actions](https://github.com/getml/reflect-cpp/actions) pipelines for different compilers, operating systems
3
+
reflect-cpp conducts continuuous benchmarking through its [Github Actions](https://github.com/munich-data-engineering/reflect-cpp/actions) pipelines for different compilers, operating systems
4
4
and architectures. Currently, we benchmark the following:
5
5
6
6
1. How reflect-cpp's JSON parser compares to other JSON libraries for C or C++
7
7
2. How the different formats supported by reflect-cpp compare to each other
8
8
9
9
## Viewing the benchmark results
10
10
11
-
To view the benchmark results, go to the [Actions tab](https://github.com/getml/reflect-cpp/actions)
11
+
To view the benchmark results, go to the [Actions tab](https://github.com/munich-data-engineering/reflect-cpp/actions)
12
12
of this Github repository, click on a recent run you are interested in and scroll down to view the summary.
13
13
14
14
## Running the benchmark results on your own machine
Copy file name to clipboardExpand all lines: docs/content/build_docs.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -104,7 +104,7 @@ All params support `true` or `false` toggles. Refer to the [Hextra documentation
104
104
105
105
## CI/CD: GitHub Pages Deployment
106
106
107
-
The file `.github/workflows/docs.yaml` automates building and deploying the documentation to [GitHub Pages](https://getml.github.io/reflect-cpp/). It runs on every push to the `main` branch.
107
+
The file `.github/workflows/docs.yaml` automates building and deploying the documentation to [GitHub Pages](https://munich-data-engineering.github.io/reflect-cpp/). It runs on every push to the `main` branch.
Copy file name to clipboardExpand all lines: docs/content/custom_classes.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ routines in reflect-cpp.
15
15
Please be aware that due to limitations of the Avro format, it is a good idea to always have a struct as your
16
16
`ReflectionType` when using Avro to avoid infinite recursions.
17
17
18
-
If you absolutely do not want to make any changes to your original class, you can implement a [custom parser](https://github.com/getml/reflect-cpp/blob/main/docs/custom_parser.md).
18
+
If you absolutely do not want to make any changes to your original class, you can implement a [custom parser](https://github.com/munich-data-engineering/reflect-cpp/blob/main/docs/custom_parser.md).
0 commit comments