LINUX.ORG.RU

История изменений

Исправление 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 (примерно столько раз я бы нажал для этой функи наверное).