|
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: 1525
Entry time: 23 Apr 2019
In reply to: 1524
|
Author: |
Konstantin Olchanski |
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++.
Yay!
> my_frontend.cpp
In MIDAS we are using .cxx, not .cpp, per ROOT coding convention https://root.cern.ch/coding-conventions
> the overall structure is still very C-like
this is object-oriented programming done in C. (actually C++ looks exactly the same if you look behind the curtain)
right now we do not hope to rewrite the slow control class driver framework in C++, but if somebody does it,
we should be happy to add it to midas.
for the mfe.c framework, I have a new C++ class based frontend framework in development (and already in use
in the ALPHA-g experiment at CERN). There is a number of lose ends to polish befire I can add it to midas.
And as usual the last 10% of the work consume 90% of the time.
> 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).
this will change with the switch to C++, mfe.c will become mfe.cxx and I shall add the required definitions to mfe.h (or midas.h, TBD)
> To accomplish this I needed to slightly modify the midas.h header file like this:
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> INT device_driver(DEVICE_DRIVER *device_driver, INT cmd, ...);
I intend for all "extern "C"" to go away, everything will use the C++ linkage (and name mangling). This will break existing frontends
and I will need to write clear instructions on converting them to the new scheme.
> I also tested the new strcomb1 function and it seems to work OK.
good.
> I have attached a source file to show how I implemented the device driver in C++
Yup, looks familiar, I have a couple of C++ frontends written like this, too.
K.O. |