Помнится в свое время у многих возникали вопросы и сомнения по поводу поддержки макросов IDE.
Решил продемонстрировать как резльтат работы этого макроса виден из под VS 2005.
На рисунке:
Сверху — случайно выбранное место где создан экземлпляр фабрики, у него с помощью интелисенса запрошено описание методы.
Снижу, объявление конкретной фабрики (IntelliSenseModeCompilerComponentsFactory) перегружающей исходную астраткную фабику (CompilerComponentsFactory) объявленную в библиотеке (в которой распологается компилятор).
... << RSDN@Home 1.2.0 alpha rev. 637>>
30.01.07 17:56: Перенесено модератором из 'Декларативное программирование' — IT
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>>
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Вопросик можно? Что если строка "Create" в
LCR>формировалась как-нибудь случайно или передавалась в макрос в качестве параметра. Как бы ты тогда узнал о существовании метода?
На абстрактное "если", можно ответить только асбтрактным "это зависит".
У любого макроса есть своя логика и свои соглашения. У этого макроса соглашения такие. У дргого друние.
В приципе интелисенс конечно покажет список сгенерированных методов, но вряд ли на это имеет смысл рассчитывать.
LCR> И как ты узнаёшь о наличии классов, которые сгенерил макрос?
Макрос не "генерит" классов. Он набивает методами имеющися класс. Это должно быть видно из примера. Так объявление:
[AbstractFactory (X[int])]
class Factory { }
добавит к классу Factory по одному виртуальному методу CreateX для каждого конструктора класса X.
Если бы он генерировал класс фарбики, то скорее всего его имя пришлось бы передавать макрусу в качестве параметра.
... << RSDN@Home 1.2.0 alpha rev. 637>>
VladD2,
VD>На абстрактное "если", можно ответить только асбтрактным "это зависит".
VD>У любого макроса есть своя логика и свои соглашения. У этого макроса соглашения такие. У дргого друние.
Я пытаюсь вообразить теоретически наихудший случай.
VD>В приципе интелисенс конечно покажет список сгенерированных методов, но вряд ли на это имеет смысл рассчитывать.
VD>Если бы он генерировал класс фарбики, то скорее всего его имя пришлось бы передавать макрусу в качестве параметра.
Понял, спасибо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Я пытаюсь вообразить теоретически наихудший случай.
Надо брать конкретные случаи, тога можно будет сказать что-то конкретное. А так...
Опиши ситуацию, попробуем вместе подумать как в ней быть.
... << RSDN@Home 1.2.0 alpha rev. 637>>