VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtVisualizerAttributeFactory.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2011 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00009 
00010 #pragma once
00011 #include <vrvCore/vrvCore.h>
00012 #include <vrvCore/DtVisualizerAttribute.h>
00013 #include <vrvUtil/DtVirtualBaseClass.h>
00014 #include <vrvUtil/DtUnicode.h>
00015 #include <boost/unordered_map.hpp>
00016 
00017 namespace makVrv
00018 {
00019    class DtVisualizerAttribute;
00020    class DtDe;
00021 
00025    class DT_DLL_VRVCORE DtVisualizerAttributeFactory : public DtVirtualBaseClass
00026    {
00027    public:
00028 
00031       class CreatorInterface
00032       {
00033       public:
00035          virtual ~CreatorInterface();
00036 
00038          virtual DtVisualizerAttribute* create() = 0;
00039 
00040          virtual const DtVisualizerAttribute::TypeInfo& attributeTypeInfo() const
00041             = 0;
00042       };
00043 
00045       template <typename Attribute>
00046       class Creator : public CreatorInterface
00047       {
00048       public:
00049          virtual DtVisualizerAttribute* create()
00050          {
00051             return new Attribute();
00052          }
00053 
00054          virtual const DtVisualizerAttribute::TypeInfo& attributeTypeInfo() const
00055          {
00056             return Attribute::theTypeInfo();
00057          }
00058       }; 
00059 
00061       static DtVisualizerAttributeFactory& instance(DtDe&);
00062 
00065       static void registerInstance(DtDe&, DtVisualizerAttributeFactory*);
00066 
00068       virtual ~DtVisualizerAttributeFactory();
00069 
00071       virtual DtVisualizerAttribute* create(const std::string& className);
00072 
00073 
00076       virtual DtVisualizerAttribute* create(const std::string& className,
00077          const DtUnicode& value);
00078 
00081       virtual void registerClass(CreatorInterface* creator);
00082 
00083    protected:
00084       DtVisualizerAttributeFactory(DtDe&);
00085 
00086    protected:
00087       typedef boost::unordered_map<std::string, CreatorInterface*> CreatorMap;
00088       CreatorMap myCreators;
00089       Creator<DtVisualizerAttributeString> myDefaultCreator;
00090       DtDe& myDe;
00091    };
00092 }
00093 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)