00001 #ifndef CCTBX_ELTBX_ICSD_RADII_H
00002 #define CCTBX_ELTBX_ICSD_RADII_H
00003
00004 #include <string>
00005
00006 namespace cctbx { namespace eltbx { namespace icsd_radii {
00007
00008 namespace detail {
00009
00010 struct raw_record
00011 {
00012 const char* label;
00013 float radius;
00014 };
00015
00016 }
00017
00019
00045 class table
00046 {
00047 public:
00049 table() : record_(0) {}
00050
00052
00061 explicit
00062 table(std::string const& label, bool exact=false);
00063
00065
00069 bool
00070 is_valid() const { return record_->label != 0; }
00071
00073 const char*
00074 label() const { return record_->label; }
00075
00077 float
00078 radius() const { return record_->radius; }
00079
00080 private:
00081 const detail::raw_record* record_;
00082 friend class table_iterator;
00083 };
00084
00087 class table_iterator
00088 {
00089 public:
00091 table_iterator();
00092
00094
00096 table
00097 next();
00098
00099 private:
00100 table current_;
00101 };
00102
00103 }}}
00104
00105 #endif // CCTBX_ELTBX_ICSD_RADII_H