CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/Fireworks/Core/interface/FWItemAccessorFactory.h

Go to the documentation of this file.
00001 #ifndef Fireworks_Core_FWItemAccessorFactory_h
00002 #define Fireworks_Core_FWItemAccessorFactory_h
00003 // -*- C++ -*-
00004 //
00005 // Package:     Core
00006 // Class  :     FWItemAccessorFactory
00007 //
00016 //
00017 // Original Author:  Chris Jones
00018 //         Created:  Sat Oct 18 14:47:03 EDT 2008
00019 // $Id: FWItemAccessorFactory.h,v 1.6 2010/06/03 19:38:31 chrjones Exp $
00020 //
00021 
00022 // system include files
00023 #include <boost/shared_ptr.hpp>
00024 #include <string>
00025 
00026 // user include files
00027 
00028 // forward declarations
00029 class FWItemAccessorBase;
00030 class TClass;
00031 
00032 class FWItemAccessorFactory {
00033 
00034 public:
00035    FWItemAccessorFactory();
00036    virtual ~FWItemAccessorFactory();
00037 
00038    // ---------- const member functions ---------------------
00039    boost::shared_ptr<FWItemAccessorBase> accessorFor(const TClass*) const;
00040    static bool hasAccessor(const TClass *iClass, std::string &result);
00041    static bool hasTVirtualCollectionProxy(const TClass *iClass);
00042    static bool hasMemberTVirtualCollectionProxy(const TClass *iClass,
00043                                                 TClass *&oMember,
00044                                                 size_t& oOffset);
00045    
00046    static bool classAccessedAsCollection(const TClass*);
00047    
00048    // ---------- static member functions --------------------
00049 
00050    // ---------- member functions ---------------------------
00051 
00052 private:
00053    FWItemAccessorFactory(const FWItemAccessorFactory&); // stop default
00054 
00055    const FWItemAccessorFactory& operator=(const FWItemAccessorFactory&); // stop default
00056 
00057    // ---------- member data --------------------------------
00058 
00059 };
00060 
00061 #endif