namespace Particles
{
/**
- * This class manages a memory space in which particles store their
- * properties. Because this is dynamic memory and often every particle
- * needs the same amount, it is more efficient to let this be handled by a
- * central manager that does not need to allocate/deallocate memory every
- * time a particle is constructed/destroyed.
- * The current implementation uses simple new/delete allocation for every
- * block. Additionally, the current implementation
- * assumes the same number of properties per particle, but of course the
- * PropertyType could contain a pointer to dynamically allocated memory
- * with varying sizes per particle (this memory would not be managed by this
- * class).
- * Because PropertyPool only returns handles it could be enhanced internally
- * (e.g. to allow for varying number of properties per handle) without
- * affecting its interface.
+ * This class manages a memory space in which all particles associated with
+ * a ParticleHandler store their properties. The rationale for this class is
+ * that because typically every particle stores the same number of
+ * properties, and because algorithms generally traverse over all particles
+ * doing the same operation on all particles' properties, it is more efficient
+ * to let the memory used for properties be handled by a central manager.
+ * Particles then do not store a pointer to a memory area in which they store
+ * their properties, but instead a "handle" that the PropertyPool class then
+ * translates into a pointer to concrete memory.
+ *
+ * All this said, the current implementation only provides this kind of
+ * interface, but still uses simple new/delete allocation for every
+ * set of properties requested by a particle. Additionally, the current
+ * implementation assumes the same number of properties per particle, but of
+ * course the PropertyType could contain a pointer to dynamically allocated
+ * memory with varying sizes per particle (this memory would not be managed by
+ * this class).
*/
class PropertyPool
{