Mantid
|
This factory is used to create space group objects. More...
#include <SpaceGroupFactory.h>
This factory is used to create space group objects.
Each space group should be created only once, which is why the factory works with prototypes that are cloned when a space group is requested more than once.
On the other hand, these prototypes should not be constructed when they are registered, because that might slow down startup of Mantid. As a solution, space groups are not stored in the factory directly, instead a generator is constructed on registration, which will do the prototype construction when it's actually required - and still only once.
In principle, any generator can be used through the template method subscribeUsingGenerator, which constructs the object and stores it as a base class pointer. For convenience there are two methods which provide a generator- and a table-based approach (subscribeGeneratedSpaceGroup and subscribeTabulatedSpaceGroup).
A third option is available, using a TransformationSpaceGroupGenerator, which generates a space group using the factory and transforms it using the specified transformation.