Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаленный вызов. детали, реализация, архитектура, у темы новое название! 
:(
    Опции темы
mes
Дата 10.12.2010, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  10.12.2010,  00:13 Найти цитируемый пост)
с Вами сложно спорить. это затягивается на несколько страниц

зато приносит результаты.. например Вы все таки убедили, раскладывать пакет на аргументы..
для библиотеки хоть это несет сложности, зато действительно открывается больше возможностей по управлению smile

Добавлено через 3 минуты и 28 секунд
кстати как у Вас там дела ? на каком этапе разбора ? 



--------------------
PM MAIL WWW   Вверх
mes
Дата 10.12.2010, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



с первой частью проблемы (расширить тип функции на один параметр) вроде бы разобрался..
теперь бинд на очереди..


--------------------
PM MAIL WWW   Вверх
mes
Дата 10.12.2010, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(mes @  10.12.2010,  00:55 Найти цитируемый пост)
расширить тип функции на один параметр


Код

template<typename F> 
struct add_fn_arg
{
   template<typename T>
   struct apply
   {
     typedef 
       typename boost::function_types::function_type <
         typename boost::mpl::push_front <
           typename boost::mpl::push_front <
             typename boost::function_types::parameter_types<F>::type, T > :: type
         , typename boost::function_types::result_type<F>::type > :: type  
       > ::type type;     
   };
};

применение :
Код

void test3( float, int, int) {}
typedef void (src_fn_t)(int, int);
std::function<add_fn_arg<src_fn_t>::apply<float>::type > fn = &test3;




--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 10.12.2010, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  10.12.2010,  01:20 Найти цитируемый пост)
кстати как у Вас там дела ? на каком этапе разбора ? 

вроде определился со способом регистрации и с meta_proxy. теперь нужно рефакторинг сделать, чтоб повыкидывать лишнее.
так же, есть мысль реализовать метагенератор снова на препроцессоре, т.к. от метагенератора сейчас мало что требуется.

завтра покажу.

Добавлено через 1 минуту и 46 секунд
Цитата(mes @ 10.12.2010,  02:32)
Цитата(mes @  10.12.2010,  00:55 Найти цитируемый пост)
расширить тип функции на один параметр


Код

template<typename F> 
struct add_fn_arg
{
   template<typename T>
   struct apply
   {
     typedef 
       typename boost::function_types::function_type <
         typename boost::mpl::push_front <
           typename boost::mpl::push_front <
             typename boost::function_types::parameter_types<F>::type, T > :: type
         , typename boost::function_types::result_type<F>::type > :: type  
       > ::type type;     
   };
};

применение :
Код

void test3( float, int, int) {}
typedef void (src_fn_t)(int, int);
std::function<add_fn_arg<src_fn_t>::apply<float>::type > fn = &test3;

хм.. симпатично смотрится smile 
PM WWW   Вверх
mes
Дата 10.12.2010, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  10.12.2010,  01:33 Найти цитируемый пост)
 есть мысль реализовать метагенератор снова на препроцессоре, т.к. от метагенератора сейчас мало что требуется.

подождите пока с метагенератором.. еще рано.. к нему подойдем после текущей задачи..

Добавлено через 47 секунд
Цитата(boostcoder @  10.12.2010,  01:33 Найти цитируемый пост)
вроде определился со способом регистрации и с meta_proxy

с этим тоже пока..

Добавлено через 1 минуту и 48 секунд
Цитата(boostcoder @  10.12.2010,  01:33 Найти цитируемый пост)
теперь нужно рефакторинг сделать, чтоб повыкидывать лишнее

вот это в самый раз.. только сильно не заплывайте.. 
предлагаю высказать планы по рефакторингу, если что внесу предложения smile

Добавлено через 5 минут и 8 секунд
Цитата(boostcoder @  10.12.2010,  01:33 Найти цитируемый пост)
хм.. симпатично смотрится   

спс smile


