13a1d8b97SPatrick Williamsauto ${interface.classname}::${property.camelCase}() const -> 23a1d8b97SPatrick Williams ${property.cppTypeParam(interface.name)} 33a1d8b97SPatrick Williams{ 43a1d8b97SPatrick Williams return _${property.camelCase}; 53a1d8b97SPatrick Williams} 63a1d8b97SPatrick Williams 73a1d8b97SPatrick Williamsint ${interface.classname}::_callback_get_${property.name}( 83a1d8b97SPatrick Williams sd_bus* /*bus*/, const char* /*path*/, const char* /*interface*/, 93a1d8b97SPatrick Williams const char* /*property*/, sd_bus_message* reply, void* context, 103a1d8b97SPatrick Williams sd_bus_error* error) 113a1d8b97SPatrick Williams{ 123a1d8b97SPatrick Williams auto o = static_cast<${interface.classname}*>(context); 133a1d8b97SPatrick Williams 143a1d8b97SPatrick Williams try 153a1d8b97SPatrick Williams { 163a1d8b97SPatrick Williams return sdbusplus::sdbuspp::property_callback( 173a1d8b97SPatrick Williams reply, o->get_bus().getInterface(), error, 183a1d8b97SPatrick Williams std::function( 193a1d8b97SPatrick Williams [=]() 203a1d8b97SPatrick Williams { 213a1d8b97SPatrick Williams return o->${property.camelCase}(); 223a1d8b97SPatrick Williams } 233a1d8b97SPatrick Williams )); 243a1d8b97SPatrick Williams } 253a1d8b97SPatrick Williams % for e in property.errors: 263a1d8b97SPatrick Williams catch(const ${interface.errorNamespacedClass(e)}& e) 273a1d8b97SPatrick Williams { 28*a4bfefdeSPatrick Williams return e.set_error(o->get_bus().getInterface(), error); 293a1d8b97SPatrick Williams } 303a1d8b97SPatrick Williams % endfor 313a1d8b97SPatrick Williams catch (const std::exception&) 323a1d8b97SPatrick Williams { 333a1d8b97SPatrick Williams o->get_bus().set_current_exception(std::current_exception()); 343a1d8b97SPatrick Williams return 1; 353a1d8b97SPatrick Williams } 363a1d8b97SPatrick Williams} 373a1d8b97SPatrick Williams 383a1d8b97SPatrick Williamsauto ${interface.classname}::${property.camelCase}(${property.cppTypeParam(interface.name)} value, 393a1d8b97SPatrick Williams bool skipSignal) -> 403a1d8b97SPatrick Williams ${property.cppTypeParam(interface.name)} 413a1d8b97SPatrick Williams{ 423a1d8b97SPatrick Williams if (_${property.camelCase} != value) 433a1d8b97SPatrick Williams { 443a1d8b97SPatrick Williams _${property.camelCase} = value; 453a1d8b97SPatrick Williams if (!skipSignal) 463a1d8b97SPatrick Williams { 473a1d8b97SPatrick Williams _${interface.joinedName("_", "interface")}.property_changed("${property.name}"); 483a1d8b97SPatrick Williams } 493a1d8b97SPatrick Williams } 503a1d8b97SPatrick Williams 513a1d8b97SPatrick Williams return _${property.camelCase}; 523a1d8b97SPatrick Williams} 533a1d8b97SPatrick Williams 543a1d8b97SPatrick Williamsauto ${interface.classname}::${property.camelCase}(${property.cppTypeParam(interface.name)} val) -> 553a1d8b97SPatrick Williams ${property.cppTypeParam(interface.name)} 563a1d8b97SPatrick Williams{ 573a1d8b97SPatrick Williams return ${property.camelCase}(val, false); 583a1d8b97SPatrick Williams} 593a1d8b97SPatrick Williams 603a1d8b97SPatrick Williams% if 'const' not in property.flags and 'readonly' not in property.flags: 613a1d8b97SPatrick Williamsint ${interface.classname}::_callback_set_${property.name}( 623a1d8b97SPatrick Williams sd_bus* /*bus*/, const char* /*path*/, const char* /*interface*/, 633a1d8b97SPatrick Williams const char* /*property*/, sd_bus_message* value, void* context, 643a1d8b97SPatrick Williams sd_bus_error* error) 653a1d8b97SPatrick Williams{ 663a1d8b97SPatrick Williams auto o = static_cast<${interface.classname}*>(context); 673a1d8b97SPatrick Williams 683a1d8b97SPatrick Williams try 693a1d8b97SPatrick Williams { 703a1d8b97SPatrick Williams return sdbusplus::sdbuspp::property_callback( 713a1d8b97SPatrick Williams value, o->get_bus().getInterface(), error, 723a1d8b97SPatrick Williams std::function( 733a1d8b97SPatrick Williams [=](${property.cppTypeParam(interface.name)}&& arg) 743a1d8b97SPatrick Williams { 753a1d8b97SPatrick Williams o->${property.camelCase}(std::move(arg)); 763a1d8b97SPatrick Williams } 773a1d8b97SPatrick Williams )); 783a1d8b97SPatrick Williams } 793a1d8b97SPatrick Williams % for e in property.errors: 803a1d8b97SPatrick Williams catch(const ${interface.errorNamespacedClass(e)}& e) 813a1d8b97SPatrick Williams { 82*a4bfefdeSPatrick Williams return e.set_error(o->get_bus().getInterface(), error); 833a1d8b97SPatrick Williams } 843a1d8b97SPatrick Williams % endfor 853a1d8b97SPatrick Williams catch (const std::exception&) 863a1d8b97SPatrick Williams { 873a1d8b97SPatrick Williams o->get_bus().set_current_exception(std::current_exception()); 883a1d8b97SPatrick Williams return 1; 893a1d8b97SPatrick Williams } 903a1d8b97SPatrick Williams} 913a1d8b97SPatrick Williams% endif 923a1d8b97SPatrick Williams 933a1d8b97SPatrick Williamsnamespace details 943a1d8b97SPatrick Williams{ 953a1d8b97SPatrick Williamsnamespace ${interface.classname} 963a1d8b97SPatrick Williams{ 973a1d8b97SPatrick Williamsstatic const auto _property_${property.name} = 983a1d8b97SPatrick Williams utility::tuple_to_array(message::types::type_id< 993a1d8b97SPatrick Williams ${property.cppTypeParam(interface.name, full=True)}>()); 1003a1d8b97SPatrick Williams} 1013a1d8b97SPatrick Williams} 102