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
00032
00033
00034
00035
00036 #ifndef _BIOFUNCTION_H
00037 #define _BIOFUNCTION_H
00038
00039 #include <string>
00040 using namespace std;
00041
00042
00043
00044
00045 typedef string BioFunctionCategoryType;
00046
00056 class BioFunction
00057 {
00058 protected:
00059 string _category;
00060 string _id;
00061 string _name;
00062 public:
00063 BioFunction()
00064 : _category(), _id(), _name()
00065 {}
00066
00067 BioFunction(string cat, string id, string name = "")
00068 : _category(cat), _id(id), _name(name)
00069 {}
00070 BioFunction(const BioFunction& other)
00071 : _category(other._category), _id(other._id), _name(other._name)
00072 {}
00073
00074 virtual ~BioFunction()
00075 {}
00076
00077 virtual string getCategory() const
00078 {
00079 return(_category);
00080 }
00081 virtual string getId() const
00082 {
00083 return(_id);
00084 }
00085
00086 virtual string getName() const
00087 {
00088 return(_name);
00089 }
00090
00091 bool operator==(const BioFunction &other) const
00092 {
00093 return((_category == other._category) && (_id == other._id));
00094 }
00095
00096 bool operator!=(const BioFunction &other) const
00097 {
00098 return(!(*this == other));
00099 }
00111 bool operator<(const BioFunction &rhs) const
00112 {
00113 if (getCategory() == rhs.getCategory())
00114 return(getId() < rhs.getId());
00115 return((getCategory() < rhs.getCategory()));
00116 }
00117
00118 };
00119
00120 inline ostream &operator<<(ostream &ostr, const BioFunction &function)
00121 {
00122 ostr << function.getId();
00123 if ("" != function.getName())
00124 ostr << ": " << function.getName();
00125 ostr << " (" << function.getCategory() << ") ";
00126 return(ostr);
00127 }
00128
00129
00130
00131 #endif // _BIOFUNCTION_H