00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_PROPERTY_ID_HH
00020 #define OST_PROPERTY_ID_HH
00021
00022
00023
00024
00025 #include <ost/message.hh>
00026
00027 #include <ost/mol/module_config.hh>
00028
00029 namespace ost { namespace mol {
00030
00031 struct DLLEXPORT_OST_MOL Prop {
00032 public:
00041 typedef enum {
00042 RNAME, ANAME, CNAME, ELE, RNUM, ANUM, AX, AY, AZ, OCC, AINDEX, RTYPE, ISHETATM,
00043 RBFAC, ABFAC, PEPTIDE, ACHARGE, RINDEX, PROTEIN, LIGAND, WATER, WITHIN,
00044 UNDEF, CUSTOM
00045 } ID;
00046
00047 typedef enum {
00048 ATOM=0, RESIDUE=1, CHAIN=2, UNSPECIFIED=3
00049 } Level;
00050
00051 typedef enum {
00052 STRING, INT, FLOAT, VEC_DIST
00053 } Type;
00054 public:
00055 ID id;
00056 Type type;
00057 Level level;
00058
00059 Prop(ID i, Type t, Level l):
00060 id(i), type(t), level(l)
00061 { }
00062
00063 Prop():
00064 id(UNDEF), type(INT), level(ATOM)
00065 { }
00066
00067 bool operator==(const Prop& rhs) const
00068 {
00069 return id==rhs.id && type==rhs.type && level==rhs.level;
00070 }
00071
00072 bool operator!=(const Prop& rhs) const
00073 {
00074 return !this->operator==(rhs);
00075 }
00076
00077 String GetName() const;
00078 String GetTypeName() const;
00079 };
00080
00083 Prop::ID DLLEXPORT_OST_MOL PropertyIDFromString(const String& prop);
00084
00087 Prop DLLEXPORT_OST_MOL PropertyFromString(const String& prop);
00088
00089
00090 struct DLLEXPORT PropertyError: public ost::Error
00091 {
00092 PropertyError(ost::mol::Prop::ID prop):
00093 ost::Error("invalid property"),
00094 prop_(prop)
00095 {}
00096 virtual ~PropertyError() throw() {}
00097
00098 ost::mol::Prop::ID Prop() const
00099 {
00100 return prop_;
00101 }
00102 private:
00103 ost::mol::Prop::ID prop_;
00104 };
00105
00106 }}
00107
00108
00109 #endif