On Mon, 2008-04-28 at 11:17 +1200, Amos Jeffries wrote: > > 1) config.h includes the autogenerated configuration file and does > > virtually nothing else > > > > 2) squid.h includes config.h and does virtually nothing else. > > > > Right. To be blunt and as simple as possible. > > Where does "squid_types.h" get included when every file in squid needs > "uint32_t" ??
squid.h and only if every source file in squid really needs it. > THEN, where does "squid_mswin.h" get included for the same type > definition in windows? squid_types.h because the code should be platform-independent to the extent possible and should not care which platform it is being compiled on. OS-specific hacks should be pushed as deep down as possible so that almost nobody has to care about them. > (NP: mswin (rightly!) setups more than types...) Not sure what you mean, but we should have one .h file per type (or "concept" or related group of types). > Methinks squid_mswin.h goes in config.h and squid_types.h goes in > squid_mswin.h (and other OS-specifics) I think that would be wrong (but not a big deal). Universal type or concept trumps OS-specific hacks. The main code that needs that universal type should include the corresponding "universal" header (like squid_types.h). That header may include OS-specific hacks as needed. > > 3) any other .h file must be self-contained but may assume that squid.h > > was included before that .h file. > > That 'but' is one thing we are trying to do away with. It's presence in > FreeBSD and other sources has been a headache more than once for Squid. I do not know what problems you are referring to, but I am not really against removing the "but": 3) any other .h file must be self-contained. This means that pretty much every file other than squid.h and config.h will start with #include "squid.h" and most .cc files will include it dozens of times, but it will work. You can make an exception for compat/bits/ if you need them. > > 4) any .cc file must include squid.h first. > > Okay. HTH, Alex.
