// SPDX-FileCopyrightText: 2026 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include "MonomerLibrary.h" #include #include "gemmi/read_cif.hpp" // read_cif_from_memory // Generated by CMakeLists.txt from monomers/*.cif (MonomerLibraryData.cpp in the build tree). extern const EmbeddedMonomerFile embedded_monomer_files[]; extern const size_t embedded_monomer_file_count; namespace { gemmi::MonLib ReadEmbeddedMonomerLibrary() { gemmi::MonLib monlib; for (size_t i = 0; i < embedded_monomer_file_count; i++) { const EmbeddedMonomerFile &f = embedded_monomer_files[i]; std::string text; for (size_t k = 0; k < f.n_pieces; k++) text += f.pieces[k]; const gemmi::cif::Document doc = gemmi::read_cif_from_memory(text.data(), text.size(), f.name); if (std::strcmp(f.name, "ener_lib.cif") == 0) monlib.ener_lib.read(doc); else monlib.read_monomer_doc(doc); } return monlib; } } // namespace const gemmi::MonLib &EmbeddedMonomerLibrary() { static const gemmi::MonLib monlib = ReadEmbeddedMonomerLibrary(); return monlib; } bool InEmbeddedMonomerLibrary(const std::string &code) { return EmbeddedMonomerLibrary().monomers.count(code) > 0; }