У меня есть сценарий использования, когда я пытаюсь определить группу структур в различных заголовочных файлах
Например, я хочу преобразовать это:
struct Foo_t
{
uint8_t one
uint8_t two;
uint8_t three;
};
К этому:
typedef struct
{
uint8_t one
uint8_t two;
uint8_t three;
} Foo_t;
На высоком уровне я хочу использовать утилиту, такую как sed, awk или perl, для:
- Найти все строки, начинающиеся с "struct"
- Запомните тег struct, который следует в приведенном выше примере Foo_t
- Найдите первую фигурную скобку "{"
- Пропускать n новых строк до первого появления закрывающей скобки
"}"
- Вставить тег структуры (Foo_t) или что-то еще
называется
- Введите точку с запятой, чтобы завершить определение структуры
К сожалению, самое дальнее, что у меня есть, это:
find . -regextype egrep -path ./dont_touch -prune -o -name "*.h" -print0 | xargs -0 sed -i 's/struct* /typedef struct /g;'
Этот подход явно не работает, но это, по крайней мере, отправная точка для меня.
Любая помощь будет принята с благодарностью.
Спасибо!
Обновление:
Примером данных испытаний будет:
test.h
struct Foo_t
{
uint8_t one;
uint8_t two;
uint8_t three;
uint8_t four;
};
struct Bar_t
{
float_t one;
float_t two;
};
struct Baz_t {
float_t one;
float_t two;
};