00001 #ifndef CCTBX_ELTBX_COVALENT_RADII_H
00002 #define CCTBX_ELTBX_COVALENT_RADII_H
00003
00004 #include <string>
00005
00006 namespace cctbx { namespace eltbx { namespace covalent_radii {
00007
00008 namespace detail {
00009
00010 struct raw_record
00011 {
00012 const char* label;
00013 float radius;
00014 float esd;
00015 };
00016
00017 }
00018
00020
00026 class table
00027 {
00028 public:
00030 table() : record_(0) {}
00031
00033
00038 explicit
00039 table(std::string const& label, bool exact=false);
00040
00042
00046 bool
00047 is_valid() const { return record_->label != 0; }
00048
00050 const char*
00051 label() const { return record_->label; }
00052
00054 float
00055 radius() const { return record_->radius; }
00056
00058 float
00059 esd() const { return record_->esd; }
00060
00061 private:
00062 const detail::raw_record* record_;
00063 friend class table_iterator;
00064 };
00065
00068 class table_iterator
00069 {
00070 public:
00072 table_iterator();
00073
00075
00077 table
00078 next();
00079
00080 private:
00081 table current_;
00082 };
00083
00084 }}}
00085
00086 #endif // CCTBX_ELTBX_COVALENT_RADII_H