tango-controls activity https://gitlab.com/tango-controls 2026-03-21T09:57:45Z tag:gitlab.com,2026-03-21:5228687200 Johan Forsberg commented on merge request !20 at tango-controls / incubator / pytango-db 2026-03-21T09:57:45Z nurbldoff Johan Forsberg [email protected]

Yes, there are some tests (mainly related to property history) that depend on ordering and we explicitly randomize that to provoke that. I think it'd be even worse to have tests that accidentally pass because of ordering.

Seems there's no "proper" solution since Tango doesn't have an API for changing the property history directly. Probably the only two options are either recreating the whole db between each test (easy with sqlite but probably quite slow for C++) or as @t-b suggested "hacking" the DbMySQLSelect command to delete the tables. Until that happens, rerunning the tests until they pass is the only way :(

tag:gitlab.com,2026-03-20:5227586384 Alessio Igor Bogani commented on merge request !47 at tango-controls / starter 2026-03-20T19:15:59Z alessioigorbogani Alessio Igor Bogani

The intent of my last commit is to preserve the apparent original behaviour by adding a default 1s sleep between each server start. If someone like us prefers parallel startup, they should create a class or device property InterStartupServerWait and set it to 0.

tag:gitlab.com,2026-03-20:5227560999 Alessio Igor Bogani pushed to project branch parallel-servers-startup at tango-controls / starter 2026-03-20T19:05:14Z alessioigorbogani Alessio Igor Bogani

Alessio Igor Bogani (afa20944) at 20 Mar 19:05

Add InterStartupServerWait property to throttle server forks within...

tag:gitlab.com,2026-03-20:5227392550 gitlab-triage commented on issue #371 at tango-controls / pytango 2026-03-20T18:04:22Z project_23992091_bot_c60320280f3845321885b998a341e464 gitlab-triage

Hi! Thank you for your contribution!

This issue has been automatically marked as stale because it has not had recent activity. It will be closed automatically within 30 days if no further activity occurs.

NOTE: If this issue was closed prematurely, please leave a comment.

tag:gitlab.com,2026-03-20:5227211866 Yury Matveev pushed to project branch allow-nullptr-value at tango-controls / cppTango 2026-03-20T17:01:24Z yamatveyev Yury Matveev

Yury Matveev (ea2624e1) at 20 Mar 17:01

Attribute::set_value_date_quality: allow accepting nullptr value is...

tag:gitlab.com,2026-03-20:5227155205 Damien Lacoste commented on merge request !1589 at tango-controls / cppTango 2026-03-20T16:43:53Z dlacoste-esrf Damien Lacoste

original Tango::Group inherits from Tango::GroupElement, but as far as I understand "clean API" means also that our public classes do not inherit, so new Tango::Group class is stand alone

Sorry it comes a bit late, but can you share more insights on why we want to get rid of inheritance?

And if this is the way to go shouldn't we do it everywhere inheritance is used?

tag:gitlab.com,2026-03-20:5227021435 Thomas Ives commented on merge request !1614 at tango-controls / cppTango 2026-03-20T16:07:34Z thomasives Thomas Ives

The changes look good to me. I haven't checked the coverage as the quick-test job is failing due to a typo.

tag:gitlab.com,2026-03-20:5227021335 Thomas Ives commented on merge request !1614 at tango-controls / cppTango 2026-03-20T16:07:32Z thomasives Thomas Ives
    set_value_date_quality(p_data, TangoTimestamp{t}, qual, x, y, release);

This is the style we use normally.

tag:gitlab.com,2026-03-20:5227021322 Thomas Ives commented on merge request !1614 at tango-controls / cppTango 2026-03-20T16:07:32Z thomasives Thomas Ives
                set_tested_value(device, ValueToTest::NORMAL);
tag:gitlab.com,2026-03-20:5227015212 Thomas Ives commented on merge request !1614 at tango-controls / cppTango 2026-03-20T16:05:52Z thomasives Thomas Ives

The conclusion from yesterday's meeting was, yes we should delete it.

tag:gitlab.com,2026-03-20:5226992625 Thomas Ives commented on merge request !1603 at tango-controls / cppTango 2026-03-20T15:59:57Z thomasives Thomas Ives

Discussion topic: Can we decide on the above?

tag:gitlab.com,2026-03-20:5226972184 Thomas Ives commented on merge request !1589 at tango-controls / cppTango 2026-03-20T15:54:25Z thomasives Thomas Ives

Thanks for the changes @yamatveyev.

The end product looks good to me now. I have a few comments below:

  • 25949c3d (Pimpl Tango::Group. Step 1: generate facade class, 2026-01-28)

Okay.

  • 1a3b3e4c (Pimpl Tango::Group. Step 2: add external_interface, 2026-01-28)

It is minor, but this commit message say "Step 1" in it too. I think something got confused here.

  • 4851fe53 (Pimpl Tango::Group. Step 3: add facade classes to CMakeLists, 2026-01-28)
  • 44134e90 (Pimpl Tango::Group. Step 4: rename Group -> GroupInternal, 2026-01-28)
  • 4e73608c (Pimpl Tango::Group. Step 4: rename GroupFacade -> Group, 2026-01-28)

Okay.

  • f0829a88 (Pimpl Tango::Group: Step 5: add missing methods to Group, fix dtor., 2026-01-28)

Okay. You claim to fix the dtor here, but I think this is actually done in a couple of commits.

Have we discussed exposing is_root_group?

  • e2d1d19f (Pimpl Tango::Group: Step 6: cleanup GroupInternal.h, 2026-01-28)

I don't get why we are adding this overload here:

+    virtual void remove(const std::string &pattern, bool fwd = true);
  • 87f31d17 (Pimpl Tango::Group: fix destructor, 2026-03-11)

Okay.

  • 00130e8d (Catch2 Tests: make "stop_server" method to stop particular server (if several are run), add "stop_all_servers" method to stop all of them. Fix "restart_server" to handle multi servers. Add "get_trl" method to get short trl., 2026-03-11)

The first line of the commit message here is too long.

I find the changes a little odd. The function called restart_server restarts all the servers where as the function called stop_server only stops 1 and then we have a stop_all_servers method to stop them all.

The pattern I established is that overloads without an instance argument are only usable if there is only one server job. These use the only_one_job() thing to ensure this. Then the overload that takes an instance name can be used to stop a particular server.

I think I would prefer the following set of member functions to keep things consistent:

void stop_server(timeout); // Requires only 1 server job for the context
void stop_server(instance_name, timeout);
void stop_all_servers(timeout);

void restart_server(timeout); // Requires only 1 server job for the context
void restart_server(instance_name, timeout);
void restart_all_servers(timeout);

When we discussed this on mattermost, I think you said stop_server(timeout) is ambiguous. Now I'm looking at the changes, I'm not sure I agree that it is ambiguous because it is singular. Although perhaps for non-native English speakers it is not as clear, so I would be open to changing it. However, I would want to make the change for the entire API and not have these functions behave differently.

  • 05e7ee0d (Tests: re-write cxx_group test to Catch2, 2026-03-11)

Very nice. I think we can run this test for more IDL versions. Or does it really need to be 6 only?

  • df5f4a59 (Pimpl Tango::Group: hide GroupInternal from Group.h by type erasure for templates, 2026-03-12)

Great. Could you add an std::enable_if_t clause to the templates to constrain them to the expected types?

  • 4268ece1 (Pimpl Tango::Group: fix clang-tidy issues, 2026-03-12)

Please could you apply these as fix ups to the previous commits?

  • 5e92d64d (Pimpl Tango::Group: move GroupInternal.h to internal/client directory, 2026-03-13)

Good.

  • 1cddc3cb (Pimpl Tango::Group: fix asan and ubsan issues, 2026-03-13)

The reinterpret_cast here is probably the wrong choice. You should use a dynamic_cast and check that the result isn't nullptr to be safe. Otherwise, if we are very sure that these are GroupInternal objects then we should use static_cast, but it is UB if they are not.

reinterpret_cast is never the correct choice. It is a mistake in the language IMO. We should probably turn on the cppcoreguidelines-pro-type-reinterpret-cast clang-tidy lint.

tag:gitlab.com,2026-03-20:5226831947 Yury Matveev pushed to project branch allow-nullptr-value at tango-controls / cppTango 2026-03-20T15:19:44Z yamatveyev Yury Matveev

Yury Matveev (1876b82b) at 20 Mar 15:19

Attribute::set_value_date_quality: allow accepting nullptr value is...

tag:gitlab.com,2026-03-20:5226782842 Thomas Braun deleted project branch improve-docker-template at tango-controls / gitlab-ci-templates 2026-03-20T15:08:28Z t-b Thomas Braun [email protected]

Thomas Braun (c4148791) at 20 Mar 15:08

tag:gitlab.com,2026-03-20:5226782789 Thomas Braun closed issue #14: Enhancements ideas for Docker.gitlab-ci.yml at tango-controls / gitlab-ci-templates 2026-03-20T15:08:27Z t-b Thomas Braun [email protected]

The use case is https://gitlab.com/tango-controls/docker/ci/cpp/debian12 where we right now have different branches for each version. The reason is that only with this approach we can use the Docker.gitlab.yml because it requires the docker file to be Dockerfile and also only pushes to the a registry destination named like the branch.

We would like to move away from these multiple branches and just use one branch (main).

Then we would have multiple docker files a la

Dockerfile.main
Dockerfile.lts
...

and some customized CI on top of Docker.gitlab.yml:

build-image-main:
  extends: build-image
  variables:
    DOCKERFILE: "Dockerfile.main"
    DESTINATION: "cppTango_version_main"

build-image-lts:
  extends: build-image
  variables:
    DOCKERFILE: "Dockerfile.lts"
    DESTINATION: "cppTango_version_lts"
...

The build-image job should then also not complain that there is no Dockerfile.

@beenje Is that feasible?

tag:gitlab.com,2026-03-20:5226782729 Thomas Braun pushed to project branch main at tango-controls / gitlab-ci-templates 2026-03-20T15:08:27Z t-b Thomas Braun [email protected]

Thomas Braun (6ed43950) at 20 Mar 15:08

Merge branch 'improve-docker-template' into 'main'

... and 1 more commit

tag:gitlab.com,2026-03-20:5226782706 Thomas Braun accepted merge request !38: Add variables to docker template at tango-controls / gitlab-ci-templates 2026-03-20T15:08:26Z t-b Thomas Braun [email protected]

Allow to extend the build-image job to build images based on different Dockerfiles.

Fix #14

I tested with parallel here: https://gitlab.com/tango-controls/docker/tango-test/-/jobs/10976621086

Or with extend: https://gitlab.com/tango-controls/docker/tango-test/-/jobs/10976666940

If you want the job to run with the default values and add an extra job, I'd use extend. If you don't want the default values, parallel might be better.

Anyway, if DOCKERFILE doesn't exist, the job won't run. So you don't have to overwrite the default build-image if Dockerfile doesn't exist.

tag:gitlab.com,2026-03-20:5226782489 Thomas Braun commented on merge request !38 at tango-controls / gitlab-ci-templates 2026-03-20T15:08:23Z t-b Thomas Braun [email protected]

Yes sorry, this sunk too deep on the todo list. Yes let's merge now.

tag:gitlab.com,2026-03-20:5226518551 Thomas Ives commented on merge request !1598 at tango-controls / cppTango 2026-03-20T14:07:35Z thomasives Thomas Ives

Thanks for the well structured MR @dlacoste-esrf. It was very easy to work through. I had some compliation errors (I think related to missing header files), but I'm afraid I haven't put any effort diagnosing what is going on. It looks like the CI has similar issues.

I have a few comments for each commit:

  • da96c8b9 (TangoTimestamp.h: add sys/time.h header for struct timeval definition, 2026-03-13)

Nice find.

  • 859b3e92 (FwdAttribute.h: unwrap new_att_conf_base template method, 2026-02-04)

Okay. I guess you cannot make a free template function to implement this like you do in the next commit because this accesses some protected/private members.

  • a5cffbbf (FwdAttribute: unwrap set_local_attribute template method, 2026-02-04)

Nice.

  • d5c896a6 (WAttribute: get rid of WAttribute_templ.h, 2026-02-04)
  • 57772bf8 (Attribute: Fix template methods for enums, 2026-02-04)

This is great. I like the direction it is moving in. It is much simpler to follow than the previous version.

However, I'm not sure about exposing the const std::type_info & overloads in the public interface and using a default parameter. I think these overloads should be private (even for the pimpl'd class) and then the public methods should redirect to the const std::type_id & overloads as appropriate. A user can call these with random std::type_info objects and it would be nice to not have to worry about this.

