![]() |
|
Модераторы: Daevaorn Страницы: (10) Все « Первая ... 4 5 [6] 7 8 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]()
|
|
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Угу, только не объект (в понимании С++), а просто таблицы. Т.е. глобальный массив констант. Код, генерируемый gcc для RTTIEx не должен содержать исполняемого кода (т.е. неиспользуемая RTTIEx не должна вызывать накладных расходов run-time) Яркий пример - уже упомянутые мною таблицы RTTI (смотреть в генерируемом ассемблере и в сорцах gcc), и таблицы для поддержки эксепшенов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Вы меня переоцениваете Добавлено через 2 минуты и 33 секунды понятно. |
|||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
ИМХО не обязательно, можно сделать что-то типа class-loader'а, который бы в рантайме по мере использования классов создавал бы нужную информацию... Хотя это уже будет не С++... -------------------- ![]() |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
не нужно рантайм нагружать тем, что можно сделать и без него. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а почему не ложить в вектор указатели на void? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
потярел нить, откуда появился этот код, но полагаю, потому что void * в отличии any не копиэйбл, а также не известно как его удалять.. |
|||
|
||||
| boostcoder |
|
||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
еще несколько вопросов.
как я понимаю, RTTIEX должен быть таким:
где type - enum. так? тогда вопрос: enum нужно генерить для всех типов в единице трансляции? Добавлено через 1 минуту и 56 секунд
не понял... кот от xvr`а:
|
||||||
|
|||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Можно. А еще можно посмотреть интерфейсы в java.lang.reflection и скопировать идеи оттуда (насколько это будет возможно) В принципе можно. Но тогда на вызывающей стороне придется создавать все параметры в виде явных переменных и брать на них указатели. Кроме того, передавая значения в некой обвертке (AnyValue) можно существенно упростить жизнь вызывающей стороне, если дать возможность объекту Class проводить неявные преобразования аргументов. Например - если функция принимает параметр целочисленного типа, то вызывающая сторона может задать нечто типа long long и не вдаваться в подробности о конкретных размерах аргумента. Типа такого. Для составных типов (структур, классов, массивов, функций и т.п.) тут еще должны присутствовать такие же записи для всех вложенных элементах (поля структур, аргументы функций и пр)
Не enum'ы а инстансы rtti_ex_. Да, для всех. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я ж не знал понял. ага. не понял... |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
xvr, меня тут мысль посетила...
вот AST генерится на основании кода единицы трансляции. значит в нем(в AST) все связанно. а если я в этот AST добавлю свой подAST, то, прежний AST по идее станет незаконченным/неправильным/испорченным. так? |
|||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Ну это думаю смотря как добавлять... AST это просто дерево, построенное из исходников, на основе которого генерируется промежуточный или машинный код, так что по сути эффект добавления чего-то в AST может быть эквивалентен эффекту добавления чего-то в исходники перед компиляцией... -------------------- ![]() |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Главное изменить AST до прохода всяческих оптимизаций, тогда вероятность ошибок уменьшится...
А вообще на тему компиляции могу посоветовать почитать что-то типа этого: http://www.proklondike.com/books/thobshee/compiler2.html -------------------- ![]() |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я его и изменяю сразу после построения. еще вопрос. допустим юзер хочет создать объект в неймспейсе:
как быть? получается что таблицу типов нужно генерить не в виде простого массива.. это должен быть массив cons`ов ? я правильно мыслю? |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |