Mirror reflection library 0.5.13
|
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