Proposed/implemented namespace hierarchy for public API in CS

  • CS
    • Collection - Collection classes
    • DocSystem - XML / document system related stuff
    • Graphics - Graphics related, image classes ...
    • Math - Mathematic function and definition
    • Meta - Template Meta-programming helpers
    • Memory - Memory allocation
    • Platform - For the little platform specific stuff we have
      • Platform::Win32, Platform::Unix, and so on.
    • Plugin - Namespace with implementation of plugins (for name-hiding in static builds)
    • PluginCommon - Code shared within classes of plugins (stuff in csplugincommon directory)
      • Move SndSys here.
      • Some of the platform-specific stuff is currently sorted under "csplugincommon". Should that use eg "PluginCommon::Platform::Win32" or rather "Platform::Win32"?
    • Threading - Functions/classes for threading and atomic operations
    • Utility - Assorted utilities,

The main namespace at each level should just contain "exposed interface" in same way as plugin just expose its interfaces. Private "helpers" etc should go in a ::Implementation subnamespace.