I'm also not sure about the reinterpret_casts to short *. I'm pretty sure this is UB even if the underlying type is short (although it will probably work). However, in the case where the underlying type is unsigned int this is definitely broken as the size of the objects are different.

I think this is UB even if the underlying type is short because, [1] says that dereferencing a pointer to a different type is UB and [2] says that an enumeration is a distinct type.

I think we need to maintain the copy we were doing previously here:

-    short *ptr = new short[nb_data];
-    for(size_t i = 0; i < nb_data; ++i)
-    {
-        ptr[i] = (short) val[i];
-    }

We could perhaps replace this with a memcpy if the underlying type is short, which may be faster. However, is anyone using large arrays of enums? I dunno, perhaps optimising this too much doesn't matter.

[1] https://en.cppreference.com/w/c/language/pointer.html#:~:text=Although%20any%20pointer,aliasing%20for%20details. [2] https://en.cppreference.com/w/cpp/language/enum.html

  • b7215e72 (PollThread_templ.h: remove it, 2026-03-12)

Sure.

  • 96721986 (*AttributeFacade: generate them, 2026-02-11)
  • b426cb28 (*AttributeFacade: move generated ctors to the ctors sections, 2026-02-11)

Okay.

  • d7bdc919 (*AttributeFacade.cpp: delete wrongly copied destructor, 2026-02-11)

