本文整理汇总了C++中Obj::loadMolecule方法的典型用法代码示例。如果您正苦于以下问题:C++ Obj::loadMolecule方法的具体用法?C++ Obj::loadMolecule怎么用?C++ Obj::loadMolecule使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Obj
的用法示例。
在下文中一共展示了Obj::loadMolecule方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _loadMolecule
void CrfLoader::_loadMolecule (Molecule &molecule)
{
Obj<CmfLoader> loader;
int i;
if (_decoder.get() != 0)
loader.create(_decoder.ref());
else
loader.create(_scanner);
QS_DEF(Array<int>, atom_flags);
QS_DEF(Array<int>, bond_flags);
loader->atom_flags = &atom_flags;
loader->bond_flags = &bond_flags;
loader->version = version;
loader->loadMolecule(molecule);
bool has_mapping = loader->has_mapping;
if (_atom_stereo_flags != 0)
{
_atom_stereo_flags->clear_resize(molecule.vertexCount());
_atom_stereo_flags->zerofill();
for (i = 0; i < molecule.vertexCount(); i++)
{
int idx = i;
if (has_mapping)
idx = loader->inv_atom_mapping_to_restore[i];
if (atom_flags[i] & 1)
_atom_stereo_flags->at(idx) |= STEREO_RETAINS;
if (atom_flags[i] & 2)
_atom_stereo_flags->at(idx) |= STEREO_INVERTS;
}
}
if (_bond_rc_flags != 0)
{
_bond_rc_flags->clear_resize(molecule.edgeCount());
_bond_rc_flags->zerofill();
for (i = 0; i < molecule.edgeCount(); i++)
{
int idx = i;
if (has_mapping)
idx = loader->inv_bond_mapping_to_restore[i];
if (bond_flags[i] & 1)
_bond_rc_flags->at(idx) |= RC_UNCHANGED;
if (bond_flags[i] & 2)
_bond_rc_flags->at(idx) |= RC_MADE_OR_BROKEN;
if (bond_flags[i] & 4)
_bond_rc_flags->at(idx) |= RC_ORDER_CHANGED;
}
}
if (_aam != 0)
{
_aam->clear_resize(molecule.vertexCount());
_aam->zerofill();
for (i = 0; i < molecule.vertexCount(); i++)
{
int value;
if (_decoder.get() != 0)
value = _decoder->get();
else
value = _scanner.readByte();
int idx = i;
if (has_mapping)
idx = loader->inv_atom_mapping_to_restore[i];
_aam->at(idx) = value - 1;
}
}
if (xyz_scanner != 0)
loader->loadXyz(*xyz_scanner);
}