-
Notifications
You must be signed in to change notification settings - Fork 34
Backport #357: DevEnum support for commands #480
Conversation
3395be1
to
a1228be
Compare
81dcff7
to
fea1a00
Compare
e563570
to
b88dbd4
Compare
b88dbd4
to
d205d80
Compare
Conflicts: .travis.yml
Conflicts: cpp_test_suite/cxxtest/CMakeLists.txt cpp_test_suite/event/CMakeLists.txt
Unfortunately, this PR does not compile on Windows... It would be nice if some Windows expert could have a look. @NexeyaSGara, could you? |
Hi Igor, does this PR require a change to the IDL file? If so it cannot be merged with the LTS-9 version ... Andy |
@andygotz , yes it does. But I do not see the point - why it can not be merged? IDL is hidden from the end user - they will need only to update dependency e.g. as in travis script (to built the project; for binaries this is not even relevant). BTW Appveyor always downloaded latest idl, so windows Tango 9LTS has been compiled with idl 6 all the time. |
IIRC Appveyor complains about
and it looks like you want to overload on an r-value. While that is supposed to work even with VS I would just write it as
Effective Modern C++ Item 26 and 41 goes into depth about this. |
We have always changed the major version of the library when modifying the IDL to force recompiling of servers and clients because if you don't do this they might crash due to the different structure of the C++ classes generated by IDL. Have you tested the modified IDL with servers and clients which have not been recompiled? |
@andygotz , no. I always recompile everything. We can test that before merge. I mean you should not just replace old .so with the new one, old clients/servers point to old .so, while newly compiled ones to new. So there should not be any intersection between two libraries -> no crash |
It might work with the changes you introduced because you basically added one structure and one class without changing the older classes but this breaks the way we have done things up to now (increasing major Tango version when introducing a new Device interface in the IDL). |
There was a discussion about appveyor build failures. One of the errors is due to the use of alternative operator syntax in void Connection::resolve_obj_version(const string &corba_name, const Object_var &obj)
{
//TODO extract template or Macro or class hierarchy, 'cauz this code clearly is a duplication
device_6 = Device_6::_narrow(obj);
if (not is_nil(device_6))
{ See e.g. #555. The same kind of issue was fixed with 49ad354. |
I'd rather be in favor of fixing MSVC quirks instead of disabling valid (standard) code in GCC. According to stackoverflow, Edit: |
|
@t-b thanks for the links. Their explanation why But I did some searching, it looks like:
If we really want to change any compilation flags in this PR, I'd give But the simplest workaround is to just change |
I would go with this simple solution. I think |
Conflicts: cpp_test_suite/cpp_test_ds/DevTest.cpp cpp_test_suite/cxxtest/CMakeLists.txt cpp_test_suite/event/change_event.cpp cppapi/server/device_2.cpp
subj