I dunno why these dtors are generated...

  • c34def32 (*AttributeFacade.cpp: Give names to None parameters, 2026-02-11)

Another fun gen-facade.py bug ;)

  • 89d1ca90 (*AttributeFacade: manage templates definitions, 2026-02-11)

Nice.

  • c4ccb4e2 (*AttributeFacade.cpp: fix constructors, 2026-02-11)

Okay.

  • 9dba82ce (*AttributeFacade.h: add public methods that should be there, 2026-02-11)

These methods should be documented.

Why do these need to be public? Could you add the answer to this to the commit message?

  • 12669c77 (src/server: Build *AttributeFacade.cpp, 2026-02-11)
  • be7a99aa (server/CMakeLists.txt: Temporarily add *AttributeFacade.h, 2026-02-11)

Okay.

  • daed7b84 (Attribute.h: get rid of GIVE/REL_MUTEX macros, 2026-02-12)

Good.

  • 6f10b353 (Util_templ.h: remove it, 2026-02-12)

Again unrelated, but also fine.

I'm never sure what the rule is here, but do we have to forward declare these template instantiations in the header file? I guess not because this worked before, but I have the feeling this is one of the difference between MSVC and gcc/clang. This reminds me a little of this pytango issue which was also about differences in how explicitly instantiate templates behave.

  • 9d11f488 (internal_access_fwd: Add accessor using const reference, 2026-02-12)

