00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00033
00034 #ifndef esve_components_dimn_Simple_UI_Tie_hxx
00035 #define esve_components_dimn_Simple_UI_Tie_hxx
00036
00037 #include <esve/components/dimn/Valuator.hxx>
00038 #include <esve/components/dimn/Valuator_Struct_Tie.hxx>
00039 #include <esve/components/dimn/Valuator_Class_Tie.hxx>
00040 #include <esve/components/dimn/Simple_UI.hxx>
00041 #include <esve/types/quat.hxx>
00042 #include <esve/types/pure.hxx>
00043 #include <esve/types/complex.hxx>
00044
00045 namespace esve { namespace components { namespace dimn {
00046
00060
00062
00063
00064
00066
00067 template< typename T_Target >
00068 class Simple_UI_Tie
00069 : public components::dimn::Valuator_Handler<types::real>,
00070 public components::dimn::Valuator_Handler<types::complex>,
00071 public components::dimn::Valuator_Handler<types::pure>,
00072 public components::dimn::Valuator_Handler<types::quat>
00073 {
00074 private:
00075 Simple_UI_Tie( const Simple_UI_Tie & ) ;
00076 Simple_UI_Tie & operator=( const Simple_UI_Tie & ) ;
00077
00078 struct m_Tie
00079 :
00080 public Valuator_Struct_Tie<T_Target, types::real>,
00081 public Valuator_Struct_Tie<T_Target, types::complex>,
00082 public Valuator_Struct_Tie<T_Target, types::pure>,
00083 public Valuator_Struct_Tie<T_Target, types::quat>,
00084
00085 public Valuator_Class_Tie<T_Target, types::real>,
00086 public Valuator_Class_Tie<T_Target, types::complex>,
00087 public Valuator_Class_Tie<T_Target, types::pure>,
00088 public Valuator_Class_Tie<T_Target, types::quat>
00089 {
00090 m_Tie( Simple_UI & ui, T_Target & target ) ;
00091
00092 using Valuator_Struct_Tie<T_Target, types::real>::create_valuator ;
00093 using Valuator_Struct_Tie<T_Target, types::complex>::create_valuator ;
00094 using Valuator_Struct_Tie<T_Target, types::pure>::create_valuator ;
00095 using Valuator_Struct_Tie<T_Target, types::quat>::create_valuator ;
00096
00097 using Valuator_Class_Tie<T_Target, types::real>::create_valuator ;
00098 using Valuator_Class_Tie<T_Target, types::complex>::create_valuator ;
00099 using Valuator_Class_Tie<T_Target, types::pure>::create_valuator ;
00100 using Valuator_Class_Tie<T_Target, types::quat>::create_valuator ;
00101
00102 using Valuator_Struct_Tie<T_Target, types::real>::tie ;
00103 using Valuator_Struct_Tie<T_Target, types::complex>::tie ;
00104 using Valuator_Struct_Tie<T_Target, types::pure>::tie ;
00105 using Valuator_Struct_Tie<T_Target, types::quat>::tie ;
00106
00107 using Valuator_Class_Tie<T_Target, types::real>::tie ;
00108 using Valuator_Class_Tie<T_Target, types::complex>::tie ;
00109 using Valuator_Class_Tie<T_Target, types::pure>::tie ;
00110 using Valuator_Class_Tie<T_Target, types::quat>::tie ;
00111
00112 bool handle_valuator( const Valuator<types::real> & ) ;
00113 bool handle_valuator( const Valuator<types::complex> & ) ;
00114 bool handle_valuator( const Valuator<types::pure> & ) ;
00115 bool handle_valuator( const Valuator<types::quat> & ) ;
00116 } ;
00117
00118 m_Tie m_tie ;
00119
00120 public:
00121 typedef T_Target Target ;
00122
00126 typedef types::real Target::* Real_Member ;
00127 typedef types::complex Target::* Complex_Member ;
00128 typedef types::pure Target::* Pure_Member ;
00129 typedef types::quat Target::* Quat_Member ;
00131
00138 typedef types::real (Target::*Real_Reader)() const ;
00139 typedef void (Target::*Real_Writer)( types::real ) ;
00140
00141 typedef const types::complex & (Target::*Complex_Reader)() const ;
00142 typedef void (Target::*Complex_Writer)( const types::complex & ) ;
00143
00144 typedef const types::pure & (Target::*Pure_Reader)() const ;
00145 typedef void (Target::*Pure_Writer)( const types::pure & ) ;
00146
00147 typedef const types::quat & (Target::*Quat_Reader)() const ;
00148 typedef void (Target::*Quat_Writer)( const types::quat & ) ;
00150
00152 Simple_UI_Tie( components::dimn::Simple_UI & ui,
00153 Target & data ) ;
00154
00159 Valuator<types::real> &
00160 create_valuator( Real_Member member,
00161 const std::string & name = "" )
00162 {
00163 return m_tie.create_valuator(member, name) ;
00164 }
00165
00166 Valuator<types::complex> &
00167 create_valuator( Complex_Member member,
00168 const std::string & name = "" )
00169 {
00170 return m_tie.create_valuator(member, name) ;
00171 }
00172
00173 Valuator<types::pure> &
00174 create_valuator( Pure_Member member,
00175 const std::string & name = "" )
00176 {
00177 return m_tie.create_valuator(member, name) ;
00178 }
00179
00180 Valuator<types::quat> &
00181 create_valuator( Quat_Member member,
00182 const std::string & name = "" )
00183 {
00184 return m_tie.create_valuator(member, name) ;
00185 }
00187
00192 Valuator<types::real> &
00193 create_valuator( Real_Reader reader,
00194 Real_Writer writer,
00195 const std::string & name = "" )
00196 {
00197 return m_tie.create_valuator(reader, writer, name) ;
00198 }
00199
00200 Valuator<types::complex> &
00201 create_valuator( Complex_Reader reader,
00202 Complex_Writer writer,
00203 const std::string & name = "" )
00204 {
00205 return m_tie.create_valuator(reader, writer, name) ;
00206 }
00207
00208 Valuator<types::pure> &
00209 create_valuator( Pure_Reader reader,
00210 Pure_Writer writer,
00211 const std::string & name = "" )
00212 {
00213 return m_tie.create_valuator(reader, writer, name) ;
00214 }
00215
00216 Valuator<types::quat> &
00217 create_valuator( Quat_Reader reader,
00218 Quat_Writer writer,
00219 const std::string & name = "" )
00220 {
00221 return m_tie.create_valuator(reader, writer, name) ;
00222 }
00224
00229 void tie( Valuator<types::real> & valuator,
00230 Real_Member member )
00231 {
00232 m_tie.tie(valuator, member) ;
00233 }
00234
00235 void tie( Valuator<types::complex> & valuator,
00236 Complex_Member member )
00237 {
00238 m_tie.tie(valuator, member) ;
00239 }
00240
00241 void tie( Valuator<types::pure> & valuator,
00242 Pure_Member member )
00243 {
00244 m_tie.tie(valuator, member) ;
00245 }
00246
00247 void tie( Valuator<types::quat> & valuator,
00248 Quat_Member member )
00249 {
00250 m_tie.tie(valuator, member) ;
00251 }
00253
00258 void tie( Valuator<types::real> & valuator,
00259 Real_Reader reader,
00260 Real_Writer writer )
00261 {
00262 m_tie.tie(valuator, reader, writer) ;
00263 }
00264
00265 void tie( Valuator<types::complex> & valuator,
00266 Complex_Reader reader,
00267 Complex_Writer writer )
00268 {
00269 m_tie.tie(valuator, reader, writer) ;
00270 }
00271
00272 void tie( Valuator<types::pure> & valuator,
00273 Pure_Reader reader,
00274 Pure_Writer writer )
00275 {
00276 m_tie.tie(valuator, reader, writer) ;
00277 }
00278
00279 void tie( Valuator<types::quat> & valuator,
00280 Quat_Reader reader,
00281 Quat_Writer writer )
00282 {
00283 m_tie.tie(valuator, reader, writer) ;
00284 }
00286
00287 ~Simple_UI_Tie() ;
00288
00289 protected:
00290 bool handle_valuator( const Valuator<types::real> & v ) ;
00291 bool handle_valuator( const Valuator<types::complex> & v ) ;
00292 bool handle_valuator( const Valuator<types::pure> & v ) ;
00293 bool handle_valuator( const Valuator<types::quat> & v ) ;
00294 } ;
00295
00296 }}}
00297
00298 #include <esve/components/dimn/Simple_UI_Tie.template.cxx>
00299
00300 #endif
00301