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
Introduce a new links category for the YAML definitions (#691)
* Make the reader and validator understand links
Add the new category so that it can be read
* Make code generation create necessary link code
Effectively a header per link with a typedef and a common .cc file with
registration code for all links
* Make sure that SIO backend also works
* Separate link registration macros
* Remove special casing from roundtrip tests again
* Make sure to make link collections available
* Make sure that all user facing types exist
Otherwise things start to break in cases where users explicitly use
these types at the moment.
* Add documentation for new capabilities and links
* Update available templates documentation
* Only generate SIOBlocks if necessary
* Use walrus operator to improve readability
---------
Co-authored-by: Mateusz Jakub Fila <37295697+m-fila@users.noreply.github.com>
Co-authored-by: Andre Sailer <andre.philippe.sailer@cern.ch>
|`Component.h.jinja2`| Definition for each component |`[<package>/]<component-name>.h`|
32
-
|`Data.h.jinja2`| POD struct of each datatype (living in the POD layer) |`[<package>/]<datatype-name>Data.h`|
33
-
|`Obj.{h,cc}.jinja2`|`Obj` class for each datatype (living in the object layer) and managing resources |`[<package>/]<datatype-name>Obj.h`, `src/<datatype-name>Obj.cc`|
34
-
|`[Mutable]Object.{h,cc}.jinja2`| The user facing interfaces for each datatype (living in the user layer) |`[<package>/][Mutable]<datatype-name>.h`, `src/[Mutable]<datatype-name>.cc`|
35
-
|`Collection.{h,cc}.jinja2`| The user facing collection interface (living in the user layer) |`[<package>/]<datatype-name>Collection.h`, `src/<datatype-name>Collection.cc`|
36
-
|`CollectionData.{h,cc}.jinja2`| The classes managing the collection storage (not user facing!) |`[<package>/]<datatype-name>CollectionData.h`, `src/<datatype-name>CollectionData.cc`|
37
-
|`datamodel.h.jinja2`| The *full datamodel header* that includes everything of a generated EDM (via including all generated `Collections`). |`[<package>]/<package>.h`|
38
-
|`selection.xml.jinja2`| The `selection.xml` file that is necessary for generating a root dictionary for the generated datamodel |`src/selection.xml`|
39
-
|`SIOBlock.{h,cc}.jinja2`| The SIO blocks that are necessary for the SIO backend |`[<package>/]<datatype-name>SIOBlock.h`, `src/<datatype-name>SIOBlock.cc`|
40
-
|`MutableStruct.jl.jinja2`| The mutable struct definitions of components and datatypes for julia |`[<package>/]<datatype-name>Struct.jl`, `[<package>/]<component-name>Struct.jl`|
41
-
|`ParentModule.jl.jinja2`| The constructor and collection definitions of components and datatypes in the data model are contained within a single module named after the package-name |`[<package>/]<package-name>.jl`|
|`Component.h.jinja2`| Definition for each component |`[<package>/]<component-name>.h`|
32
+
|`Data.h.jinja2`| POD struct of each datatype (living in the POD layer) |`[<package>/]<datatype-name>Data.h`|
33
+
|`Obj.{h,cc}.jinja2`|`Obj` class for each datatype (living in the object layer) and managing resources |`[<package>/]<datatype-name>Obj.h`, `src/<datatype-name>Obj.cc`|
34
+
|`[Mutable]Object.{h,cc}.jinja2`| The user facing interfaces for each datatype (living in the user layer) |`[<package>/][Mutable]<datatype-name>.h`, `src/[Mutable]<datatype-name>.cc`|
35
+
|`Collection.{h,cc}.jinja2`| The user facing collection interface (living in the user layer) |`[<package>/]<datatype-name>Collection.h`, `src/<datatype-name>Collection.cc`|
36
+
|`CollectionData.{h,cc}.jinja2`| The classes managing the collection storage (not user facing!) |`[<package>/]<datatype-name>CollectionData.h`, `src/<datatype-name>CollectionData.cc`|
37
+
|`datamodel.h.jinja2`| The *full datamodel header* that includes everything of a generated EDM (via including all generated `Collections`). |`[<package>]/<package>.h`|
38
+
|`selection.xml.jinja2`| The `selection.xml` file that is necessary for generating a root dictionary for the generated datamodel |`src/selection.xml`|
39
+
|`SIOBlock.{h,cc}.jinja2`| The SIO blocks that are necessary for the SIO backend |`[<package>/]<datatype-name>SIOBlock.h`, `src/<datatype-name>SIOBlock.cc`|
40
+
|`LinkCollection.h.jinja2`| The header that is generated for each *Link* containing effectively typedefs only ||
41
+
|`DatamodelLinksSIOBlock.cc.jinja2`| The .cc file that is necessary for enabling SIO based I/O for *Link*s ||
42
+
|`DatamodelLinks.cc.jinja2`| The global .cc file that is necessary to enable I/O for all *Link*s ||
43
+
|`MutableStruct.jl.jinja2`| The mutable struct definitions of components and datatypes for julia |`[<package>/]<datatype-name>Struct.jl`, `[<package>/]<component-name>Struct.jl`|
44
+
|`ParentModule.jl.jinja2`| The constructor and collection definitions of components and datatypes in the data model are contained within a single module named after the package-name |`[<package>/]<package-name>.jl`|
42
45
43
46
44
47
The presence of a `[<package>]` subdirectory for the header files is controlled by the `includeSubfolder` option in the yaml definition file.
0 commit comments