VR-Forces 4.0.4 Class Documentation
include/vrfutil/readerWriterFactory.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2007 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: readerWriterFactory.h,v $ $Revision: 1.5 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #ifndef readerWriterFactory_h
00015 #define readerWriterFactory_h
00016 
00017 #include "vrfutil/vrfutilDefines.h"
00018 #include <map>
00019 #include <vlutil/vlString.h>
00020 
00021 class DtReaderWriterRegistry;
00022 class DtReaderWriter;
00023 
00035 class DT_DLL_vrfutil DtReaderWriterFactory
00036 {
00037 public:
00038    typedef DtReaderWriter* (*DtRWCreatorFcn)(const DtString& name, DtReaderWriterRegistry* parentRegistry);
00039    typedef void (*DtRWCopyFcn)(const DtReaderWriter* source, DtReaderWriter* dest);
00040 
00041    struct DtRwFunctions
00042    {
00043       DtRWCreatorFcn creatorFcn;
00044       DtRWCopyFcn copyFcn;
00045    };
00046 
00047    typedef std::map<DtString, DtRwFunctions> DtRwFunctionMap;
00048 
00049 public:
00050    DtReaderWriterFactory();
00051 
00055    virtual DtReaderWriter* createItem(const DtString& type, const DtString& name,
00056       DtReaderWriterRegistry* parentRegistry) const;
00057 
00062    virtual bool copyReaderWriter(const DtReaderWriter* sourceRw, DtReaderWriter* destRw) const;
00063 
00069    virtual DtReaderWriter* cloneReaderWriter(const DtString& name,
00070       const DtReaderWriter* sourceRw, DtReaderWriterRegistry* parentRegistry) const;
00071 
00074    void addDefaultRwCreators();
00075 
00080    template<typename T_RWType>
00081    void registerType(const DtString& rwTypeString);
00082 
00083    const DtRwFunctionMap& functionMap() const;
00084 
00086    bool typeRegistered(const DtString& rwTypeString) const;
00087 
00088 protected:
00091    template <typename T_RWType>
00092    static DtReaderWriter* createRWType(const DtString& name, DtReaderWriterRegistry* parentRegistry);
00093 
00095    template <typename T_RWType>
00096    static void copyRwType(const DtReaderWriter* sourceRw, DtReaderWriter* destRw);
00097 
00098 protected:
00099    DtRwFunctionMap myRwFunctionMap;
00100 };
00101 
00102 #define readerWriterFactory_inl_
00103 #include "vrfutil/readerWriterFactory.inl"
00104 #undef  readerWriterFactory_inl_
00105 
00106 #endif

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)