Mirror reflection library 0.5.13
|
00001 00010 #ifndef MIRROR_UTILS_SDN_FACTORY_1011291729_HPP 00011 #define MIRROR_UTILS_SDN_FACTORY_1011291729_HPP 00012 00013 #include <mirror/config.hpp> 00014 #include <mirror/factory.hpp> 00015 00016 #include <mirror/using_directive.hpp> 00017 // script factory-related 00018 #include <mirror/utils/native_types.hpp> 00019 #include <mirror/utils/sdn_factory/fwd_decl.hpp> 00020 #include <mirror/utils/sdn_factory/error.hpp> 00021 #include <mirror/utils/sdn_factory/default_traits.hpp> 00022 #include <mirror/utils/sdn_factory/handlers.hpp> 00023 #include <mirror/utils/sdn_factory/suppliers.hpp> 00024 #include <mirror/utils/sdn_factory/default_source.hpp> 00025 #include <mirror/utils/sdn_factory/native_source.hpp> 00026 #include <mirror/utils/sdn_factory/initlist_source.hpp> 00027 #include <mirror/utils/sdn_factory/enumerator.hpp> 00028 #include <mirror/utils/sdn_factory/manager.hpp> 00029 #include <mirror/utils/sdn_factory/data.hpp> 00030 00031 MIRROR_NAMESPACE_BEGIN 00032 00033 template <class Product, class Traits> 00034 class sdn_fact_manuf 00035 : public aux::sdn_fact_source< 00036 Product, 00037 Traits, 00038 typename is_util_native_type<Product>::type 00039 > 00040 { 00041 private: 00042 typedef aux::sdn_fact_source< 00043 Product, 00044 Traits, 00045 typename is_util_native_type<Product>::type 00046 > base_class; 00047 typedef aux::sdn_fact_param<Traits> param_type; 00048 public: 00049 //TODO: this can be replaced with inherited constructors 00050 template <class ConstructionInfo> 00051 inline sdn_fact_manuf( 00052 const param_type& parent_data, 00053 ConstructionInfo construction_info 00054 ): base_class(parent_data, construction_info) 00055 { } 00056 }; 00057 00058 template <class Element, class Traits> 00059 class sdn_fact_manuf< 00060 std::initializer_list<Element>, 00061 Traits 00062 > : public aux::sdn_fact_seq_source<Element, Traits> 00063 { 00064 private: 00065 typedef aux::sdn_fact_seq_source< 00066 Element, 00067 Traits 00068 > base_class; 00069 typedef aux::sdn_fact_param<Traits> param_type; 00070 public: 00071 //TODO: this can be replaced with inherited constructors 00072 template <class ConstructionInfo> 00073 inline sdn_fact_manuf( 00074 const param_type& parent_data, 00075 ConstructionInfo construction_info 00076 ): base_class(parent_data, construction_info) 00077 { } 00078 }; 00079 00080 MIRROR_NAMESPACE_END 00081 00082 #endif //include guard 00083