[Nemerle] Макрос AbstractFactory - и Интеграция с VS 2005
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.01.07 10:42
Оценка: 24 (3)
Помнится в свое время у многих возникали вопросы и сомнения по поводу поддержки макросов IDE.

Решил продемонстрировать как резльтат работы этого макроса виден из под VS 2005.
На рисунке:
Сверху — случайно выбранное место где создан экземлпляр фабрики, у него с помощью интелисенса запрошено описание методы.
Снижу, объявление конкретной фабрики (IntelliSenseModeCompilerComponentsFactory) перегружающей исходную астраткную фабику (CompilerComponentsFactory) объявленную в библиотеке (в которой распологается компилятор).
... << RSDN@Home 1.2.0 alpha rev. 637>>

30.01.07 17:56: Перенесено модератором из 'Декларативное программирование' — IT
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Nemerle] Макрос AbstractFactory - и Интеграция с VS 200
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 23.01.07 05:33
Оценка:
VladD2,

VD>Помнится в свое время у многих возникали вопросы и сомнения по поводу поддержки макросов IDE.


Вопросик можно? Что если строка "Create" в
                            tb.Define (<[ decl: 
                                ..$attrs $("Create" + returned_name : usesite) [..$gparms] (..$(head.ParametersDeclarations)) : $returned 
                                { 
                                    $nm .[..$gargs] (..$(head.ParametersReferences))
                                } 
                            ]>)

формировалась как-нибудь случайно или передавалась в макрос в качестве параметра. Как бы ты тогда узнал о существовании метода? И как ты узнаёшь о наличии классов, которые сгенерил макрос?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[2]: [Nemerle] Макрос AbstractFactory - и Интеграция с VS
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.01.07 11:25
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Вопросик можно? Что если строка "Create" в

LCR>формировалась как-нибудь случайно или передавалась в макрос в качестве параметра. Как бы ты тогда узнал о существовании метода?

На абстрактное "если", можно ответить только асбтрактным "это зависит".
У любого макроса есть своя логика и свои соглашения. У этого макроса соглашения такие. У дргого друние.

В приципе интелисенс конечно покажет список сгенерированных методов, но вряд ли на это имеет смысл рассчитывать.

LCR> И как ты узнаёшь о наличии классов, которые сгенерил макрос?


Макрос не "генерит" классов. Он набивает методами имеющися класс. Это должно быть видно из примера. Так объявление:
[AbstractFactory (X[int])]
class Factory { }

добавит к классу Factory по одному виртуальному методу CreateX для каждого конструктора класса X.

Если бы он генерировал класс фарбики, то скорее всего его имя пришлось бы передавать макрусу в качестве параметра.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [Nemerle] Макрос AbstractFactory - и Интеграция с VS
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 23.01.07 11:33
Оценка:
VladD2,

VD>На абстрактное "если", можно ответить только асбтрактным "это зависит".

VD>У любого макроса есть своя логика и свои соглашения. У этого макроса соглашения такие. У дргого друние.

Я пытаюсь вообразить теоретически наихудший случай.

VD>В приципе интелисенс конечно покажет список сгенерированных методов, но вряд ли на это имеет смысл рассчитывать.


VD>Если бы он генерировал класс фарбики, то скорее всего его имя пришлось бы передавать макрусу в качестве параметра.


Понял, спасибо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: [Nemerle] Макрос AbstractFactory - и Интеграция с VS
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.01.07 13:57
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Я пытаюсь вообразить теоретически наихудший случай.


Надо брать конкретные случаи, тога можно будет сказать что-то конкретное. А так...
Опиши ситуацию, попробуем вместе подумать как в ней быть.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.