File database.hpp

This file contains the interface for the application wide database, which, among other things, defines physical constants and atom name mapping.

Author

Benjamin Lindner ben@benlabs.net

Version

See VERSION in CMakeLists.txt

Copyright

GNU General Public License

class DatabaseExlusionParameters
#include <database.hpp>

Implements a mapping between integer based atom IDs and exclusion factors. Exclusion factors are a means to scale atomic volumes.

Public Functions

inline DatabaseExlusionParameters()
void reg(size_t ID, std::vector<double> constants, size_t function_type)
double get(size_t ID, double effvolume, double q)

Private Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void add_quicklookup(size_t ID, double value)
void clear_quicklookup()

Private Members

std::map<size_t, size_t> m_functiontypes
std::map<size_t, std::vector<double>> m_constants
std::map<size_t, double> m_quicklookup
size_t quicklookup_counter

Friends

friend class Database
friend class boost::serialization::access
class DatabaseVolumesParameters
#include <database.hpp>

Implements a mapping between integer based atom IDs and their associated volume.

Public Functions

inline DatabaseVolumesParameters()
void reg(size_t ID, std::vector<double> constants, size_t function_type)
double get(size_t ID)

Private Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void add_quicklookup(size_t ID, double value)
void clear_quicklookup()

Private Members

std::map<size_t, size_t> m_functiontypes
std::map<size_t, std::vector<double>> m_constants
std::map<size_t, double> m_quicklookup
size_t quicklookup_counter

Friends

friend class Database
friend class boost::serialization::access
class DatabaseSFactorsParameters
#include <database.hpp>

Implements a mapping between integer based atom IDs and their potentially q dependent scattering factors.

Public Functions

inline DatabaseSFactorsParameters()
void reg(size_t ID, std::vector<double> constants, size_t function_type)
double get(size_t ID, double q)

Private Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void add_quicklookup(size_t ID, double q, double value)
void clear_quicklookup()

Private Members

std::map<size_t, size_t> m_functiontypes
std::map<size_t, std::vector<double>> m_constants
std::map<double, std::map<size_t, double>> m_quicklookup
size_t quicklookup_counter

Friends

friend class Database
friend class boost::serialization::access
class DatabaseMassesParameters
#include <database.hpp>

Implements a mapping between integer based atom IDs and their masses.

Public Functions

void reg(size_t ID, double)
double get(size_t ID)

Private Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)

Private Members

std::map<size_t, double> m_masses

Friends

friend class Database
friend class boost::serialization::access
class DatabaseAtomIDsParameters
#include <database.hpp>

Implements a mapping between integer based atom IDs and string labels. For efficency, internally all physical constants are associated with integer based atom IDs.

Public Functions

inline DatabaseAtomIDsParameters()
void reg(std::string label)
size_t get(std::string label)
std::string rget(size_t ID)
inline size_t size()

Private Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)

Private Members

std::map<std::string, size_t> m_IDs
std::map<size_t, std::string> m_rIDs
size_t nextID

Friends

friend class Database
friend class boost::serialization::access
class DatabaseNamesPDBParameters
#include <database.hpp>

Support for PDB style atom names

Public Functions

inline DatabaseNamesPDBParameters()
void reg(std::string label, std::string regexp)
std::string get(std::string testlabel)

Private Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void add_quicklookup(std::string testlabel, std::string label)
void clear_quicklookup()

Private Members

std::map<std::string, std::string> m_label2regexp
std::map<std::string, std::string> m_quicklookup
size_t quicklookup_counter

Friends

friend class Database
friend class boost::serialization::access
class DatabaseNamesParameters
#include <database.hpp>

Implements the name mapping facility of the database

Public Members

DatabaseNamesPDBParameters pdb

Private Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)

Friends

friend class Database
friend class boost::serialization::access
class Database
#include <database.hpp>

This singleton class is the root of a strong class hierarchy which implements a software wide database for physical constants and atom labeling. It also performs required computation, e.g. when the scattering factor for an atom is q vector length dependent.

Public Functions

void init()
inline void get_rawconfig(std::vector<char> &rc)
inline void get_config(std::vector<char> &c)
~Database() = default
void write(std::string filename, std::string format = "")

Public Static Functions

static inline Database *Inst()

Private Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
inline Database()
Database(const Database&)
Database &operator=(const Database&)
void read_xml(std::string filename)
std::string guessformat(std::string filename)
bool check()

Private Members

std::vector<char> rawconfig
std::vector<char> config

Friends

friend class boost::serialization::access