--------------------
PM MAIL WWW   Вверх
mes
Дата 10.12.2010, 03:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



вторую задачу сформулировал :
для http://liveworkspace.org/code/f97974c3dbef...a179cbccb2494e7
в 52 строчке нужно автоматизировать подстановку нужного кол-ва плейсхолдеров, в зависимости от P::invoker_t;

думать буду завтра smile


--------------------
PM MAIL WWW   Вверх
mes
Дата 10.12.2010, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



пока набросал такую схемку :
http://liveworkspace.org/code/92fa41c1689f...2b40f286c4a6eec
теперь осталось ее допилить 
smile

Это сообщение отредактировал(а) mes - 10.12.2010, 13:27


--------------------
PM MAIL WWW   Вверх
mes
Дата 10.12.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



реализация передачи аргументов пакета обработчику зависит в плотную от строения пакета..
нам не важна как будет выполнена эта часть, так как реализация скрыта от пользователя, в отличии от строения пакета..
поэтому сейчас нужно уделить внимание именно последнему, благо хоть теперь информации об использовании пакета, можно сказать, достаточно... 

итак что нам требуется от пакета ?
прежде всего dytype_id; - для начала будет рассматривать плоскую модель иерархии,  т.е. каждый пользовательский класс является финальным..

во вторых удобное и красивое  создание пакета, с передачей ему параметров.. - т.е возможность наличия нескольких конструкторов/креаторов.

в третьих способ доступа: структура, кортеж, или accept(invoker_t)..
1й вариант не удобен для библиотеки, 2й перекликается с сериализаций, а 3й скорей всего будет неудобен пользователю для описания..

ну и конечно сериализация/десериализация, что пересекается со вторым, так как требует наличие конструктора по умолчанию..

для начала набросок :
Код

struct some_packet
{
     enum { id = some_id };

     std::tuple<int, float> args;
     
     void serialize (..);
};


 
boostcoder, по этому поводу жду критики предложений или вопросов..
smile


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 10.12.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



mes, добрый день.
только освободился. сейчас буду разбираться.
PM WWW   Вверх
mes
Дата 10.12.2010, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  10.12.2010,  15:46 Найти цитируемый пост)
сейчас буду разбираться. 

уточню еще раз, на всякий случай, что нас интересует только, то что непосредственно связано с описанием пакета.. 
т.е. пункты упомянутые постом выше.. 
smile

Это сообщение отредактировал(а) mes - 10.12.2010, 17:06


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 10.12.2010, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



понял smile
PM WWW   Вверх
mes
Дата 10.12.2010, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



завел на svn еще один каталог -  dy  - типо чистовика на текущий момент, чтоб не путаться со старыми...



--------------------
PM MAIL WWW   Вверх
mes
Дата 10.12.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



кстати Вы сталкивались с Boost Parameter Library ?
мож что вкусненькое оттуда подойдет для текущей задачи (пакета)..



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 10.12.2010, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  10.12.2010,  17:48 Найти цитируемый пост)
завел на svn еще один каталог -  dy  - типо чистовика на текущий момент, чтоб не путаться со старыми...

вижу.

Цитата(mes @  10.12.2010,  18:37 Найти цитируемый пост)
кстати Вы сталкивались с Boost Parameter Library ?

не использовал но видел.

Цитата(mes @  10.12.2010,  18:37 Найти цитируемый пост)
мож что вкусненькое оттуда подойдет для текущей задачи (пакета)..

например?
PM WWW   Вверх
mes
Дата 10.12.2010, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  10.12.2010,  18:08 Найти цитируемый пост)
например? 

это как раз хотел от Вас услышать smile
я помню Вы ее советовали, подумал, что знакомы 
smile

Добавлено через 1 минуту и 21 секунду
вот и тема на форуме поднималась : http://forum.vingrad.ru/act-ST/f-92/t-254418.html
но почему то осталось без ответа..



--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0793 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.