суббота, 26 октября 2013 г.

[prog.c++] Зафиксирована версия SObjectizer-5.2.1

Версия 5.2.1 фреймворка SObjectizer зафиксирована в svn-репозитории на SourceForge в виде тега.

С момента фиксации версии 5.2.0 в ходе работы над дополнительными библиотеками в ветку 5.2 добавлялись мелкие улучшения, которые оформлялись в виде совсем минорных релизов (таковыми были 5.2.0.1-5.2.0.4). При очередном инкрементальном улучшении ветки 5.2 было решено делать не 5.2.0.5, а 5.2.1, т.к. это изменение затронуло гораздо больше кода, чем все предыдущие.

В версию 5.2.1 добавлены вспомогательные методы so_environment_t::register_agent_as_coop(), которые сокращают объем писанины для, как выяснилось, совсем нередкой ситуации, когда нужно зарегистрировать кооперацию всего из одного агента. Если раньше для этого нужно было писать что-то вроде:

void
init( so_5::rt::so_environment_t & env )
{
   // Creating a cooperation.
   auto coop = env.create_coop( "coop" );

   // Creating and adding agent.
   std::unique_ptr< a_hello_t > agent( new a_hello_t( env ) );
   coop->add_agent( std::move( agent ) );

   // Registering cooperation.
   env.register_coop( std::move( coop ) );
}

То сейчас это можно сделать так:

void
init( so_5::rt::so_environment_t & env )
{
   // Creating agent.
   std::unique_ptr< a_hello_t > agent( new a_hello_t( env ) );
   // Registering cooperation.
   env.register_agent_as_coop( "coop", std::move( agent ) );
}

Или даже вот так:

void
init( so_5::rt::so_environment_t & env )
{
   // Creating and registering a cooperation.
   env.register_agent_as_coop( "coop"new a_hello_t( env ) );
}

Сейчас сам удивляюсь, почему мы раньше не додумались до такого простого (буквально в три строчки) вспомогательного метода. Вероятно, все это объясняется замечательным высказыванием: простота не предшествует сложности, а следует за ней :)

Отправить комментарий