История изменений
Исправление pon4ik, (текущая версия) :
Изич делается заменой по регулярке
Да, но я вспомнил ещё нюанс(хотя оно тоже регулярками делается частично, построчно в зависимости от типа комментария) - нужно было ещё сконвертировать doxygen в .Net формат доки не помню как называется.
Я не знаю, что оно делает, но подозреваю, что примерно то же, что и замена по регулярке.
Не, это я просто упростил немного, по факту нужно было ведь ещё параметры конвертировать, аттрибуты всякие проставлять. В общем поверь на слово - если бы оно просто решалось бы регулярками, оно бы так и решалось. Частично - регулярками оно и решалось, но их применение было как раз включено в макросы. Т.е. один макрос одну или несколько регулярок + ряд телодвижений которые не получается ей выразить делает, второй другую и всё в зависимости от контекста(под каждый контекст свой макрос). Такой себе - второй набор кейбиндингов который не затирает основной и заточен под конкретную задачу и при этом супер быстро делается на коленке.
Просто попробуй написать одну или несколько регулярок и потом последовательно их в нужном порядке применить(в своём любимом текстовом редакторе без макросов) чтобы сконвертировать что-то в духе:
uint64_t Hell::welcome_to_hell(const std::string& name) const {
std::cout << "Welcome:" << name << std::endl;
return 666u;
}
в
[cpubound=false]
System::Uint64 Hell::welcome(System::String^ name) const {
return _this->welcome_to_hell(convert(name));
}
Потом сравни насколько быстрее это переписать руками, чем переключаться между файлом с кодом и с регулярками и искать каждый раз нужную для конкретной ситуации когда вариантов таких функций - много. А с макросами это делается в пару комбинаций уровня @a, @s, @c, 1@p
(примерно столько раз я бы нажал для этой функи наверное).
Исправление pon4ik, :
Изич делается заменой по регулярке
Да, но я вспомнил ещё нюанс(хотя оно тоже регулярками делается частично, построчно в зависимости от типа комментария) - нужно было ещё сконвертировать doxygen в .Net формат доки не помню как называется.
Я не знаю, что оно делает, но подозреваю, что примерно то же, что и замена по регулярке.
Не, это я просто упростил немного, по факту нужно было ведь ещё параметры конвертировать, аттрибуты всякие проставлять. В общем поверь на слово - если бы оно просто решалось бы регулярками, оно бы так и решалось. Частично - регулярками оно и решалось, но их применение было как раз включено в макросы. Т.е. один макрос одну или несколько регулярок + ряд телодвижений которые не получается ей выразить делает, второй другую и всё в зависимости от контекста(под каждый контекст свой макрос). Такой себе - второй набор кейбиндингов который не затирает основной и заточен под конкретную задачу и при этом супер быстро делается на коленке.
Просто попробуй написать одну или несколько регулярок и потом последовательно их в нужном порядке применить чтобы сконвертировать что-то в духе:
uint64_t Hell::welcome_to_hell(const std::string& name) const {
std::cout << "Welcome:" << name << std::endl;
return 666u;
}
в
[cpubound=false]
System::Uint64 Hell::welcome(System::String^ name) const {
return _this->welcome_to_hell(convert(name));
}
Потом сравни насколько быстрее это переписать руками, чем переключаться между файлом с кодом и с регулярками и искать каждый раз нужную для конкретной ситуации когда вариантов таких функций - много. А с макросами это делается в пару комбинаций уровня @a, @s, @c, 1@p
(примерно столько раз я бы нажал для этой функи наверное).
Исходная версия pon4ik, :
Изич делается заменой по регулярке
Да, но я вспомнил ещё нюанс(хотя оно тоже регулярками делается частично, построчно в зависимости от типа комментария) - нужно было ещё сконвертировать doxygen в .Net формат доки не помню как называется.
Я не знаю, что оно делает, но подозреваю, что примерно то же, что и замена по регулярке.
Не, это я просто упростил немного, по факту нужно было ведь ещё параметры конвертировать, аттрибуты всякие проставлять. В общем поверь на слово - если бы оно просто решалось бы регулярками, оно бы так и решалось. Частично - регулярками оно и решалось, но их применение было как раз включено в макросы. Т.е. один макрос одну или несколько регулярок + ряд телодвижений которые не получается ей выразить делает, второй другую и всё в зависимости от контекста(под каждый контекст свой макрос). Такой себе - второй набор кейбиндингов который не затирает основной и заточен под конкретную задачу и при этом супер быстро делается на коленке.
Просто попробуй написать одну или несколько регулярок и потом последовательно их в нужном порядке применить чтобы сконвертировать что-то в духе:
uint64_t Hell::welcome_to_hell(const std::string& name) const {
std::cout << "Welcome:" << name << std::endl;
return 666u;
}
в
[cpubound=false]
System::Uint64 Hell::welcome(System::String^ name) const {
return _this->welcome_to_hell(convert(name));
}
Потом сравни насколько быстрее это переписать руками, чем переключаться между файлом с кодом и с регулярками и искать каждый раз нужную для конкретной ситуации когда вариантов таких функций - много. А с макросами это делается в пару комбинаций уровня a, s,
c, 1@p (примерно столько раз я бы нажал для этой функи наверное).