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 #ifndef _ROBOT_TOOLDESCRIPTION_
00026 #define _ROBOT_TOOLDESCRIPTION_
00027
00028 #include <robot/robot>
00029
00030 #include <base/Named>
00031 #include <base/ReferencedObject>
00032 #include <base/Externalizable>
00033 #include <robot/KinematicChain>
00034
00035
00036 namespace robot {
00037
00038
00039
00040
00041 class ToolDescription : public base::Named, public base::Externalizable, public base::ReferencedObject
00042 {
00043 public:
00044 ToolDescription() {}
00045 ToolDescription(const ToolDescription& t)
00046 : Named(t), kinematicChain(t.kinematicChain) {}
00047
00048 virtual String className() const { return String("ToolDescription"); }
00049
00050 ToolDescription& operator=(const ToolDescription& t)
00051 { setName( t.getName() ); kinematicChain=t.kinematicChain; return *this; }
00052
00053
00054
00055
00056
00057
00058
00059
00060 virtual KinematicChain getKinematicChain(Int p=0) const
00061 { return kinematicChain; }
00062
00063
00064 bool operator==(const ToolDescription& td) const
00065 {
00066 if (&td == this) return true;
00067 return (kinematicChain==td.kinematicChain);
00068 }
00069
00070 bool operator!=(const ToolDescription& td) const { return !(*this == td); }
00071
00072 bool equals(ref<const ToolDescription> td) const { return (*this == *td); }
00073
00074
00075
00076 virtual bool formatSupported(const String format, Real version = 1.0, ExternalizationType type = IO) const
00077 { return ( (format=="xml") && (version==1.0) ); }
00078 virtual void externalize(base::Externalizer& e, String format = "", Real version = 1.0);
00079 void externalize(base::Externalizer& e, String format = "", Real version = 1.0) const
00080 { Externalizable::externalize(e,format,version); }
00081
00082 protected:
00083 ToolDescription(const String& name) : Named(name) {}
00084
00085 virtual void setKinematicChain(const KinematicChain& kc) { kinematicChain=kc; }
00086
00087 private:
00088 KinematicChain kinematicChain;
00089
00090 friend class Robot;
00091 };
00092
00093
00094 }
00095
00096 #endif