00001
00002
00003 #ifndef KDL_TYPES_HPP
00004 #define KDL_TYPES_HPP
00005
00006 #include <kdl/frames.hpp>
00007 #include <kdl/chain.hpp>
00008 #include <kdl/jacobian.hpp>
00009 #include <kdl/segment.hpp>
00010 #include <kdl/jntarray.hpp>
00011
00012
00013
00014
00015
00016
00017 #include <vector>
00018 #include <boost/cstdint.hpp>
00019 #include <boost/serialization/serialization.hpp>
00020 #include <boost/serialization/array.hpp>
00021
00022
00023 #ifdef CORELIB_DATASOURCE_HPP
00024 extern template class RTT::internal::DataSource< ::KDL::Frame >;
00025 extern template class RTT::internal::AssignableDataSource< ::KDL::Frame >;
00026 #endif
00027 #ifdef ORO_CORELIB_DATASOURCES_HPP
00028 extern template class RTT::internal::ValueDataSource< ::KDL::Frame >;
00029 extern template class RTT::internal::ConstantDataSource< ::KDL::Frame >;
00030 extern template class RTT::internal::ReferenceDataSource< ::KDL::Frame >;
00031 #endif
00032 #ifdef ORO_INPUT_PORT_HPP
00033 extern template class RTT::OutputPort< ::KDL::Frame >;
00034 #endif
00035 #ifdef ORO_OUTPUT_PORT_HPP
00036 extern template class RTT::InputPort< ::KDL::Frame >;
00037 #endif
00038 #ifdef ORO_PROPERTY_HPP
00039 extern template class RTT::Property< ::KDL::Frame >;
00040 #endif
00041 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00042 extern template class RTT::Attribute< ::KDL::Frame >;
00043 #endif
00044
00045
00046 namespace boost
00047 {
00048 namespace serialization
00049 {
00050 template<typename Archive>
00051 void serialize(Archive& a, ::KDL::Frame& b, unsigned int version)
00052 {
00053 using boost::serialization::make_nvp;
00054 a & make_nvp("p", b.p);
00055 a & make_nvp("M", b.M);
00056 }
00057 }
00058 }
00059
00060
00061 #ifdef CORELIB_DATASOURCE_HPP
00062 extern template class RTT::internal::DataSource< ::KDL::Rotation >;
00063 extern template class RTT::internal::AssignableDataSource< ::KDL::Rotation >;
00064 #endif
00065 #ifdef ORO_CORELIB_DATASOURCES_HPP
00066 extern template class RTT::internal::ValueDataSource< ::KDL::Rotation >;
00067 extern template class RTT::internal::ConstantDataSource< ::KDL::Rotation >;
00068 extern template class RTT::internal::ReferenceDataSource< ::KDL::Rotation >;
00069 #endif
00070 #ifdef ORO_INPUT_PORT_HPP
00071 extern template class RTT::OutputPort< ::KDL::Rotation >;
00072 #endif
00073 #ifdef ORO_OUTPUT_PORT_HPP
00074 extern template class RTT::InputPort< ::KDL::Rotation >;
00075 #endif
00076 #ifdef ORO_PROPERTY_HPP
00077 extern template class RTT::Property< ::KDL::Rotation >;
00078 #endif
00079 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00080 extern template class RTT::Attribute< ::KDL::Rotation >;
00081 #endif
00082
00083
00084 namespace boost
00085 {
00086 namespace serialization
00087 {
00088 template<typename Archive>
00089 void serialize(Archive& a, ::KDL::Rotation& b, unsigned int version)
00090 {
00091 using boost::serialization::make_nvp;
00092 a & make_nvp("X_x", b.data[0]);
00093 a & make_nvp("X_y", b.data[3]);
00094 a & make_nvp("X_z", b.data[6]);
00095 a & make_nvp("Y_x", b.data[1]);
00096 a & make_nvp("Y_y", b.data[4]);
00097 a & make_nvp("Y_z", b.data[7]);
00098 a & make_nvp("Z_x", b.data[2]);
00099 a & make_nvp("Z_y", b.data[5]);
00100 a & make_nvp("Z_z", b.data[8]);
00101 }
00102 }
00103 }
00104
00105 #ifdef CORELIB_DATASOURCE_HPP
00106 extern template class RTT::internal::DataSource< ::KDL::Twist >;
00107 extern template class RTT::internal::AssignableDataSource< ::KDL::Twist >;
00108 #endif
00109 #ifdef ORO_CORELIB_DATASOURCES_HPP
00110 extern template class RTT::internal::ValueDataSource< ::KDL::Twist >;
00111 extern template class RTT::internal::ConstantDataSource< ::KDL::Twist >;
00112 extern template class RTT::internal::ReferenceDataSource< ::KDL::Twist >;
00113 #endif
00114 #ifdef ORO_INPUT_PORT_HPP
00115 extern template class RTT::OutputPort< ::KDL::Twist >;
00116 #endif
00117 #ifdef ORO_OUTPUT_PORT_HPP
00118 extern template class RTT::InputPort< ::KDL::Twist >;
00119 #endif
00120 #ifdef ORO_PROPERTY_HPP
00121 extern template class RTT::Property< ::KDL::Twist >;
00122 #endif
00123 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00124 extern template class RTT::Attribute< ::KDL::Twist >;
00125 #endif
00126
00127
00128 namespace boost
00129 {
00130 namespace serialization
00131 {
00132 template<typename Archive>
00133 void serialize(Archive& a, ::KDL::Twist& b, unsigned int version)
00134 {
00135 using boost::serialization::make_nvp;
00136 a & make_nvp("vel", b.vel);
00137 a & make_nvp("rot", b.rot);
00138 }
00139 }
00140 }
00141
00142
00143
00144 #ifdef CORELIB_DATASOURCE_HPP
00145 extern template class RTT::internal::DataSource< ::KDL::Vector >;
00146 extern template class RTT::internal::AssignableDataSource< ::KDL::Vector >;
00147 #endif
00148 #ifdef ORO_CORELIB_DATASOURCES_HPP
00149 extern template class RTT::internal::ValueDataSource< ::KDL::Vector >;
00150 extern template class RTT::internal::ConstantDataSource< ::KDL::Vector >;
00151 extern template class RTT::internal::ReferenceDataSource< ::KDL::Vector >;
00152 #endif
00153 #ifdef ORO_INPUT_PORT_HPP
00154 extern template class RTT::OutputPort< ::KDL::Vector >;
00155 #endif
00156 #ifdef ORO_OUTPUT_PORT_HPP
00157 extern template class RTT::InputPort< ::KDL::Vector >;
00158 #endif
00159 #ifdef ORO_PROPERTY_HPP
00160 extern template class RTT::Property< ::KDL::Vector >;
00161 #endif
00162 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00163 extern template class RTT::Attribute< ::KDL::Vector >;
00164 #endif
00165
00166
00167 namespace boost
00168 {
00169 namespace serialization
00170 {
00171 template<typename Archive>
00172 void serialize(Archive& a, ::KDL::Vector& b, unsigned int version)
00173 {
00174 using boost::serialization::make_nvp;
00175 a & make_nvp("X", b.data[0]);
00176 a & make_nvp("Y", b.data[1]);
00177 a & make_nvp("Z", b.data[2]);
00178 }
00179 }
00180 }
00181
00182
00183 #ifdef CORELIB_DATASOURCE_HPP
00184 extern template class RTT::internal::DataSource< ::KDL::Wrench >;
00185 extern template class RTT::internal::AssignableDataSource< ::KDL::Wrench >;
00186 #endif
00187 #ifdef ORO_CORELIB_DATASOURCES_HPP
00188 extern template class RTT::internal::ValueDataSource< ::KDL::Wrench >;
00189 extern template class RTT::internal::ConstantDataSource< ::KDL::Wrench >;
00190 extern template class RTT::internal::ReferenceDataSource< ::KDL::Wrench >;
00191 #endif
00192 #ifdef ORO_INPUT_PORT_HPP
00193 extern template class RTT::OutputPort< ::KDL::Wrench >;
00194 #endif
00195 #ifdef ORO_OUTPUT_PORT_HPP
00196 extern template class RTT::InputPort< ::KDL::Wrench >;
00197 #endif
00198 #ifdef ORO_PROPERTY_HPP
00199 extern template class RTT::Property< ::KDL::Wrench >;
00200 #endif
00201 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00202 extern template class RTT::Attribute< ::KDL::Wrench >;
00203 #endif
00204
00205
00206 namespace boost
00207 {
00208 namespace serialization
00209 {
00210 template<typename Archive>
00211 void serialize(Archive& a, ::KDL::Wrench& b, unsigned int version)
00212 {
00213 using boost::serialization::make_nvp;
00214 a & make_nvp("force", b.force);
00215 a & make_nvp("torque", b.torque);
00216 }
00217 }
00218 }
00219
00220 #ifdef CORELIB_DATASOURCE_HPP
00221 extern template class RTT::internal::DataSource< ::KDL::Chain >;
00222 extern template class RTT::internal::AssignableDataSource< ::KDL::Chain >;
00223 #endif
00224 #ifdef ORO_CORELIB_DATASOURCES_HPP
00225 extern template class RTT::internal::ValueDataSource< ::KDL::Chain >;
00226 extern template class RTT::internal::ConstantDataSource< ::KDL::Chain >;
00227 extern template class RTT::internal::ReferenceDataSource< ::KDL::Chain >;
00228 #endif
00229 #ifdef ORO_INPUT_PORT_HPP
00230 extern template class RTT::OutputPort< ::KDL::Chain >;
00231 #endif
00232 #ifdef ORO_OUTPUT_PORT_HPP
00233 extern template class RTT::InputPort< ::KDL::Chain >;
00234 #endif
00235 #ifdef ORO_PROPERTY_HPP
00236 extern template class RTT::Property< ::KDL::Chain >;
00237 #endif
00238 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00239 extern template class RTT::Attribute< ::KDL::Chain >;
00240 #endif
00241
00242
00243 namespace boost
00244 {
00245 namespace serialization
00246 {
00247 template<typename Archive>
00248 void serialize(Archive& a, ::KDL::Chain& b, unsigned int version)
00249 {}
00250 }
00251 }
00252
00253 #ifdef CORELIB_DATASOURCE_HPP
00254 extern template class RTT::internal::DataSource< ::KDL::Joint >;
00255 extern template class RTT::internal::AssignableDataSource< ::KDL::Joint >;
00256 #endif
00257 #ifdef ORO_CORELIB_DATASOURCES_HPP
00258 extern template class RTT::internal::ValueDataSource< ::KDL::Joint >;
00259 extern template class RTT::internal::ConstantDataSource< ::KDL::Joint >;
00260 extern template class RTT::internal::ReferenceDataSource< ::KDL::Joint >;
00261 #endif
00262 #ifdef ORO_INPUT_PORT_HPP
00263 extern template class RTT::OutputPort< ::KDL::Joint >;
00264 #endif
00265 #ifdef ORO_OUTPUT_PORT_HPP
00266 extern template class RTT::InputPort< ::KDL::Joint >;
00267 #endif
00268 #ifdef ORO_PROPERTY_HPP
00269 extern template class RTT::Property< ::KDL::Joint >;
00270 #endif
00271 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00272 extern template class RTT::Attribute< ::KDL::Joint >;
00273 #endif
00274
00275
00276 namespace boost
00277 {
00278 namespace serialization
00279 {
00280 template<typename Archive>
00281 void serialize(Archive& a, ::KDL::Joint& b, unsigned int version)
00282 {}
00283 }
00284 }
00285
00286 #ifdef CORELIB_DATASOURCE_HPP
00287 extern template class RTT::internal::DataSource< ::KDL::Segment >;
00288 extern template class RTT::internal::AssignableDataSource< ::KDL::Segment >;
00289 #endif
00290 #ifdef ORO_CORELIB_DATASOURCES_HPP
00291 extern template class RTT::internal::ValueDataSource< ::KDL::Segment >;
00292 extern template class RTT::internal::ConstantDataSource< ::KDL::Segment >;
00293 extern template class RTT::internal::ReferenceDataSource< ::KDL::Segment >;
00294 #endif
00295 #ifdef ORO_INPUT_PORT_HPP
00296 extern template class RTT::OutputPort< ::KDL::Segment >;
00297 #endif
00298 #ifdef ORO_OUTPUT_PORT_HPP
00299 extern template class RTT::InputPort< ::KDL::Segment >;
00300 #endif
00301 #ifdef ORO_PROPERTY_HPP
00302 extern template class RTT::Property< ::KDL::Segment >;
00303 #endif
00304 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00305 extern template class RTT::Attribute< ::KDL::Segment >;
00306 #endif
00307
00308
00309 namespace boost
00310 {
00311 namespace serialization
00312 {
00313 template<typename Archive>
00314 void serialize(Archive& a, ::KDL::Segment& b, unsigned int version)
00315 {}
00316 }
00317 }
00318 #ifdef CORELIB_DATASOURCE_HPP
00319 extern template class RTT::internal::DataSource< ::KDL::Jacobian >;
00320 extern template class RTT::internal::AssignableDataSource< ::KDL::Jacobian >;
00321 #endif
00322 #ifdef ORO_CORELIB_DATASOURCES_HPP
00323 extern template class RTT::internal::ValueDataSource< ::KDL::Jacobian >;
00324 extern template class RTT::internal::ConstantDataSource< ::KDL::Jacobian >;
00325 extern template class RTT::internal::ReferenceDataSource< ::KDL::Jacobian >;
00326 #endif
00327 #ifdef ORO_INPUT_PORT_HPP
00328 extern template class RTT::OutputPort< ::KDL::Jacobian >;
00329 #endif
00330 #ifdef ORO_OUTPUT_PORT_HPP
00331 extern template class RTT::InputPort< ::KDL::Jacobian >;
00332 #endif
00333 #ifdef ORO_PROPERTY_HPP
00334 extern template class RTT::Property< ::KDL::Jacobian >;
00335 #endif
00336 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00337 extern template class RTT::Attribute< ::KDL::Jacobian >;
00338 #endif
00339
00340
00341 namespace boost
00342 {
00343 namespace serialization
00344 {
00345 template<typename Archive>
00346 void serialize(Archive& a, ::KDL::Jacobian& b, unsigned int version)
00347 {}
00348 }
00349 }
00350
00351 #ifdef CORELIB_DATASOURCE_HPP
00352 extern template class RTT::internal::DataSource< ::KDL::JntArray >;
00353 extern template class RTT::internal::AssignableDataSource< ::KDL::JntArray >;
00354 #endif
00355 #ifdef ORO_CORELIB_DATASOURCES_HPP
00356 extern template class RTT::internal::ValueDataSource< ::KDL::JntArray >;
00357 extern template class RTT::internal::ConstantDataSource< ::KDL::JntArray >;
00358 extern template class RTT::internal::ReferenceDataSource< ::KDL::JntArray >;
00359 #endif
00360 #ifdef ORO_INPUT_PORT_HPP
00361 extern template class RTT::OutputPort< ::KDL::JntArray >;
00362 #endif
00363 #ifdef ORO_OUTPUT_PORT_HPP
00364 extern template class RTT::InputPort< ::KDL::JntArray >;
00365 #endif
00366 #ifdef ORO_PROPERTY_HPP
00367 extern template class RTT::Property< ::KDL::JntArray >;
00368 #endif
00369 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00370 extern template class RTT::Attribute< ::KDL::JntArray >;
00371 #endif
00372
00373
00374 namespace boost
00375 {
00376 namespace serialization
00377 {
00378 template<typename Archive>
00379 void serialize(Archive& a, ::KDL::JntArray& b, unsigned int version)
00380 {
00381 using boost::serialization::make_nvp;
00382 for(int i=0; i<b.data.size(); i++)
00383 {
00384 a & make_nvp("data", b.data[i]);
00385 }
00386 }
00387 }
00388 }
00389
00390 #ifdef CORELIB_DATASOURCE_HPP
00391 extern template class RTT::internal::DataSource< std::vector<KDL::Rotation> >;
00392 extern template class RTT::internal::AssignableDataSource< std::vector<KDL::Rotation> >;
00393 #endif
00394 #ifdef ORO_CORELIB_DATASOURCES_HPP
00395 extern template class RTT::internal::ValueDataSource< std::vector<KDL::Rotation> >;
00396 extern template class RTT::internal::ConstantDataSource< std::vector<KDL::Rotation> >;
00397 extern template class RTT::internal::ReferenceDataSource< std::vector<KDL::Rotation> >;
00398 #endif
00399 #ifdef ORO_INPUT_PORT_HPP
00400 extern template class RTT::OutputPort< std::vector<KDL::Rotation> >;
00401 #endif
00402 #ifdef ORO_OUTPUT_PORT_HPP
00403 extern template class RTT::InputPort< std::vector<KDL::Rotation> >;
00404 #endif
00405 #ifdef ORO_PROPERTY_HPP
00406 extern template class RTT::Property< std::vector<KDL::Rotation> >;
00407 #endif
00408 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00409 extern template class RTT::Attribute< std::vector<KDL::Rotation> >;
00410 #endif
00411
00412
00413 namespace boost
00414 {
00415 namespace serialization
00416 {
00417 template<typename Archive>
00418 void serialize(Archive& a, std::vector<KDL::Rotation>& b, unsigned int version)
00419 {
00420 using boost::serialization::make_nvp;
00421 for(unsigned int i=0; i < b.size(); i++){
00422 boost::serialization::serialize(a, b[i], version);
00423 }
00424 }
00425 }
00426 }
00427 #ifdef CORELIB_DATASOURCE_HPP
00428 extern template class RTT::internal::DataSource< std::vector<KDL::Vector> >;
00429 extern template class RTT::internal::AssignableDataSource< std::vector<KDL::Vector> >;
00430 #endif
00431 #ifdef ORO_CORELIB_DATASOURCES_HPP
00432 extern template class RTT::internal::ValueDataSource< std::vector<KDL::Vector> >;
00433 extern template class RTT::internal::ConstantDataSource< std::vector<KDL::Vector> >;
00434 extern template class RTT::internal::ReferenceDataSource< std::vector<KDL::Vector> >;
00435 #endif
00436 #ifdef ORO_INPUT_PORT_HPP
00437 extern template class RTT::OutputPort< std::vector<KDL::Vector> >;
00438 #endif
00439 #ifdef ORO_OUTPUT_PORT_HPP
00440 extern template class RTT::InputPort< std::vector<KDL::Vector> >;
00441 #endif
00442 #ifdef ORO_PROPERTY_HPP
00443 extern template class RTT::Property< std::vector<KDL::Vector> >;
00444 #endif
00445 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00446 extern template class RTT::Attribute< std::vector<KDL::Vector> >;
00447 #endif
00448
00449
00450 namespace boost
00451 {
00452 namespace serialization
00453 {
00454 template<typename Archive>
00455 void serialize(Archive& a, std::vector<KDL::Vector>& b, unsigned int version)
00456 {
00457 using boost::serialization::make_nvp;
00458 for(unsigned int i=0; i < b.size(); i++){
00459 boost::serialization::serialize(a, b[i], version);
00460
00461 }
00462 }
00463 }
00464 }
00465 #ifdef CORELIB_DATASOURCE_HPP
00466 extern template class RTT::internal::DataSource< std::vector<KDL::Frame> >;
00467 extern template class RTT::internal::AssignableDataSource< std::vector<KDL::Frame> >;
00468 #endif
00469 #ifdef ORO_CORELIB_DATASOURCES_HPP
00470 extern template class RTT::internal::ValueDataSource< std::vector<KDL::Frame> >;
00471 extern template class RTT::internal::ConstantDataSource< std::vector<KDL::Frame> >;
00472 extern template class RTT::internal::ReferenceDataSource< std::vector<KDL::Frame> >;
00473 #endif
00474 #ifdef ORO_INPUT_PORT_HPP
00475 extern template class RTT::OutputPort< std::vector<KDL::Frame> >;
00476 #endif
00477 #ifdef ORO_OUTPUT_PORT_HPP
00478 extern template class RTT::InputPort< std::vector<KDL::Frame> >;
00479 #endif
00480 #ifdef ORO_PROPERTY_HPP
00481 extern template class RTT::Property< std::vector<KDL::Frame> >;
00482 #endif
00483 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00484 extern template class RTT::Attribute< std::vector<KDL::Frame> >;
00485 #endif
00486
00487
00488 namespace boost
00489 {
00490 namespace serialization
00491 {
00492 template<typename Archive>
00493 void serialize(Archive& a, std::vector<KDL::Frame>& b, unsigned int version)
00494 {
00495 using boost::serialization::make_nvp;
00496 for(unsigned int i=0; i < b.size(); i++){
00497 boost::serialization::serialize(a, b[i], version);
00498
00499 }
00500 }
00501 }
00502 }
00503 #ifdef CORELIB_DATASOURCE_HPP
00504 extern template class RTT::internal::DataSource< std::vector<KDL::Twist> >;
00505 extern template class RTT::internal::AssignableDataSource< std::vector<KDL::Twist> >;
00506 #endif
00507 #ifdef ORO_CORELIB_DATASOURCES_HPP
00508 extern template class RTT::internal::ValueDataSource< std::vector<KDL::Twist> >;
00509 extern template class RTT::internal::ConstantDataSource< std::vector<KDL::Twist> >;
00510 extern template class RTT::internal::ReferenceDataSource< std::vector<KDL::Twist> >;
00511 #endif
00512 #ifdef ORO_INPUT_PORT_HPP
00513 extern template class RTT::OutputPort< std::vector<KDL::Twist> >;
00514 #endif
00515 #ifdef ORO_OUTPUT_PORT_HPP
00516 extern template class RTT::InputPort< std::vector<KDL::Twist> >;
00517 #endif
00518 #ifdef ORO_PROPERTY_HPP
00519 extern template class RTT::Property< std::vector<KDL::Twist> >;
00520 #endif
00521 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00522 extern template class RTT::Attribute< std::vector<KDL::Twist> >;
00523 #endif
00524
00525
00526 namespace boost
00527 {
00528 namespace serialization
00529 {
00530 template<typename Archive>
00531 void serialize(Archive& a, std::vector<KDL::Twist>& b, unsigned int version)
00532 {
00533 using boost::serialization::make_nvp;
00534 for(unsigned int i=0; i < b.size(); i++){
00535 boost::serialization::serialize(a, b[i], version);
00536
00537 }
00538 }
00539 }
00540 }
00541 #ifdef CORELIB_DATASOURCE_HPP
00542 extern template class RTT::internal::DataSource< std::vector<KDL::Wrench> >;
00543 extern template class RTT::internal::AssignableDataSource< std::vector<KDL::Wrench> >;
00544 #endif
00545 #ifdef ORO_CORELIB_DATASOURCES_HPP
00546 extern template class RTT::internal::ValueDataSource< std::vector<KDL::Wrench> >;
00547 extern template class RTT::internal::ConstantDataSource< std::vector<KDL::Wrench> >;
00548 extern template class RTT::internal::ReferenceDataSource< std::vector<KDL::Wrench> >;
00549 #endif
00550 #ifdef ORO_INPUT_PORT_HPP
00551 extern template class RTT::OutputPort< std::vector<KDL::Wrench> >;
00552 #endif
00553 #ifdef ORO_OUTPUT_PORT_HPP
00554 extern template class RTT::InputPort< std::vector<KDL::Wrench> >;
00555 #endif
00556 #ifdef ORO_PROPERTY_HPP
00557 extern template class RTT::Property< std::vector<KDL::Wrench> >;
00558 #endif
00559 #ifdef ORO_CORELIB_ATTRIBUTE_HPP
00560 extern template class RTT::Attribute< std::vector<KDL::Wrench> >;
00561 #endif
00562
00563
00564 namespace boost
00565 {
00566 namespace serialization
00567 {
00568 template<typename Archive>
00569 void serialize(Archive& a, std::vector<KDL::Wrench>& b, unsigned int version)
00570 {
00571 using boost::serialization::make_nvp;
00572 for(unsigned int i=0; i < b.size(); i++){
00573 boost::serialization::serialize(a, b[i], version);
00574
00575 }
00576 }
00577 }
00578 }
00579 #endif
00580