#pragma once // Obsolete features //! Special hack to ensure errors when someone tries to ->service_add_ref()/->service_release() on a service_ptr_t template class service_obscure_refcounting : public T { private: int service_add_ref() throw(); int service_release() throw(); }; //! Converts a service interface pointer to a pointer that obscures service counter functionality. template static inline service_obscure_refcounting* service_obscure_refcounting_cast(T * p_source) throw() {return static_cast*>(p_source);} template class t_alloc = pfc::alloc_fast> class service_list_t : public pfc::list_t, t_alloc > { }; //! Helper; simulates array with instance of each available implementation of given service class. template class service_instance_array_t { public: typedef service_ptr_t t_ptr; service_instance_array_t() { service_class_helper_t helper; const t_size count = helper.get_count(); m_data.set_size(count); for(t_size n=0;n m_data; };