@@ -47,55 +47,6 @@ the raw interface.
47
47
48
48
This can be visualized graphically as follows.
49
49
50
- ``` {mermaid}
51
- :title: Public interfaces
52
-
53
- flowchart TD
54
- classDef user_node fill:#9f6,stroke:#333,stroke-width:2px
55
- classDef public_interface fill:#69f,stroke:#333,stroke-width:2px
56
- classDef experimental_interface fill:#99b,stroke:#333,stroke-width:2px
57
- classDef inclusion_method fill:#ddd,stroke:#fff,stroke-width:2px
58
-
59
- subgraph User
60
- any_language_user(["Any language user"]):::user_node
61
- c_user(["C user"]):::user_node
62
- cpp_user(["C++ user"]):::user_node
63
- python_user(["Python user"]):::user_node
64
- end
65
-
66
- dynamic_loading{ }:::inclusion_method
67
- c_includes{ }:::inclusion_method
68
-
69
- subgraph Raw interface
70
- power_grid_model_c_dll("power_grid_model_c<br>(shared library)"):::public_interface
71
- end
72
-
73
- subgraph Exposition
74
- power_grid_model_c("power_grid_model_c<br>(C library)"):::public_interface
75
- end
76
-
77
- subgraph Wrapper
78
- power_grid_model_cpp("power_grid_model_cpp<br>(experimental,<br>C++ library)"):::experimental_interface
79
- end
80
-
81
- subgraph Feature-rich library
82
- power_grid_model_python("power_grid_model<br>(Python library)"):::public_interface
83
- end
84
-
85
- any_language_user --> dynamic_loading
86
- c_includes --> dynamic_loading
87
- dynamic_loading -->|dynamic loading| power_grid_model_c_dll
88
- c_user --> c_includes
89
- cpp_user --> c_includes
90
- c_includes -->|links +<br>includes| power_grid_model_c -->|dynamic linking| power_grid_model_c_dll
91
- cpp_user -->|experimental<br>links +<br>includes| power_grid_model_cpp -->|links +<br>includes| power_grid_model_c
92
- python_user -->|import| power_grid_model_python -->|"CDLL<br>(dynamic loading)"| power_grid_model_c_dll
93
- ```
94
-
95
- ## Full high-level design
96
-
97
- This can be visualized graphically as follows.
98
-
99
50
``` {mermaid}
100
51
:title: Full design
101
52
@@ -160,7 +111,7 @@ may want to create their own library or interface, e.g.:
160
111
In all cases, it is recommended that the user determines their own desired
161
112
[ layer of abstraction] ( #layers-of-abstraction ) and then creates internal wrappers for all
162
113
lower-level ones, following the same pattern as the power-grid-model
163
- [ uses internally] ( #full-high-level-design ) for the custom interfaces.
114
+ [ uses internally] ( #existing-library-interfaces ) for the custom interfaces.
164
115
165
116
### Hosting a custom library or interface
166
117
0 commit comments