This should really return a const T::Impl *. If there is some place where we need to remove a const, I would rather do the const_cast there to be explicit than do it implicitly here.

  • 7cf34497 (Attribute_templ.h: remove it, 2026-02-12)

Okay.

  • 1faaaeaa (Attribute.h: move back avns_in_att and delete_startup_seq methods, 2026-02-12)

Good idea.

  • 8b5b758f (*AttributeFacade: unwrap all templates into proper overloads, 2026-02-12)

Brilliant. Minor nit on the documentation of set_value_date_quality: It would be nice if the templated version explained what T needs to be, i.e. "a scoped-enum type with underlying type short or a unscoped-enum type that is not DevState".

For {get,set}_{min,max}_{alarm,warning}, can these ever be called for e.g. DevString/DevEncoded etc? Surely, we only need types here that support alarms. Similarly, for {set,get}_{min,max}_value, I don't think these are supported for all types.

  • 451cc894 (WAttributeFacade: add get_w_dim_ methods to the public interface, 2026-02-12)

They deserve it

;) Yes they do.

  • 3fd2eb7a (*Attribute: rename facade and impl, 2026-02-12)

Okay.

  • b29ded33 (*AttributeInternal.{h.cpp}: Rename from *Attribute.{h,cpp}, 2026-02-13)

I think some headers are still missing in places. When I build with -DCMAKE_DISABLE_PRECOMPILED_HEADERS=ON, I get:

