I think it would be better to avoid a monolithic header, and split this one into several ones. Please take a look at the existing convention for copyright and header guards.