|
Back
Midas
Rome
Roody
Rootana
|
Midas DAQ System |
Not logged in |
|
|
15 Apr 2019, Konstantin Olchanski, Info, switch of MIDAS to C++
|
15 Apr 2019, Konstantin Olchanski, Info, switch of MIDAS to C++, which C++?
|
15 Apr 2019, Konstantin Olchanski, Info, switch of MIDAS to C++, how much C++?
|
16 Apr 2019, Pintaudi Giorgio, Info, switch of MIDAS to C++, how much C++?
|
17 Apr 2019, John M O'Donnell, Info, switch of MIDAS to C++, how much C++?
|
22 Apr 2019, Pintaudi Giorgio, Info, switch of MIDAS to C++, how much C++?
|
23 Apr 2019, Konstantin Olchanski, Info, switch of MIDAS to C++, how much C++?
|
11 May 2019, Konstantin Olchanski, Info, switch of MIDAS to C++, which C++?
|
22 May 2019, Konstantin Olchanski, Info, switch of MIDAS to C++
|
05 Jun 2019, Konstantin Olchanski, Info, MIDAS switched to C++
|
17 May 2022, Razvan Stefan Gornea, Info, MIDAS switched to C++
|
17 May 2022, Konstantin Olchanski, Info, MIDAS switched to C++
|
17 May 2022, Ben Smith, Info, MIDAS switched to C++
|
|
Message ID: 1524
Entry time: 22 Apr 2019
In reply to: 1523
Reply to this: 1525
|
Author: |
Pintaudi Giorgio |
Topic: |
Info |
Subject: |
switch of MIDAS to C++, how much C++? |
|
|
Dear Konstantin and others,
our recent discussion stimulated my curiosity and I wrote a small frontend for the trigger board of our experiment in C++.
The underlying hardware details are not relevant here. I would just like to briefly report and discuss what I found out.
I have written all the frontend files (but the bus driver) in C++11:
- my_frontend.cpp
- driver/class/my_class_driver.cpp
- driver/device/my_device_driver.cpp
All went quite smoothly, but I feel that the overall structure is still very C-like (that may be a good thing or a bad thing depending on the point of view).
As far as I know, the MIDAS frontend mfe.c has still only the C version (I couldn't find any mfe.cxx). This means that all the points of contact between the MIDAS frontend code and the user
frontend code must be C compatible (no C++ features or name mangling). To accomplish this I needed to slightly modify the midas.h header file like this:
@@ -1141,7 +1141,13 @@ typedef struct eqpmnt {
+#ifdef __cplusplus
+extern "C" {
+#endif
INT device_driver(DEVICE_DRIVER *device_driver, INT cmd, ...);
+#ifdef __cplusplus
+}
+#endif
I also tested the new strcomb1 function and it seems to work OK.
I have attached a source file to show how I implemented the device driver in C++. The code is not meant to be compilable: it is just to show how I implemented it. This is the most C++-like syntax that I could come out with. Feel free to comment it and if you think that it could be improved let me know.
Best Regards
Giorgio
|
|