[5/167] Building CXX object src/client/CMakeFiles/client_objects.dir/DelayedEventSubThread.cpp.o
FAILED: [code=1] src/client/CMakeFiles/client_objects.dir/DelayedEventSubThread.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/client/CMakeFiles/client_objects.dir/DelayedEventSubThread.cpp.o -MF src/client/CMakeFiles/client
_objects.dir/DelayedEventSubThread.cpp.o.d -o src/client/CMakeFiles/client_objects.dir/DelayedEventSubThread.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/DelayedEventSubThread.cpp
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/DelayedEventSubThread.cpp: In member function ‘virtual void Tango::DelayedEventSubThread::run(void*)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/DelayedEventSubThread.cpp:44:45: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
   44 |         conn_params.last_heartbeat = Tango::get_current_system_datetime();
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
[6/167] Building CXX object src/client/CMakeFiles/client_objects.dir/NotifdEventConsumer.cpp.o
FAILED: [code=1] src/client/CMakeFiles/client_objects.dir/NotifdEventConsumer.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/client/CMakeFiles/client_objects.dir/NotifdEventConsumer.cpp.o -MF src/client/CMakeFiles/client_o
bjects.dir/NotifdEventConsumer.cpp.o.d -o src/client/CMakeFiles/client_objects.dir/NotifdEventConsumer.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/NotifdEventConsumer.cpp
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/NotifdEventConsumer.cpp: In member function ‘virtual void Tango::NotifdEventConsumer::connect_event_channel(const std::string&, Tango::Database
*, bool, Tango::DeviceData&)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/NotifdEventConsumer.cpp:576:40: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
  576 |         evt_ch.last_heartbeat = Tango::get_current_system_datetime();
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/NotifdEventConsumer.cpp:587:58: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
  587 |         new_event_channel_struct.last_heartbeat = Tango::get_current_system_datetime();
      |                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/NotifdEventConsumer.cpp: In member function ‘virtual void Tango::NotifdEventConsumer::push_structured_event(const CosNotification::StructuredEv
ent&)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/NotifdEventConsumer.cpp:779:48: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
  779 |                 evt_ch.last_heartbeat = Tango::get_current_system_datetime();
      |                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
