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

Поиск:

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


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


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

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



55 до 1000 осталось  smile ну и наговорили smile


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


pattern`щик
****


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

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



Цитата(mes @  16.12.2010,  18:58 Найти цитируемый пост)
DY_CLASS(name) (
  (1,  mtd1,  (arg1, arg2),    { action })
  (2,  mtd2,  (arg1),          { action })
  (3,  mtd3,  (arg1, arg2),    { action }) 
)

тут, 1,2,3 - это ID`ы? зачем их руками нумеровать? препроцессор это сделает лучше;)
mtd1,mtd2,mtd3 - это имена методов в реализации?
с аргументами понятно. это список типов.
action - это что?

Добавлено через 34 секунды
Цитата(mes @  16.12.2010,  19:37 Найти цитируемый пост)
55 до 1000 осталось

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


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


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

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



Цитата(boostcoder @  16.12.2010,  18:43 Найти цитируемый пост)
тут, 1,2,3 - это ID`ы? зачем их руками нумеровать? препроцессор это сделает лучше;)

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

Добавлено через 1 минуту и 15 секунд
action - тело инвокера - вызов реального метода/методов..

Добавлено через 5 минут и 12 секунд
Цитата(boostcoder @  16.12.2010,  18:43 Найти цитируемый пост)
mtd1,mtd2,mtd3 - это имена методов в реализации?

нет.. это имена ди_методов.. по которым будет возбуждаться импульс..

Добавлено через 5 минут и 40 секунд
имена методов реализации предполагаются в action.. 


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


pattern`щик
****


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

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



Цитата(mes @  16.12.2010,  19:53 Найти цитируемый пост)
ну значит классу надо указывать диапазон допустимых значений..
так как в одном приложении может быть определено несколько ди_классов. и значения их методов не должны пересекаться..

для генерации ID`ов, есть два способа:
1. простой. используя предопределенный макрос __COUNTER__
2. сложный. используя препроцессорную итерацию.

недостатки:
1. невозможность влиять на  генерацию номеров. начало от нуля, с инкрементом на единицу при каждом обращении к макросу.
2. гиморно.

Это сообщение отредактировал(а) boostcoder - 16.12.2010, 20:08
PM WWW   Вверх
mes
Дата 16.12.2010, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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

Добавлено через 5 минут и 10 секунд
хотя для начала не заморачивайтесь.. сделайте набросок.. а потом его уже до ума доводить все равно придется.. 


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


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


pattern`щик
****


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

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



Цитата(mes @  16.12.2010,  20:12 Найти цитируемый пост)
можно определять стартовый енум в ди_классе,  а каждый ди_метод будет прибавлять его значение , к препроцессорному каунтеру.. 

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


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


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

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



также можно и конечный ид определить в ди_классе, а в ди_методе поставить ассерт..



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


pattern`щик
****


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

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



и еще один вопрос..
такая декларация, что должна сгенерить в итоге? напишите пожалуйста рабочий код smile 
Код

CLASS_BEGIN(test)
   CALL(on_login, int, const std::string&, {real_on_login})
   CALL(on_quit, const std::string&, {real_on_quit})
CLASS_END()

кстати, как Вам такой синтаксис?

Добавлено через 1 минуту и 3 секунды
Цитата(mes @  16.12.2010,  19:53 Найти цитируемый пост)
action - тело инвокера - вызов реального метода/методов..

не понял..
если тут указывается имя реального метода, тогда и аргументы ему нужно подставлять. так?

Добавлено через 2 минуты и 42 секунды
кстати, возвращаемый тип забыли smile 
Код

CLASS_BEGIN(test)
   CALL(bool, on_login, int, const std::string&, {real_on_login})
   CALL(void, on_quit, const std::string&, {real_on_quit})
CLASS_END()

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


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


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

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



Цитата(boostcoder @  16.12.2010,  19:40 Найти цитируемый пост)
кстати, возвращаемый тип забыли  

не забыли.. -  void

Добавлено через 20 секунд
Цитата(boostcoder @  16.12.2010,  19:40 Найти цитируемый пост)
не понял..
если тут указывается имя реального метода, тогда и аргументы ему нужно подставлять. так?

да.. 


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


pattern`щик
****


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

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



Цитата(mes @  16.12.2010,  21:25 Найти цитируемый пост)
да..  

понял.

а законченный примерчик того, что должно быть сгенеренно для приведенной мною декларации, напишите? smile 
PM WWW   Вверх
mes
Дата 16.12.2010, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  16.12.2010,  19:40 Найти цитируемый пост)
что должна сгенерить в итоге?

то что у Вас в CALL должна перекликаться с этим :
Код

struct  $dy_method {
   enum { id = $id }
   typedef void (fn_t)($args_list);
  
   void invoke (That& that, $args_list ) 
   ${
         that.real_method (args);
    }

}

$ - возле ключевых моментов... 

можно и по другому,например, вместо актион имя метода, но тогда теряется часть свободы.. 

в общем для начала представьте что нет у Вас дисколи, и средства языка позволяют написать такой класс, каждый метод которого будет иметь определенный уникальный ИД.. 

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


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


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


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

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



Цитата(boostcoder @  16.12.2010,  19:40 Найти цитируемый пост)
 CALL


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

Добавлено через 5 минут и 44 секунды
Цитата(boostcoder @  16.12.2010,  20:29 Найти цитируемый пост)
а законченный примерчик того, 

я чего то не придал изначально этим словам значения.. сейчас понял.. 


Это сообщение отредактировал(а) mes - 16.12.2010, 21:52


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


pattern`щик
****


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

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



Цитата(mes @  16.12.2010,  21:51 Найти цитируемый пост)
это макрос ?. тогда желательно изначально уменьшить шанс конфликтов, выбирая наиболее редко используемое..
CALL занимать в данном контексте нехорошо.. 

согласен.
METHOD ?
PM WWW   Вверх
mes
Дата 16.12.2010, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



чего то рано мы на препроцессор вышли.. то Вы торопились, теперь я сам сбился smile
просто хотелось видеть что получается, чтоб знать что лишнее..

Добавлено через 35 секунд
Цитата(boostcoder @  16.12.2010,  20:58 Найти цитируемый пост)
METHOD 

а чем приставка DY не устраивает ?

Добавлено через 4 минуты и 21 секунду
то что в простанстве cts и cts_mts должно быть внесте в одной структуре..
и в каждой структуре еще тип инвок-функции  (желательно без  That, но и с ним пойдет.. )
и мне еще кажется препроцессорить нужно не структуру.. а заготовить шаблоны из которых собирать структуру..
я сейчас пока только отрывками возле компа., как освобожусь покажу, если к этому времени еще ничего не выйдет smile 



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


pattern`щик
****


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

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



Цитата(mes @  16.12.2010,  21:59 Найти цитируемый пост)
а чем приставка DY не устраивает ?

всем устраивает. порешили, DY_CLASS и DY_METHOD ?

Добавлено через 2 минуты и 1 секунду
Цитата(mes @  16.12.2010,  21:59 Найти цитируемый пост)
чего то рано мы на препроцессор вышли.. то Вы торопились, теперь я сам сбился 
просто хотелось видеть что получается, чтоб знать что лишнее..

пока я буду писать метагенератор, Вы можете заниматься другим. продуктивнее все же.
PM 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.0754 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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