core/indigo-core/molecule/monomers_defs.h (55 lines of code) (raw):

#ifndef __monomers_defs__ #define __monomers_defs__ #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable : 4251) #endif #include <map> #include <memory> #include <string> #include <unordered_map> namespace indigo { // composite unordered_map key for pair const auto kCompositeKeyHashMagicNumber = 0x9e3779b9; template <class T> inline void hash_combine(size_t& seed, T const& v) { seed ^= std::hash<T>()(v) + kCompositeKeyHashMagicNumber + (seed << 6) + (seed >> 2); } // universal fuctor for pair hash calculation struct pair_hash { template <class T1, class T2> size_t operator()(const std::pair<T1, T2>& p) const { size_t seed = 0; hash_combine(seed, p.first); hash_combine(seed, p.second); return seed; } }; enum class MonomerClass { AminoAcid, Sugar, Phosphate, Base, Terminator, Linker, Unknown, CHEM, DNA, RNA }; enum class NucleotideType { RNA, DNA }; const std::string HelmHydrogenPair{"pair"}; const std::string KetConnectionSingle{"single"}; const std::string KetConnectionHydro{"hydrogen"}; } #ifdef _MSC_VER #pragma warning(pop) #endif #endif