[7/167] Building CXX object src/client/CMakeFiles/client_objects.dir/EventKeepAliveThread.cpp.o
FAILED: [code=1] src/client/CMakeFiles/client_objects.dir/EventKeepAliveThread.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/client/CMakeFiles/client_objects.dir/EventKeepAliveThread.cpp.o -MF src/client/CMakeFiles/client_
objects.dir/EventKeepAliveThread.cpp.o.d -o src/client/CMakeFiles/client_objects.dir/EventKeepAliveThread.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp: In member function ‘virtual void* Tango::EventConsumerKeepAliveThread::run_undetached(void*)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp:597:27: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
  597 |         auto now = Tango::get_current_system_datetime();
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp: In member function ‘void Tango::EventConsumerKeepAliveThread::fwd_not_conected_event(Tango::PointerWithLock<Tango::Ev
entConsumer>&)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp:872:35: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
  872 |         const time_t now = Tango::get_current_system_datetime();
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp: In member function ‘void Tango::EventConsumerKeepAliveThread::confirm_subscription(Tango::PointerWithLock<Tango::Even
tConsumer>&, const std::map<std::__cxx11::basic_string<char>, Tango::channel_struct>::iterator&)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp:987:46: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
  987 |                     const time_t ti = Tango::get_current_system_datetime();
      |                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp:1009:38: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
 1009 |             const time_t ti = Tango::get_current_system_datetime();
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp:1031:42: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
 1031 |                 const time_t ti = Tango::get_current_system_datetime();
      |                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp: In member function ‘void Tango::EventConsumerKeepAliveThread::re_subscribe_after_reconnect(Tango::PointerWithLock<Tan
go::EventConsumer>&, Tango::PointerWithLock<Tango::EventConsumer>&, const std::map<std::__cxx11::basic_string<char>, Tango::event_callback>::iterator&, const std::map<std::__cxx11::basic_string<char>, Tango::ch
annel_struct>::iterator&, const std::string&)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/client/EventKeepAliveThread.cpp:1393:47: error: ‘get_current_system_datetime’ is not a member of ‘Tango’
 1393 |         ipos->second.last_subscribed = Tango::get_current_system_datetime();
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
[8/167] Building CXX object src/server/CMakeFiles/server_objects.dir/AttrProperty.cpp.o
FAILED: [code=1] src/server/CMakeFiles/server_objects.dir/AttrProperty.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/server/CMakeFiles/server_objects.dir/AttrProperty.cpp.o -MF src/server/CMakeFiles/server_objects.
dir/AttrProperty.cpp.o.d -o src/server/CMakeFiles/server_objects.dir/AttrProperty.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttrProperty.cpp
In file included from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttrProperty.cpp:9:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:796:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  796 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:810:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  810 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:846:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  846 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:860:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  860 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
cc1plus: all warnings being treated as errors
[12/167] Building CXX object src/server/CMakeFiles/server_objects.dir/AttrValue.cpp.o
FAILED: [code=1] src/server/CMakeFiles/server_objects.dir/AttrValue.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/server/CMakeFiles/server_objects.dir/AttrValue.cpp.o -MF src/server/CMakeFiles/server_objects.dir
/AttrValue.cpp.o.d -o src/server/CMakeFiles/server_objects.dir/AttrValue.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttrValue.cpp
In file included from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttrValue.cpp:10:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:796:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  796 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:810:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  810 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:846:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  846 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:860:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  860 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
cc1plus: all warnings being treated as errors
[14/167] Building CXX object src/server/CMakeFiles/server_objects.dir/attribute_utils.cpp.o
FAILED: [code=1] src/server/CMakeFiles/server_objects.dir/attribute_utils.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/server/CMakeFiles/server_objects.dir/attribute_utils.cpp.o -MF src/server/CMakeFiles/server_objec
ts.dir/attribute_utils.cpp.o.d -o src/server/CMakeFiles/server_objects.dir/attribute_utils.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/attribute_utils.cpp
In file included from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/attribute_utils.cpp:8:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:796:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  796 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:810:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  810 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:846:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  846 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:860:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  860 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
cc1plus: all warnings being treated as errors
[16/167] Building CXX object src/server/CMakeFiles/server_objects.dir/DeviceImpl_event.cpp.o
FAILED: [code=1] src/server/CMakeFiles/server_objects.dir/DeviceImpl_event.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/server/CMakeFiles/server_objects.dir/DeviceImpl_event.cpp.o -MF src/server/CMakeFiles/server_obje
cts.dir/DeviceImpl_event.cpp.o.d -o src/server/CMakeFiles/server_objects.dir/DeviceImpl_event.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/DeviceImpl_event.cpp
In file included from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/DeviceImpl_event.cpp:9:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:796:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  796 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:810:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  810 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:846:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  846 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:860:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  860 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
cc1plus: all warnings being treated as errors
[17/167] Building CXX object src/server/CMakeFiles/server_objects.dir/MultiClassAttribute.cpp.o
FAILED: [code=1] src/server/CMakeFiles/server_objects.dir/MultiClassAttribute.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/server/CMakeFiles/server_objects.dir/MultiClassAttribute.cpp.o -MF src/server/CMakeFiles/server_o
bjects.dir/MultiClassAttribute.cpp.o.d -o src/server/CMakeFiles/server_objects.dir/MultiClassAttribute.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/MultiClassAttribute.cpp
In file included from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/MultiClassAttribute.cpp:9:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:796:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  796 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:810:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  810 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:846:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  846 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:860:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  860 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
cc1plus: all warnings being treated as errors
[19/167] Building CXX object src/server/CMakeFiles/server_objects.dir/AttributeInternal_properties.cpp.o
FAILED: [code=1] src/server/CMakeFiles/server_objects.dir/AttributeInternal_properties.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/server/CMakeFiles/server_objects.dir/AttributeInternal_properties.cpp.o -MF src/server/CMakeFiles
/server_objects.dir/AttributeInternal_properties.cpp.o.d -o src/server/CMakeFiles/server_objects.dir/AttributeInternal_properties.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/Attr
ibuteInternal_properties.cpp
In file included from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal_properties.cpp:7:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:796:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  796 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:810:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  810 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:846:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  846 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:860:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  860 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
cc1plus: all warnings being treated as errors
[21/167] Building CXX object src/server/CMakeFiles/server_objects.dir/DeviceImpl.cpp.o
FAILED: [code=1] src/server/CMakeFiles/server_objects.dir/DeviceImpl.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/server/CMakeFiles/server_objects.dir/DeviceImpl.cpp.o -MF src/server/CMakeFiles/server_objects.di
r/DeviceImpl.cpp.o.d -o src/server/CMakeFiles/server_objects.dir/DeviceImpl.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/DeviceImpl.cpp
In file included from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/WAttributeInternal.h:10,
                 from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/FwdAttributeInternal.h:10,
                 from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/DeviceImpl.cpp:9:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:796:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  796 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:810:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  810 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:846:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  846 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:860:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  860 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
