1/^TYPEDEF/s/TYPEDEF \(.*\) \([^ ]*\);$/#if defined(__NEED_\2) \&\& !defined(__DEFINED_\2)\
2typedef \1 \2;\
3#define __DEFINED_\2\
4#endif\
5/
6/^STRUCT/s/STRUCT * \([^ ]*\) \(.*\);$/#if defined(__NEED_struct_\1) \&\& !defined(__DEFINED_struct_\1)\
7struct \1 \2;\
8#define __DEFINED_struct_\1\
9#endif\
10/
11/^UNION/s/UNION * \([^ ]*\) \(.*\);$/#if defined(__NEED_union_\1) \&\& !defined(__DEFINED_union_\1)\
12union \1 \2;\
13#define __DEFINED_union_\1\
14#endif\
15/
16