Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:11:31

0001 #ifndef Fireworks_Core_FWItemAccessorFactory_h
0002 #define Fireworks_Core_FWItemAccessorFactory_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     Core
0006 // Class  :     FWItemAccessorFactory
0007 //
0008 /**\class FWItemAccessorFactory FWItemAccessorFactory.h Fireworks/Core/interface/FWItemAccessorFactory.h
0009 
0010    Description: Factory for constructing FWItemAccessorBases appropriate to a certain type
0011 
0012    Usage:
0013     <usage>
0014 
0015  */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Sat Oct 18 14:47:03 EDT 2008
0019 //
0020 
0021 // system include files
0022 #include <memory>
0023 #include <string>
0024 
0025 // user include files
0026 
0027 // forward declarations
0028 class FWItemAccessorBase;
0029 class TClass;
0030 
0031 class FWItemAccessorFactory {
0032 public:
0033   FWItemAccessorFactory();
0034   virtual ~FWItemAccessorFactory();
0035 
0036   // ---------- const member functions ---------------------
0037   std::shared_ptr<FWItemAccessorBase> accessorFor(const TClass *) const;
0038   static bool hasAccessor(const TClass *iClass, std::string &result);
0039   static bool hasTVirtualCollectionProxy(const TClass *iClass);
0040   static bool hasMemberTVirtualCollectionProxy(const TClass *iClass, TClass *&oMember, size_t &oOffset);
0041 
0042   static bool classAccessedAsCollection(const TClass *);
0043 
0044   // ---------- static member functions --------------------
0045 
0046   // ---------- member functions ---------------------------
0047 
0048   FWItemAccessorFactory(const FWItemAccessorFactory &) = delete;  // stop default
0049 
0050   const FWItemAccessorFactory &operator=(const FWItemAccessorFactory &) = delete;  // stop default
0051 
0052   // ---------- member data --------------------------------
0053 };
0054 
0055 #endif