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