сопоставителя AST Clang
. Например, в этом коде есть один метод получения и один метод установки для
отчета:
Код: Выделить всё
struct S {
int m_x;
int getX() // getter
{
return m_x;
}
void setX(int x) // setter
{
m_x = x;
}
};
оператор. Тело метода получения должно представлять собой оператор return с возвращаемым
значением члена класса. Тело установщика должно представлять собой оператор назначения
, который присваивает переданный параметр члену класса. (Это
возможно, не достаточно толерантный набор критериев на практике, но меня
удовлетворит это в первом приближении.)
Я обнаружил, что Я могу использовать средство сопоставления cxxMethodDecl, чтобы найти все методы,
но неясно, как копаться в телах или проверять различные
свойства. Ни один из примеров в документации (ссылка выше) не делает этого; самым близким кажется пример:
Код: Выделить всё
cxxConstructorDecl(
isCopyConstructor()
).bind("prepend_explicit")
Код: Выделить всё
isCopyConstructor
сигнатуры? в документации не сказано, что на самом деле делает любой из них),
и нет isSetter или подобного.< /p>
Как написать выражение соответствия, чтобы найти все методы установки и получения
в единице перевода?
Подробнее здесь: https://stackoverflow.com/questions/791 ... t-matchers