cc1plus: all warnings being treated as errors
[22/167] Building CXX object src/server/CMakeFiles/server_objects.dir/AttributeInternal.cpp.o
FAILED: [code=1] src/server/CMakeFiles/server_objects.dir/AttributeInternal.cpp.o 
/usr/bin/c++ -DHAVE_ABSEIL -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include -I/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/build/tri/src/include 
-Wshadow -Wall -Wextra -Wformat -Werror=format-security -pedantic -Og -g -g -std=c++17 -Werror -fPIC -MD -MT src/server/CMakeFiles/server_objects.dir/AttributeInternal.cpp.o -MF src/server/CMakeFiles/server_obj
ects.dir/AttributeInternal.cpp.o.d -o src/server/CMakeFiles/server_objects.dir/AttributeInternal.cpp.o -c /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal.cpp
In file included from /home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal.cpp:7:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:796:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  796 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, time_t, Tango::AttrQu
ality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:810:52: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  810 |         T *p_data, time_t time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                 ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:846:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  846 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h: In member function ‘void Tango::AttributeInternal::set_value_date_quality(T*, const Tango::TangoTim
estamp&, Tango::AttrQuality, long int, long int, bool)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:860:67: error: declaration of ‘quality’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shad
ow]
  860 |         T *p_data, const TangoTimestamp &time, Tango::AttrQuality quality, long x = 1, long y = 0, bool rel = false)
      |                                                ~~~~~~~~~~~~~~~~~~~^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:1414:24: note: shadowed declaration is here
 1414 |     Tango::AttrQuality quality{Tango::ATTR_VALID};
      |                        ^~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal.cpp: In member function ‘void Tango::AttributeInternal::avns_in_att(const std::string&, bool&, std::string&)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal.cpp:7015:56: error: declaration of ‘d_name’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shadow]
 7015 | void AttributeInternal::avns_in_att(const std::string &d_name, bool &check_value, std::string &value_str)
      |                                     ~~~~~~~~~~~~~~~~~~~^~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:2719:17: note: shadowed declaration is here
 2719 |     std::string d_name;                      // The device name
      |                 ^~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal.cpp: In member function ‘void Tango::AttributeInternal::delete_startup_exception(std::string, std::string, bool&, std::map<st
d::__cxx11::basic_string<char>, Tango::DevFailed>&)’:
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal.cpp:7040:91: error: declaration of ‘startup_exceptions’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shadow]
 7040 |                                                  std::map<std::string, Tango::DevFailed> &startup_exceptions)
      |                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:2735:38: note: shadowed declaration is here
 2735 |     std::map<std::string, DevFailed> startup_exceptions; // Map containing exceptions related to attribute
      |                                      ^~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal.cpp:7039:56: error: declaration of ‘check_startup_exceptions’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shadow]
 7039 |                                                  bool &check_startup_exceptions,
      |                                                  ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:2737:10: note: shadowed declaration is here
 2737 |     bool check_startup_exceptions{
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/server/AttributeInternal.cpp:7062:32: error: declaration of ‘dev’ shadows a member of ‘Tango::AttributeInternal’ [-Werror=shadow]
 7062 |             Tango::DeviceImpl *dev = get_att_device();
      |                                ^~~
/home/tri/osl/tango/cppTango.git/review/pimpl_Attribute/src/include/tango/internal/server/AttributeInternal.h:2720:17: note: shadowed declaration is here
 2720 |     DeviceImpl *dev{nullptr};                // The device object
      |                 ^~~
cc1plus: all warnings being treated as errors
ninja: build stopped: subcommand failed.

Also, there are some shadow warnings there...

  • 63cf08fb (*Attribute.{h,cpp}: Rename from *AttributeFacade.{h,cpp}, 2026-02-13)

Okay.

  • 36dd6e1a (EventSupplier: move it to internal headers., 2025-11-11)

Nice.

  • a0fc9a03 (*Attribute: fix inheritance with pimpl, 2026-03-18)

Good. We could probably get away with doing the cast to T::Impl * in the generic template, rather than having to provide specialisations, but your way is safer I guess.

tag:gitlab.com,2026-03-20:5226440047 Benjamin Bertrand commented on merge request !38 at tango-controls / gitlab-ci-templates 2026-03-20T13:48:57Z beenje Benjamin Bertrand

@t-b should we merge?