Mirror reflection library 0.5.13

mirror/doc/concepts_fact_gen.hpp

Go to the documentation of this file.
00001 
00010 #ifndef MIRROR_DOC_CONCEPTS_FACT_GEN_1011291729_HPP
00011 #define MIRROR_DOC_CONCEPTS_FACT_GEN_1011291729_HPP
00012 
00013 #include <mirror/config.hpp>
00014 
00015 // This section is here for documentation purposes only
00016 #ifdef MIRROR_DOCUMENTATION_ONLY
00017 
00024 MIRROR_NAMESPACE_BEGIN
00025 
00027 
00032 struct ConstructionInfo
00033 {
00035     typedef Range<MetaNamedScopedObject> context;
00036 
00038     typedef MetaFunction function;
00039 
00041     typedef Range<MetaParameter> parameters;
00042 
00044     typedef IntegralConstant parameter_index;
00045 
00047     typedef MetaParameter parameter;
00048 };
00049 
00051 
00057 struct ConstructorInfo
00058 {
00060     typedef Range<MetaNamedScopedObject> context;
00061 
00063     typedef MetaClass product;
00064 
00066     typedef IntegralConstant constructor_index;
00067 
00069     typedef MetaConstructor constructor;
00070 
00072     EnumerationInfo enumeration_info;
00073 };
00074 
00076 
00083 struct EnumerationInfo
00084 {
00086     enum direction_type {unknown, forward, backward};
00087 
00089     direction_type direction(void) const;
00090 
00092     bool going_backward(void) const;
00093 
00095     bool going_forward(void) const;
00096 };
00097 
00099 
00110 template <typename Product, typename SourceTraits>
00111 struct Suppliers
00112 {
00114     Suppliers(
00115         UnspecifiedType parent_data,
00116         ConstructionInfo construction_info
00117     );
00118 
00120 
00125     void finish(UnspecifiedType parent_data);
00126 
00128     Product operator()(void);
00129 };
00130 
00132 
00140 template <typename Product, typename SourceTraits>
00141 struct Manufacturer
00142 {
00144     Suppliers(
00145         UnspecifiedType parent_data,
00146         ConstructionInfo construction_info
00147     );
00148 
00150 
00155     void finish(UnspecifiedType parent_data);
00156 
00158     Product operator()(void);
00159 };
00160 
00162 
00169 template <typename SourceTraits>
00170 struct Manufacturer<void, SourceTraits>
00171 {
00173     Suppliers(
00174         UnspecifiedType parent_data,
00175         ConstructionInfo construction_info
00176     );
00177 
00179 
00183     void finish(UnspecifiedType parent_data);
00184 
00186 
00198     UnspecifiedType add_constructor(
00199         UnspecifiedType parent_data,
00200         ConstructorInfo constructor_info
00201     );
00202 
00204     int index(void);
00205 };
00206 
00207 MIRROR_NAMESPACE_END
00208 
00209 #endif // MIRROR_DOCUMENTATION_ONLY
00210 
00211 #endif //include guard
00212 

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.