Рефакторинг возвращаемого типа с использованием преобразователя clangC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Рефакторинг возвращаемого типа с использованием преобразователя clang

Сообщение Anonymous »

Предположим, что используется следующая функция:

Код: Выделить всё

const std::vector& Foo::bar();
Я бы хотел его реорганизовать:

Код: Выделить всё

const std::vector& Foo::bar();
И затем я хотел бы провести рефакторинг всех вариантов использования, которые перебирают этот вектор, чтобы использовать точку () вместо стрелки (). Также мне следует удалить все разыменования, если они были в исходном коде. Например:

Код: Выделить всё

Foo foo;
for (const auto& b : foo.bar()) {
b->xyz();
baz(*b);
}
foo.bar()[0]->xyz();
должен быть преобразован в:

Код: Выделить всё

Foo foo;
for (const auto& b : foo.bar()) {
b.xyz();
baz(b);
}
foo.bar()[0].xyz();
Я хотел бы попробовать для этого преобразователь clang, и я изучаю https://clang.llvm.org/docs/LibASTMatch ... rence.html, но в документации этого нет. сделать вещи очень очевидными, поэтому я обращаюсь к более широкому сообществу.
По крайней мере, если меня разблокируют в отношении того, как отфильтровывать вызовы методов нужного типа, это будет будем очень признательны.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ransformer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»