Guest User

Untitled

a guest
Apr 19th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #ifndef GenericFactort_h__
  2. #define GenericFactort_h__
  3.  
  4. #include "Node.h"
  5. #include "tinyxml.h"
  6.  
  7. namespace commoncrc
  8. {
  9.  
  10. /*
  11. Generyczna klasa fabryk dla prymitywów spoza modułu wspólnego.
  12. Wymaga aby:
  13. 1. Primitive dziedziczył z PrimitiveBase.
  14. 2. HelperFactory tworzył obiekty typu HelperPrimitive.
  15. 3. Istniał konstruktor Primitive(HelperPrimitive)
  16. */
  17. template <class Primitive, class PrimitiveBase, class HelperFactory, class HelperPrimitive>
  18. class GenericFactory: PrimitiveFactory<PrimitiveBase>
  19. {
  20. private:
  21.     PrimitiveFactory<PrimitiveBase>* factory;
  22. public:
  23.     GenericFactory()
  24.     {
  25.         factory = (PrimitiveFactory<PrimitiveBase>*)new HelperFactory();
  26.     }
  27.  
  28.     ~GenericFactory()
  29.     {
  30.         delete factory;
  31.     }
  32.  
  33.     virtual std::string getPrimitiveName()
  34.     {
  35.         return factory->getPrimitiveName();
  36.     }
  37.  
  38.     virtual Primitive* createPrimitive( TiXmlElement* primitiveNode )
  39.     {
  40.         HelperPrimitive* helper = (HelperPrimitive*) factory->createPrimitive(primitiveNode);
  41.         Primitive* primitive = new Primitive(*helper/*, NodeType::intersection*/); //TODO dodatkowe parametry do konstrukora naprawić
  42.         delete helper;
  43.         return primitive;
  44.     }
  45.  
  46.  
  47.  
  48. };
  49.  
  50.  
  51. } // commoncrc
  52.  
  53. #endif
Add Comment
Please, Sign In to add comment