Mirror reflection library 0.5.13

mirror/utils/sdn_factory.hpp

Go to the documentation of this file.
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 

Copyright © 2006-2011 Matus Chochlik, University of Zilina, Zilina, Slovakia.
<matus.chochlik -at- fri.uniza.sk>
<chochlik -at -gmail.com>
Documentation generated on Fri Dec 16 2011 by Doxygen (version 1.7.3).
Important note: Although the 'boostified' version of Mirror uses the Boost C++ libraries Coding Guidelines and is implemented inside of the boost namespace, it IS NOT an officially reviewed and accepted Boost library. Mirror is being developed with the intention to be submitted for review for inclusion to the Boost C++ libraries.